On Wed May 20 15:20:10 2026 +0100, Luciano Ciccariello wrote:
> Add support for the StarTech SVID2USB232 USB analog video grabber
> (USB ID eb1a:8286). The device uses the Empia EM28281 bridge, a
> member of the em2828X family with an integrated video decoder.
> 
> Reuses the EM28XX_BUILTIN decoder path introduced in commit
> 8e53399c63c3 ("media: em28xx: Add support for Empia em2828X bridge").
> The standard PAL/NTSC switching and composite/S-Video input
> switching in em2828X_decoder_set_std() handle this board without
> board-specific code.
> 
> Inputs:
>  - Composite video
>  - S-Video
>  - Analog stereo audio (line in)
> 
> Tested on hardware with a PAL signal on both S-Video and composite
> inputs (ffplay -f v4l2 /dev/video0).
> 
> This supersedes an earlier RFC posting from before EM28XX_BUILTIN was
> available, which proposed a custom EM28XX_I2C_ALGO_EM28281_INTEGRATED
> TVP5150-bridge algorithm. That approach is no longer necessary now that
> the em2828X bridge support landed.
> 
> Link: 
> https://lore.kernel.org/all/[email protected]/
> Signed-off-by: Luciano Ciccariello <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 .../admin-guide/media/em28xx-cardlist.rst          |  4 +++
 drivers/media/usb/em28xx/em28xx-cards.c            | 29 ++++++++++++++++++++++
 drivers/media/usb/em28xx/em28xx-reg.h              |  1 +
 drivers/media/usb/em28xx/em28xx.h                  |  1 +
 4 files changed, 35 insertions(+)

---

diff --git a/Documentation/admin-guide/media/em28xx-cardlist.rst 
b/Documentation/admin-guide/media/em28xx-cardlist.rst
index 7dac07986d91..741aa7f7c882 100644
--- a/Documentation/admin-guide/media/em28xx-cardlist.rst
+++ b/Documentation/admin-guide/media/em28xx-cardlist.rst
@@ -446,3 +446,7 @@ EM28xx cards list
      - MyGica UTV3 Analog USB2.0 TV Box
      - em2860
      - eb1a:2860
+   * - 113
+     - StarTech SVID2USB232
+     - em28281
+     - eb1a:8286
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c 
b/drivers/media/usb/em28xx/em28xx-cards.c
index fbfb74eab475..e3c0f5e491e3 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -2677,6 +2677,28 @@ const struct em28xx_board em28xx_boards[] = {
                        .gpio     = mygica_utv3_tuner_audio_gpio,
                } },
        },
+       /* eb1a:8286 StarTech SVID2USB232
+        * Empia EM28281 with integrated TVP5150-compatible video decoder.
+        * Composite and S-Video inputs, stereo line-in audio.
+        */
+       [EM28281_BOARD_STARTECH_SVID2USB232] = {
+               .name         = "StarTech SVID2USB232",
+               .vchannels    = 2,
+               .tuner_type   = TUNER_ABSENT,
+               .has_dvb      = 0,
+               .decoder      = EM28XX_BUILTIN,
+               .i2c_speed    = EM28XX_I2C_CLK_WAIT_ENABLE | 
EM28XX_I2C_FREQ_400_KHZ,
+               .xclk         = EM28XX_XCLK_FREQUENCY_12MHZ,
+               .input           = { {
+                       .type     = EM28XX_VMUX_COMPOSITE,
+                       .vmux     = EM2828X_COMPOSITE,
+                       .amux     = EM28XX_AMUX_LINE_IN,
+               }, {
+                       .type     = EM28XX_VMUX_SVIDEO,
+                       .vmux     = EM2828X_SVIDEO,
+                       .amux     = EM28XX_AMUX_LINE_IN,
+               } },
+       },
        [EM2828X_BOARD_HAUPPAUGE_USB_LIVE2] = {
                .name         = "Hauppauge USB Live2",
                .vchannels    = 2,
@@ -2946,6 +2968,8 @@ struct usb_device_id em28xx_id_table[] = {
                        .driver_info = EM2874_BOARD_HAUPPAUGE_USB_QUADHD },
        { USB_DEVICE(0x2040, 0xc220),
                        .driver_info = EM2828X_BOARD_HAUPPAUGE_USB_LIVE2 },
+       { USB_DEVICE(0xeb1a, 0x8286),
+                       .driver_info = EM28281_BOARD_STARTECH_SVID2USB232 },
        { USB_DEVICE(0x2040, 0x0360),
                        .driver_info = EM2828X_BOARD_HAUPPAUGE_935_V2 },
        { USB_DEVICE(0x2040, 0x8360),
@@ -3859,6 +3883,11 @@ static int em28xx_init_dev(struct em28xx *dev, struct 
usb_device *udev,
                        dev->wait_after_write = 0;
                        dev->eeprom_addrwidth_16bit = 1;
                        break;
+               case CHIP_ID_EM28281:
+                       chip_name = "em28281";
+                       dev->wait_after_write = 0;
+                       dev->eeprom_addrwidth_16bit = 1;
+                       break;
                case CHIP_ID_EM2883:
                        chip_name = "em2882/3";
                        dev->wait_after_write = 0;
diff --git a/drivers/media/usb/em28xx/em28xx-reg.h 
b/drivers/media/usb/em28xx/em28xx-reg.h
index 68a0fcc2fa72..8931733a8e24 100644
--- a/drivers/media/usb/em28xx/em28xx-reg.h
+++ b/drivers/media/usb/em28xx/em28xx-reg.h
@@ -283,6 +283,7 @@ enum em28xx_chip_id {
        CHIP_ID_EM2884 = 68,
        CHIP_ID_EM28174 = 113,
        CHIP_ID_EM28178 = 114,
+       CHIP_ID_EM28281 = 145,
        CHIP_ID_EM2828X = 148,
 };
 
diff --git a/drivers/media/usb/em28xx/em28xx.h 
b/drivers/media/usb/em28xx/em28xx.h
index 21c912403efc..2b9b95b53307 100644
--- a/drivers/media/usb/em28xx/em28xx.h
+++ b/drivers/media/usb/em28xx/em28xx.h
@@ -149,6 +149,7 @@
 #define EM2828X_BOARD_HAUPPAUGE_955_V2            110
 #define EM2828X_BOARD_HAUPPAUGE_975_V2            111
 #define EM28178_BOARD_PCTV_461E_V3                112
+#define EM28281_BOARD_STARTECH_SVID2USB232        113
 
 /* Limits minimum and default number of buffers */
 #define EM28XX_MIN_BUF 4
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to