summaryrefslogtreecommitdiff
path: root/drivers/media/dvb/dvb-usb/m920x.c
diff options
context:
space:
mode:
authorAapo Tahkola <aet@rasterburn.org>2007-03-22 23:37:58 +0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-05-09 17:12:58 +0400
commitf8e0bd5db4cc636fec35264c2396adb1b633ee05 (patch)
treec287f2a594631766ffe170a068c464e9273ea0a0 /drivers/media/dvb/dvb-usb/m920x.c
parentce9c27503491ea342b18b892f973acf5b3afc0f1 (diff)
downloadlinux-f8e0bd5db4cc636fec35264c2396adb1b633ee05.tar.xz
V4L/DVB (5607): M920x: Initial support for devices likely manufactured by Dposh
These devices are sold by various companies and chains not involved in hardware manufacturing business. This particular device owned by winisch (from irc) had a sticker with text "TCM 234292" on it. This device was never opened so it is possible that Dposh did not manufacture this stick. However, the bundled software and their product line points into that direction. Also thanks to Michael Krufky for spotting this hw filtering problem and thus avoiding hair loss. Hardware pid filters and the bundled remote controller are not currently supported on this device. Signed-off-by: Aapo Tahkola <aet@rasterburn.org> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/m920x.c')
-rw-r--r--drivers/media/dvb/dvb-usb/m920x.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/m920x.c b/drivers/media/dvb/dvb-usb/m920x.c
index 233e04d346a5..44e0d6e2c76b 100644
--- a/drivers/media/dvb/dvb-usb/m920x.c
+++ b/drivers/media/dvb/dvb-usb/m920x.c
@@ -587,6 +587,7 @@ static struct m9206_inits tvwalkertwin_rc_init [] = {
static struct dvb_usb_device_properties megasky_properties;
static struct dvb_usb_device_properties digivox_mini_ii_properties;
static struct dvb_usb_device_properties tvwalkertwin_properties;
+static struct dvb_usb_device_properties dposh_properties;
static struct m9206_inits megasky_rc_init [];
static struct m9206_inits tvwalkertwin_rc_init [];
@@ -625,6 +626,11 @@ static int m920x_probe(struct usb_interface *intf,
goto found;
}
+ if ((ret = dvb_usb_device_init(intf, &dposh_properties, THIS_MODULE, &d)) == 0) {
+ /* Remote controller not supported yet. */
+ goto found;
+ }
+
return ret;
} else {
/* Another interface on a multi-tuner device */
@@ -663,6 +669,8 @@ static struct usb_device_id m920x_table [] = {
USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD) },
{ USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC,
USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) },
+ { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_COLD) },
+ { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_WARM) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE (usb, m920x_table);
@@ -835,6 +843,47 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = {
}
};
+static struct dvb_usb_device_properties dposh_properties = {
+ .caps = DVB_USB_IS_AN_I2C_ADAPTER,
+
+ .usb_ctrl = DEVICE_SPECIFIC,
+ .firmware = "dvb-usb-dposh-01.fw",
+ .download_firmware = m9206_firmware_download,
+
+ /* Remote controller not supported yet. */
+
+ .size_of_priv = sizeof(struct m9206_state),
+
+ .identify_state = m920x_identify_state,
+ .num_adapters = 1,
+ .adapter = {{
+ /* Nardware pid filters don't work with this device/firmware. */
+
+ .frontend_attach = megasky_mt352_frontend_attach,
+ .tuner_attach = megasky_qt1010_tuner_attach,
+
+ .stream = {
+ .type = USB_BULK,
+ .count = 8,
+ .endpoint = 0x81,
+ .u = {
+ .bulk = {
+ .buffersize = 512,
+ }
+ }
+ },
+ }},
+ .i2c_algo = &m9206_i2c_algo,
+
+ .num_device_descs = 1,
+ .devices = {
+ { .name = "Dposh DVB-T USB2.0",
+ .cold_ids = { &m920x_table[4], NULL },
+ .warm_ids = { &m920x_table[5], NULL },
+ },
+ }
+};
+
static struct usb_driver m920x_driver = {
.name = "dvb_usb_m920x",
.probe = m920x_probe,