diff options
author | Aapo Tahkola <aet@rasterburn.org> | 2007-03-22 16:37:58 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-05-09 09:12:58 -0400 |
commit | f8e0bd5db4cc636fec35264c2396adb1b633ee05 (patch) | |
tree | c287f2a594631766ffe170a068c464e9273ea0a0 /drivers/media | |
parent | ce9c27503491ea342b18b892f973acf5b3afc0f1 (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/media')
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb-usb-ids.h | 3 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/m920x.c | 49 |
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 [] = { | |||
587 | static struct dvb_usb_device_properties megasky_properties; | 587 | static struct dvb_usb_device_properties megasky_properties; |
588 | static struct dvb_usb_device_properties digivox_mini_ii_properties; | 588 | static struct dvb_usb_device_properties digivox_mini_ii_properties; |
589 | static struct dvb_usb_device_properties tvwalkertwin_properties; | 589 | static struct dvb_usb_device_properties tvwalkertwin_properties; |
590 | static struct dvb_usb_device_properties dposh_properties; | ||
590 | static struct m9206_inits megasky_rc_init []; | 591 | static struct m9206_inits megasky_rc_init []; |
591 | static struct m9206_inits tvwalkertwin_rc_init []; | 592 | static 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 | }; |
668 | MODULE_DEVICE_TABLE (usb, m920x_table); | 676 | MODULE_DEVICE_TABLE (usb, m920x_table); |
@@ -835,6 +843,47 @@ static struct dvb_usb_device_properties tvwalkertwin_properties = { | |||
835 | } | 843 | } |
836 | }; | 844 | }; |
837 | 845 | ||
846 | static 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 | |||
838 | static struct usb_driver m920x_driver = { | 887 | static struct usb_driver m920x_driver = { |
839 | .name = "dvb_usb_m920x", | 888 | .name = "dvb_usb_m920x", |
840 | .probe = m920x_probe, | 889 | .probe = m920x_probe, |