Skip to contentSkip to conversation

update dib-usb driver

PATCH In review Michael Hunold 2 participants 2 messages Dec 10, 2004 – Dec 14, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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

drivers/media/dvb/dibusb/Kconfig +14 -7
diff -uraNwB linux-2.6.10-rc3-bk3/drivers/media/dvb/dibusb/Kconfig linux-2.6.10-rc3-bk3-p/drivers/media/dvb/dibusb/Kconfig
@@ -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
diff -uraNwB linux-2.6.10-rc3-bk3/drivers/media/dvb/dibusb/dvb-dibusb.h linux-2.6.10-rc3-bk3-p/drivers/media/dvb/dibusb/dvb-dibusb.h
@@ -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
diff -uraNwB linux-2.6.10-rc3-bk3/drivers/media/dvb/frontends/Kconfig linux-2.6.10-rc3-bk3-p/drivers/media/dvb/frontends/Kconfig
@@ -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
diff -uraNwB linux-2.6.10-rc3-bk3/drivers/media/dvb/frontends/Makefile linux-2.6.10-rc3-bk3-p/drivers/media/dvb/frontends/Makefile
@@ -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
diff -uraNwB linux-2.6.10-rc3-bk3/drivers/media/dvb/frontends/dib3000.h linux-2.6.10-rc3-bk3-p/drivers/media/dvb/frontends/dib3000.h
@@ -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
diff -uraNwB linux-2.6.10-rc3-bk3/Documentation/dvb/README.dibusb linux-2.6.10-rc3-bk3-p/Documentation/dvb/README.dibusb
@@ -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
 
#1 lore raw
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.

drivers/media/dvb/dibusb/Kconfig +1 -1
diff -purN linux-2.6.9/drivers/media/dvb/dibusb/Kconfig linux-2.6.10-rc3-bk8/drivers/media/dvb/dibusb/Kconfig
@@ -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"