summaryrefslogtreecommitdiff
path: root/drivers/media/usb
diff options
context:
space:
mode:
authorJoseph Breihan <linux@josephbreihan.com>2026-07-05 01:10:43 -0400
committerHans Verkuil <hverkuil+cisco@kernel.org>2026-07-15 17:12:55 +0200
commit4e1d07cfc12fe5e2a15199b53fb8bdd077f1afbf (patch)
tree24a7a51aaea3690ba2f61be0dbde2cc6720d3818 /drivers/media/usb
parent0a617f11c866c31dce12204f1da277c1335001c0 (diff)
media: au0828: add support for Monoprice 106456 USB ATSC/QAM tuner
The Monoprice 106456 (board rev TV22AD-A, also sold as the AnyTV AUTV002) is a USB ATSC/QAM tuner that enumerates as 05e1:0400 and reports itself as a "Syntek Semiconductor USB 2.0 Video Capture Controller". The hardware is an Auvitek AU0828A bridge with an AU8522 demodulator and an NXP TDA18271HDC2 tuner at I2C address 0x60 -- the same demod/tuner combination as the existing Hauppauge Woodbury board. Adds board profile and the USB ID so the device binds. The digital frontend is electrically identical to the Woodbury, so share that board's au8522/tda18271 configuration and attach path rather than duplicating it. Tested with over-the-air 8VSB ATSC: it locks and streams a live 720p transport stream. Some 05e1:0400 units reportedly ship a Microtune MT2131 tuner with an AU8502 demodulator instead. This patch does not handle that variant, but it can't regress it either: 05e1:0400 matches no driver today, and on the MT2131 units tda18271_attach() just fails, so no frontend is registered. Signed-off-by: Joseph Breihan <linux@josephbreihan.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Diffstat (limited to 'drivers/media/usb')
-rw-r--r--drivers/media/usb/au0828/au0828-cards.c14
-rw-r--r--drivers/media/usb/au0828/au0828-cards.h1
-rw-r--r--drivers/media/usb/au0828/au0828-dvb.c1
3 files changed, 16 insertions, 0 deletions
diff --git a/drivers/media/usb/au0828/au0828-cards.c b/drivers/media/usb/au0828/au0828-cards.c
index 9929ce5dcdcd..8ab100db01ab 100644
--- a/drivers/media/usb/au0828/au0828-cards.c
+++ b/drivers/media/usb/au0828/au0828-cards.c
@@ -124,6 +124,17 @@ struct au0828_board au0828_boards[] = {
},
},
},
+ [AU0828_BOARD_MONOPRICE_106456] = {
+ /*
+ * Monoprice 106456 USB ATSC/QAM tuner (board rev TV22AD-A),
+ * a.k.a. AnyTV AUTV002, USB ID 05e1:0400. Same AU8522 demod +
+ * NXP TDA18271HDC2 tuner @ 0x60 as the Hauppauge Woodbury.
+ */
+ .name = "Monoprice 106456 USB ATSC/QAM (TV22AD-A)",
+ .tuner_type = TUNER_NXP_TDA18271,
+ .tuner_addr = 0x60,
+ .i2c_clk_divider = AU0828_I2C_CLK_250KHZ,
+ },
[AU0828_BOARD_HAUPPAUGE_HVR1265] = {
.name = "Hauppauge HVR1265",
.tuner_type = TUNER_XC5000,
@@ -294,6 +305,7 @@ void au0828_gpio_setup(struct au0828_dev *dev)
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
case AU0828_BOARD_HAUPPAUGE_HVR1265:
case AU0828_BOARD_HAUPPAUGE_IMPACTVCBE:
+ case AU0828_BOARD_MONOPRICE_106456:
/* GPIO's
* 4 - CS5340
* 5 - AU8522 Demodulator
@@ -378,6 +390,8 @@ struct usb_device_id au0828_usb_id_table[] = {
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL },
{ USB_DEVICE(0x05e1, 0x0480),
.driver_info = AU0828_BOARD_HAUPPAUGE_WOODBURY },
+ { USB_DEVICE(0x05e1, 0x0400),
+ .driver_info = AU0828_BOARD_MONOPRICE_106456 },
{ USB_DEVICE(0x2040, 0x8200),
.driver_info = AU0828_BOARD_HAUPPAUGE_WOODBURY },
{ USB_DEVICE(0x2040, 0x7260),
diff --git a/drivers/media/usb/au0828/au0828-cards.h b/drivers/media/usb/au0828/au0828-cards.h
index a438aeb334a0..a4a283731f7d 100644
--- a/drivers/media/usb/au0828/au0828-cards.h
+++ b/drivers/media/usb/au0828/au0828-cards.h
@@ -13,3 +13,4 @@
#define AU0828_BOARD_HAUPPAUGE_WOODBURY 5
#define AU0828_BOARD_HAUPPAUGE_IMPACTVCBE 6
#define AU0828_BOARD_HAUPPAUGE_HVR1265 7
+#define AU0828_BOARD_MONOPRICE_106456 8
diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
index 31123e6f9fc3..9c95b7ceaecd 100644
--- a/drivers/media/usb/au0828/au0828-dvb.c
+++ b/drivers/media/usb/au0828/au0828-dvb.c
@@ -600,6 +600,7 @@ int au0828_dvb_register(struct au0828_dev *dev)
&mxl5007t_hvr950q_config);
break;
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
+ case AU0828_BOARD_MONOPRICE_106456:
dvb->frontend = dvb_attach(au8522_attach,
&hauppauge_woodbury_config,
&dev->i2c_adap);