summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLuciano Ciccariello <xeeynamo@hotmail.com>2026-05-20 15:20:10 +0100
committerHans Verkuil <hverkuil+cisco@kernel.org>2026-07-10 09:53:50 +0200
commitbedd5ea6b718741fff04ffbfe6ec803ca62841cd (patch)
treec9ee4bd17efce3620118109a0b4b931c7ceb870a /drivers
parent1924d0788caa6c66fd320dd4704fae99487fd2c7 (diff)
downloadlinux-next-bedd5ea6b718741fff04ffbfe6ec803ca62841cd.tar.gz
linux-next-bedd5ea6b718741fff04ffbfe6ec803ca62841cd.zip
media: em28xx: Add StarTech SVID2USB232
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/20260119185921.575666-1-xeeynamo@hotmail.com/ Signed-off-by: Luciano Ciccariello <xeeynamo@hotmail.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/usb/em28xx/em28xx-cards.c29
-rw-r--r--drivers/media/usb/em28xx/em28xx-reg.h1
-rw-r--r--drivers/media/usb/em28xx/em28xx.h1
3 files changed, 31 insertions, 0 deletions
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