aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAapo Tahkola <aet@rasterburn.org>2007-03-22 16:37:58 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-05-09 09:12:58 -0400
commitf8e0bd5db4cc636fec35264c2396adb1b633ee05 (patch)
treec287f2a594631766ffe170a068c464e9273ea0a0 /drivers
parentce9c27503491ea342b18b892f973acf5b3afc0f1 (diff)
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')
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-ids.h3
-rw-r--r--drivers/media/dvb/dvb-usb/m920x.c49
2 files changed, 52 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
index dffce1d4ecd3..403081689de1 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-ids.h
@@ -19,6 +19,7 @@
19#define USB_VID_COMPRO_UNK 0x145f 19#define USB_VID_COMPRO_UNK 0x145f
20#define USB_VID_CYPRESS 0x04b4 20#define USB_VID_CYPRESS 0x04b4
21#define USB_VID_DIBCOM 0x10b8 21#define USB_VID_DIBCOM 0x10b8
22#define USB_VID_DPOSH 0x1498
22#define USB_VID_DVICO 0x0fe9 23#define USB_VID_DVICO 0x0fe9
23#define USB_VID_EMPIA 0xeb1a 24#define USB_VID_EMPIA 0xeb1a
24#define USB_VID_GENPIX 0x09c0 25#define USB_VID_GENPIX 0x09c0
@@ -61,6 +62,8 @@
61#define USB_PID_DIBCOM_STK7700P 0x1e14 62#define USB_PID_DIBCOM_STK7700P 0x1e14
62#define USB_PID_DIBCOM_STK7700P_PC 0x1e78 63#define USB_PID_DIBCOM_STK7700P_PC 0x1e78
63#define USB_PID_DIBCOM_ANCHOR_2135_COLD 0x2131 64#define USB_PID_DIBCOM_ANCHOR_2135_COLD 0x2131
65#define USB_PID_DPOSH_M9206_COLD 0x9206
66#define USB_PID_DPOSH_M9206_WARM 0xa090
64#define USB_PID_UNIWILL_STK7700P 0x6003 67#define USB_PID_UNIWILL_STK7700P 0x6003
65#define USB_PID_GRANDTEC_DVBT_USB_COLD 0x0fa0 68#define USB_PID_GRANDTEC_DVBT_USB_COLD 0x0fa0
66#define USB_PID_GRANDTEC_DVBT_USB_WARM 0x0fa1 69#define USB_PID_GRANDTEC_DVBT_USB_WARM 0x0fa1
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 [] = {
587static struct dvb_usb_device_properties megasky_properties; 587static struct dvb_usb_device_properties megasky_properties;
588static struct dvb_usb_device_properties digivox_mini_ii_properties; 588static struct dvb_usb_device_properties digivox_mini_ii_properties;
589static struct dvb_usb_device_properties tvwalkertwin_properties; 589static struct dvb_usb_device_properties tvwalkertwin_properties;
590static struct dvb_usb_device_properties dposh_properties;
590static struct m9206_inits megasky_rc_init []; 591static struct m9206_inits megasky_rc_init [];
591static struct m9206_inits tvwalkertwin_rc_init []; 592static struct m9206_inits tvwalkertwin_rc_init [];
592 593
@@ -625,6 +626,11 @@ static int m920x_probe(struct usb_interface *intf,
625 goto found; 626 goto found;
626 } 627 }
627 628
629 if ((ret = dvb_usb_device_init(intf, &dposh_properties, THIS_MODULE, &d)) == 0) {
630 /* Remote controller not supported yet. */
631 goto found;
632 }
633
628 return ret; 634 return ret;
629 } else { 635 } else {
630 /* Another interface on a multi-tuner device */ 636 /* Another interface on a multi-tuner device */
@@ -663,6 +669,8 @@ static struct usb_device_id m920x_table [] = {
663 USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD) }, 669 USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD) },
664 { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, 670 { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC,
665 USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) }, 671 USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM) },
672 { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_COLD) },
673 { USB_DEVICE(USB_VID_DPOSH, USB_PID_DPOSH_M9206_WARM) },
666 { } /* Terminating entry */ 674 { } /* Terminating entry */
667}; 675};
668MODULE_DEVICE_TABLE (usb, m920x_table); 676MODULE_DEVICE_TABLE (usb, m920x_table);
@@ -835,6 +843,47 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = {
835 } 843 }
836}; 844};
837 845
846static struct dvb_usb_device_properties dposh_properties = {
847 .caps = DVB_USB_IS_AN_I2C_ADAPTER,
848
849 .usb_ctrl = DEVICE_SPECIFIC,
850 .firmware = "dvb-usb-dposh-01.fw",
851 .download_firmware = m9206_firmware_download,
852
853 /* Remote controller not supported yet. */
854
855 .size_of_priv = sizeof(struct m9206_state),
856
857 .identify_state = m920x_identify_state,
858 .num_adapters = 1,
859 .adapter = {{
860 /* Nardware pid filters don't work with this device/firmware. */
861
862 .frontend_attach = megasky_mt352_frontend_attach,
863 .tuner_attach = megasky_qt1010_tuner_attach,
864
865 .stream = {
866 .type = USB_BULK,
867 .count = 8,
868 .endpoint = 0x81,
869 .u = {
870 .bulk = {
871 .buffersize = 512,
872 }
873 }
874 },
875 }},
876 .i2c_algo = &m9206_i2c_algo,
877
878 .num_device_descs = 1,
879 .devices = {
880 { .name = "Dposh DVB-T USB2.0",
881 .cold_ids = { &m920x_table[4], NULL },
882 .warm_ids = { &m920x_table[5], NULL },
883 },
884 }
885};
886
838static struct usb_driver m920x_driver = { 887static struct usb_driver m920x_driver = {
839 .name = "dvb_usb_m920x", 888 .name = "dvb_usb_m920x",
840 .probe = m920x_probe, 889 .probe = m920x_probe,