update dib-usb driver
Subsystems (2)
PATCH 3/6 update dib-usb driver
- [DVB] added new usb ids for some more clones
- [DVB] added option to deliver the complete TS with USB2.0 devices
- [DVB] added support for the dib3000mc/p frontend driver
Signed-off-by Michael Hunold <[email protected]>
drivers/media/dvb/dibusb/Kconfig +14 -7
@@ -3,6 +3,7 @@ depends on DVB_CORE && USB select FW_LOADER select DVB_DIB3000MB + select DVB_DIB3000MC help Support for USB 1.1 and 2.0 DVB-T devices based on reference designs made by DiBcom (http://www.dibcom.fr).
@@ -32,19 +33,25 @@ Say Y if you own such a device and want to use it. You should build it as a module. -config DVB_DIBUSB_MISDESIGNED_AN2235 - bool "Enable support for some Artec T1 device, which identifies as AN2235" +config DVB_DIBUSB_MISDESIGNED_DEVICES + bool "Enable support for some misdesigned (see help) devices, which identify with wrong IDs" depends on DVB_DIBUSB help - Somehow Artec forgot to program the eeprom for some of their T1 devices. So - comes that they identify with the default Vendor and Product ID of the Cypress - CY7C64613 (AN2235). + Somehow Artec/Ultima Electronic forgot to program the eeprom of some of their + USB1.1/USB2.0 devices. + So comes that they identify with the default Vendor and Product ID of the Cypress + CY7C64613 (AN2235) or Cypress FX2. + + Affected device IDs: + 0x0574:0x2235 (Artec T1 USB1.1, cold) + 0x04b4:0x8613 (Artec T1 USB2.0, cold) + 0x0574:0x1002 (Artec T1 USB2.0, warm) - Say Y if your Artec device has 0x0574 as Vendor ID and 0x2235 as Product ID. + Say Y if your device one of the mentioned IDs. config DVB_DIBCOM_DEBUG bool "Enable extended debug support for DiBcom USB device" depends on DVB_DIBUSB help Say Y if you want to enable debuging. See modinfo dvb-dibusb for - debug level. + debug levels.
drivers/media/dvb/dibusb/dvb-dibusb.c +131 -31
293 lines not on this page · raw message
drivers/media/dvb/dibusb/dvb-dibusb.h +33 -6
@@ -67,7 +67,7 @@ .data_pipe = 0x82, }, { .type = DIBUSB2_0, - .demod_addr = 0x10, + .demod_addr = 0x18, .fw_filenames = dibusb_fw_filenames2_0, .usb_controller = "Cypress FX2", .usb_cpu_csreg = 0xe600,
@@ -109,6 +109,8 @@#define USB_VID_ANCHOR 0x0547#define USB_VID_AVERMEDIA 0x14aa#define USB_VID_COMPRO 0x185b +#define USB_VID_COMPRO_UNK 0x145f +#define USB_VID_CYPRESS 0x04b4#define USB_VID_DIBCOM 0x10b8#define USB_VID_EMPIA 0xeb1a#define USB_VID_GRANDTEC 0x5032
@@ -122,6 +124,8 @@#define USB_PID_AVERMEDIA_DVBT_USB_WARM 0x0002#define USB_PID_COMPRO_DVBU2000_COLD 0xd000#define USB_PID_COMPRO_DVBU2000_WARM 0xd001 +#define USB_PID_COMPRO_DVBU2000_UNK_COLD 0x010c +#define USB_PID_COMPRO_DVBU2000_UNK_WARM 0x010d#define USB_PID_DIBCOM_MOD3000_COLD 0x0bb8#define USB_PID_DIBCOM_MOD3000_WARM 0x0bb9#define USB_PID_DIBCOM_MOD3001_COLD 0x0bc6
@@ -137,12 +141,15 @@#define USB_PID_ULTIMA_TVBOX_AN2235_COLD 0x8107#define USB_PID_ULTIMA_TVBOX_AN2235_WARM 0x8108#define USB_PID_ULTIMA_TVBOX_ANCHOR_COLD 0x2235 +#define USB_PID_ULTIMA_TVBOX_USB2_COLD 0x8109 +#define USB_PID_ULTIMA_TVBOX_USB2_FX_COLD 0x8613 +#define USB_PID_ULTIMA_TVBOX_USB2_FX_WARM 0x1002#define USB_PID_UNK_HYPER_PALTEK_COLD 0x005e#define USB_PID_UNK_HYPER_PALTEK_WARM 0x005f#define USB_PID_YAKUMO_DTT200U_COLD 0x0201#define USB_PID_YAKUMO_DTT200U_WARM 0x0301 -#define DIBUSB_SUPPORTED_DEVICES 12 +#define DIBUSB_SUPPORTED_DEVICES 15/* USB Driver stuff */ static struct dibusb_device dibusb_devices[DIBUSB_SUPPORTED_DEVICES ] = {
@@ -176,11 +183,26 @@ .warm_product_id = 0, /* undefined, this design becomes USB_PID_DIBCOM_MOD3000_WARM in warm state */ .parm = &dibusb_dev_parm[2], }, + { .name = "Artec T1 USB2.0 TVBOX (please report the warm ID)", + .cold_product_id = USB_PID_ULTIMA_TVBOX_USB2_COLD, + .warm_product_id = 0, /* don't know, it is most likely that the device will get another USB ID in warm state */ + .parm = &dibusb_dev_parm[1], + }, + { .name = "Artec T1 USB2.0 TVBOX with FX2 IDs (misdesigned, please report the warm ID)", + .cold_product_id = USB_PID_ULTIMA_TVBOX_USB2_FX_COLD, + .warm_product_id = USB_PID_ULTIMA_TVBOX_USB2_FX_WARM, /* undefined, it could be that the device will get another USB ID in warm state */ + .parm = &dibusb_dev_parm[1 ], + }, { .name = "Compro Videomate DVB-U2000 - DVB-T USB1.1", .cold_product_id = USB_PID_COMPRO_DVBU2000_COLD, .warm_product_id = USB_PID_COMPRO_DVBU2000_WARM, .parm = &dibusb_dev_parm[0], }, + { .name = "Compro Videomate DVB-U2000 - DVB-T USB1.1 (really ?? please report the name!)", + .cold_product_id = USB_PID_COMPRO_DVBU2000_UNK_COLD, + .warm_product_id = USB_PID_COMPRO_DVBU2000_UNK_WARM, + .parm = &dibusb_dev_parm[0], + }, { .name = "Unkown USB1.1 DVB-T device ???? please report the name to the author", .cold_product_id = USB_PID_UNK_HYPER_PALTEK_COLD, .warm_product_id = USB_PID_UNK_HYPER_PALTEK_WARM,
@@ -237,14 +259,18 @@ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) }, { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_YAKUMO_DTT200U_COLD) }, { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_YAKUMO_DTT200U_WARM) }, + { USB_DEVICE(USB_PID_COMPRO_DVBU2000_UNK_COLD, USB_VID_COMPRO_UNK) }, + { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) },/* -* activate the following define when you have the device and want to compile -* build from build-2.6 in dvb-kernel +* activate the following define when you have one of the devices and want to +* build it from build-2.6 in dvb-kernel */ -// #define CONFIG_DVB_DIBUSB_MISDESIGNED_AN2235 -#ifdef CONFIG_DVB_DIBUSB_MISDESIGNED_AN2235 +// #define CONFIG_DVB_DIBUSB_MISDESIGNED_DEVICES +#ifdef CONFIG_DVB_DIBUSB_MISDESIGNED_DEVICES { USB_DEVICE(USB_VID_ANCHOR, USB_PID_ULTIMA_TVBOX_ANCHOR_COLD) }, + { USB_DEVICE(USB_VID_CYPRESS, USB_PID_ULTIMA_TVBOX_USB2_FX_COLD) }, + { USB_DEVICE(USB_VID_ANCHOR, USB_PID_ULTIMA_TVBOX_USB2_FX_WARM) }, #endif { } /* Terminating entry */ };
@@ -260,6 +286,7 @@struct dibusb_device * dibdev;int feedcount; +int pid_parse;struct dib3000_xfer_ops xfer_ops;struct urb **urb_list;
drivers/media/dvb/frontends/Kconfig +7 -0
@@ -111,6 +111,13 @@ A DVB-T tuner module. Designed for mobile usage. Say Y when you want to support this frontend. +config DVB_DIB3000MC + tristate "DiBcom 3000-MC/P" + depends on DVB_CORE + help + A DVB-T tuner module. Designed for mobile usage. Say Y when you want + to support this frontend. + comment "DVB-C (cable) frontends" depends on DVB_CORE
drivers/media/dvb/frontends/Makefile +2 -1
@@ -11,7 +11,8 @@ obj-$(CONFIG_DVB_CX24110) += cx24110.o obj-$(CONFIG_DVB_TDA8083) += tda8083.o obj-$(CONFIG_DVB_L64781) += l64781.o -obj-$(CONFIG_DVB_DIB3000MB) += dib3000mb.o +obj-$(CONFIG_DVB_DIB3000MB) += dib3000mb.o dib3000-common.o +obj-$(CONFIG_DVB_DIB3000MC) += dib3000mc.o dib3000-common.o obj-$(CONFIG_DVB_MT312) += mt312.o obj-$(CONFIG_DVB_VES1820) += ves1820.o obj-$(CONFIG_DVB_VES1X93) += ves1x93.o
drivers/media/dvb/frontends/dib3000-common.c +145 -0
145 lines not on this page · raw message
drivers/media/dvb/frontends/dib3000-common.h +60 -11
89 lines not on this page · raw message
drivers/media/dvb/frontends/dib3000.h +3 -1
@@ -42,7 +42,7 @@struct dib3000_xfer_ops {/* pid and transfer handling is done in the demodulator */ -int (*pid_filter)(struct dvb_frontend *fe,int onoff); +int (*pid_parse)(struct dvb_frontend *fe,int onoff);int (*fifo_ctrl)(struct dvb_frontend *fe,int onoff);int (*pid_ctrl)(struct dvb_frontend *fe,int pid,int onoff); };
@@ -50,4 +50,6 @@extern struct dvb_frontend *dib3000mb_attach (const struct dib3000_config * config,struct i2c_adapter * i2c,struct dib3000_xfer_ops *xfer_ops); +extern struct dvb_frontend *dib3000mc_attach (const struct dib3000_config * config, +struct i2c_adapter * i2c,struct dib3000_xfer_ops *xfer_ops);#endif // DIB3000_H
drivers/media/dvb/frontends/dib3000mb.c +56 -178
417 lines not on this page · raw message
drivers/media/dvb/frontends/dib3000mc.c +860 -0
860 lines not on this page · raw message
drivers/media/dvb/frontends/dib3000mc_priv.h +439 -0
439 lines not on this page · raw message
Documentation/dvb/README.dibusb +34 -5
@@ -47,7 +47,7 @@ Others: ------- - Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235) - http://www.arteceuro.com/products-tvbox.html + http://82.161.246.249/products-tvbox.html - Compro Videomate DVB-U2000 - DVB-T USB http://www.comprousa.com/products/vmu2000.htm
@@ -63,6 +63,9 @@ Supported devices USB2.0 ======================== +- Twinhan MagicBox II + http://www.twinhan.com/product_terrestrial_7.asp + - Yakumo DVB-T mobile http://www.yakumo.de/produkte/index.php?pid=1&ag=DVB-T
@@ -69,8 +72,14 @@ - DiBcom USB2.0 DVB-T reference device (non-public) - 0. NEWS: + 2004-12-06 - possibility for demod i2c-address probing + - new usb IDs (Compro,Artec) + 2004-11-23 - merged changes from DiB3000MC_ver2.1 + - revised the debugging + - possibility to deliver the complete TS for USB2.0 + 2004-11-21 - first working version of the dib3000mc/p frontend driver. + 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke. 2004-11-07 - added remote control support. Thanks to David Matthews. 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec) - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD
@@ -165,9 +174,7 @@ 2. Known problems and bugs TODO: -- remote control - signal-quality and strength calculations -- i2c address probing 2.1. Adding support for devices
@@ -189,7 +196,29 @@ the linux-dvb mailing list, _after_ you have tried compiling and modprobing it. -2.2. Comments +2.2. USB1.1 Bandwidth limitation + +Most of the current supported devices are USB1.1 and thus they have a +maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub. +This is not enough for receiving the complete transport stream of a +DVB-T channel (which can be about 16 MBit/s). Normally this is not a +problem, if you only want to watch TV, but watching a channel while +recording another channel on the same frequency simply does not work. +This applies to all USB1.1 DVB-T devices. + +A special problem of the dibusb for the USB1.1 is, that the USB control +IC has a problem with write accesses while having MPEG2-streaming +enabled. When you set another pid while receiving MPEG2-TS it happens, that +the stream is disturbed and probably data is lost (results in distortions of +the video or strange beeps within the audio stream). DiBcom is preparing a +firmware especially for Linux which perhaps solves the problem. + +Especially VDR users are victoms of this bug. VDR frequently requests new PIDs +due the automatic scanning (introduced in 1.3.x, afaik) and epg-scan. Disabling +these features is maybe a solution. Additionally this behaviour of VDR exceeds +the USB1.1 bandwidth. + +2.3. Comments Patches, comments and suggestions are very very welcome
Quoted 3 lines · Michael Hunold
- [DVB] added new usb ids for some more clones
- [DVB] added option to deliver the complete TS with USB2.0 devices
- [DVB] added support for the dib3000mc/p frontend driver
Small typo in the Kconfig helptext.
Signed-off-by Olaf Hering <[email protected]>
drivers/media/dvb/dibusb/Kconfig +1 -1
@@ -47,7 +47,7 @@ config DVB_DIBUSB_MISDESIGNED_DEVICES 0x04b4:0x8613 (Artec T1 USB2.0, cold) 0x0574:0x1002 (Artec T1 USB2.0, warm) - Say Y if your device one of the mentioned IDs. + Say Y if your device has one of the mentioned IDs. config DVB_DIBCOM_DEBUG bool "Enable extended debug support for DiBcom USB device"