Skip to content

Commit 1157020

Browse files
desmendmchehab
authored andcommitted
V4L/DVB (3323): Add Kconfig option for wrongly programmed devices
- A new Kconfig option makes the user able to select if the dibusb-mb driver shall claim faulty programmed USB devices which are coming with default Cypress USB IDs. Signed-off-by: Patrick Boettcher <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]>
1 parent 00e3457 commit 1157020

File tree

2 files changed

+43
-27
lines changed

2 files changed

+43
-27
lines changed

drivers/media/dvb/dvb-usb/Kconfig

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,29 @@ config DVB_USB_DIBUSB_MB
3737
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-B demodulator.
3838

3939
Devices supported by this driver:
40-
TwinhanDTV USB-Ter (VP7041)
41-
TwinhanDTV Magic Box (VP7041e)
42-
KWorld/JetWay/ADSTech V-Stream XPERT DTV - DVB-T USB1.1 and USB2.0
43-
Hama DVB-T USB1.1-Box
44-
DiBcom USB1.1 reference devices (non-public)
45-
Ultima Electronic/Artec T1 USB TVBOX
40+
Artec T1 USB1.1 boxes
41+
Avermedia AverTV DVBT USB1.1
4642
Compro Videomate DVB-U2000 - DVB-T USB
43+
DiBcom USB1.1 reference devices (non-public)
4744
Grandtec DVB-T USB
48-
Avermedia AverTV DVBT USB1.1
49-
Artec T1 USB1.1 boxes
45+
Hama DVB-T USB1.1-Box
46+
KWorld/JetWay/ADSTech V-Stream XPERT DTV - DVB-T USB1.1 and USB2.0
47+
TwinhanDTV Magic Box (VP7041e)
48+
TwinhanDTV USB-Ter (VP7041)
49+
Ultima Electronic/Artec T1 USB TVBOX
5050

5151
The VP7041 seems to be identical to "CTS Portable" (Chinese
5252
Television System).
5353

5454
Say Y if you own such a device and want to use it. You should build it as
5555
a module.
5656

57+
config DVB_USB_DIBUSB_MB_FAULTY
58+
bool "Support faulty USB IDs"
59+
depends on DVB_USB_DIBUSB_MB
60+
help
61+
Support for faulty USB IDs due to an invalid EEPROM on some Artec devices.
62+
5763
config DVB_USB_DIBUSB_MC
5864
tristate "DiBcom USB DVB-T devices (based on the DiB3000M-C/P) (see help for device list)"
5965
depends on DVB_USB
@@ -63,8 +69,8 @@ config DVB_USB_DIBUSB_MC
6369
DiBcom (<http://www.dibcom.fr>) equipped with a DiB3000M-C/P demodulator.
6470

6571
Devices supported by this driver:
66-
DiBcom USB2.0 reference devices (non-public)
6772
Artec T1 USB2.0 boxes
73+
DiBcom USB2.0 reference devices (non-public)
6874

6975
Say Y if you own such a device and want to use it. You should build it as
7076
a module.

drivers/media/dvb/dvb-usb/dibusb-mb.c

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ static int dibusb_tuner_probe_and_attach(struct dvb_usb_device *d)
6565
d->tuner_pass_ctrl(d->fe,0,msg[0].addr);
6666

6767
if (b2[0] == 0xfe) {
68-
info("this device has the Thomson Cable onboard. Which is default.");
68+
info("This device has the Thomson Cable onboard. Which is default.");
6969
dibusb_thomson_tuner_attach(d);
7070
} else {
7171
u8 bpll[4] = { 0x0b, 0xf5, 0x85, 0xab };
72-
info("this device has the Panasonic ENV77H11D5 onboard.");
72+
info("This device has the Panasonic ENV77H11D5 onboard.");
7373
d->pll_addr = 0x60;
7474
memcpy(d->pll_init,bpll,4);
7575
d->pll_desc = &dvb_pll_tda665x;
@@ -98,15 +98,15 @@ static int dibusb_probe(struct usb_interface *intf,
9898

9999
/* do not change the order of the ID table */
100100
static struct usb_device_id dibusb_dib3000mb_table [] = {
101-
/* 00 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_COLD)},
102-
/* 01 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_WARM)},
101+
/* 00 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_COLD) },
102+
/* 01 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_WARM) },
103103
/* 02 */ { USB_DEVICE(USB_VID_COMPRO, USB_PID_COMPRO_DVBU2000_COLD) },
104104
/* 03 */ { USB_DEVICE(USB_VID_COMPRO, USB_PID_COMPRO_DVBU2000_WARM) },
105105
/* 04 */ { USB_DEVICE(USB_VID_COMPRO_UNK, USB_PID_COMPRO_DVBU2000_UNK_COLD) },
106106
/* 05 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3000_COLD) },
107107
/* 06 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3000_WARM) },
108-
/* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_COLD) },
109-
/* 08 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_WARM) },
108+
/* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_COLD) },
109+
/* 08 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_WARM) },
110110
/* 09 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB_COLD) },
111111
/* 10 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB_WARM) },
112112
/* 11 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_DIBCOM_MOD3000_COLD) },
@@ -117,27 +117,34 @@ static struct usb_device_id dibusb_dib3000mb_table [] = {
117117
/* 16 */ { USB_DEVICE(USB_VID_VISIONPLUS, USB_PID_TWINHAN_VP7041_WARM) },
118118
/* 17 */ { USB_DEVICE(USB_VID_TWINHAN, USB_PID_TWINHAN_VP7041_COLD) },
119119
/* 18 */ { USB_DEVICE(USB_VID_TWINHAN, USB_PID_TWINHAN_VP7041_WARM) },
120-
/* 19 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_COLD) },
121-
/* 20 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_WARM) },
122-
/* 21 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_COLD) },
123-
/* 22 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) },
120+
/* 19 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_COLD) },
121+
/* 20 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_WARM) },
122+
/* 21 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_COLD) },
123+
/* 22 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) },
124124
/* 23 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_COLD) },
125125

126126
/* device ID with default DIBUSB2_0-firmware and with the hacked firmware */
127127
/* 24 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_WARM) },
128-
/* 25 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_COLD) },
129-
/* 26 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_WARM) },
128+
/* 25 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_COLD) },
129+
/* 26 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_WARM) },
130130

131131
/* 27 */ { USB_DEVICE(USB_VID_KWORLD, USB_PID_KWORLD_VSTREAM_COLD) },
132132

133-
/* 28 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) },
134-
/* 29 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) },
133+
/* 28 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) },
134+
/* 29 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) },
135135

136-
// #define DVB_USB_DIBUSB_MB_FAULTY_USB_IDs
136+
/*
137+
* XXX: As Artec just 'forgot' to program the EEPROM on some Artec T1 devices
138+
* we don't catch these faulty IDs (namely 'Cypress FX1 USB controller') that
139+
* have been left on the device. If you don't have such a device but an Artec
140+
* device that's supposed to work with this driver but is not detected by it,
141+
* free to enable CONFIG_DVB_USB_DIBUSB_MB_FAULTY via your kernel config.
142+
*/
137143

138-
#ifdef DVB_USB_DIBUSB_MB_FAULTY_USB_IDs
144+
#ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
139145
/* 30 */ { USB_DEVICE(USB_VID_ANCHOR, USB_PID_ULTIMA_TVBOX_ANCHOR_COLD) },
140146
#endif
147+
141148
{ } /* Terminating entry */
142149
};
143150
MODULE_DEVICE_TABLE (usb, dibusb_dib3000mb_table);
@@ -257,7 +264,7 @@ static struct dvb_usb_properties dibusb1_1_an2235_properties = {
257264
}
258265
},
259266

260-
#ifdef DVB_USB_DIBUSB_MB_FAULTY_USB_IDs
267+
#ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
261268
.num_device_descs = 2,
262269
#else
263270
.num_device_descs = 1,
@@ -267,11 +274,12 @@ static struct dvb_usb_properties dibusb1_1_an2235_properties = {
267274
{ &dibusb_dib3000mb_table[20], NULL },
268275
{ &dibusb_dib3000mb_table[21], NULL },
269276
},
270-
#ifdef DVB_USB_DIBUSB_MB_FAULTY_USB_IDs
277+
#ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
271278
{ "Artec T1 USB1.1 TVBOX with AN2235 (faulty USB IDs)",
272279
{ &dibusb_dib3000mb_table[30], NULL },
273280
{ NULL },
274281
},
282+
{ NULL },
275283
#endif
276284
}
277285
};
@@ -323,6 +331,7 @@ static struct dvb_usb_properties dibusb2_0b_properties = {
323331
{ &dibusb_dib3000mb_table[27], NULL },
324332
{ NULL }
325333
},
334+
{ NULL },
326335
}
327336
};
328337

@@ -369,6 +378,7 @@ static struct dvb_usb_properties artec_t1_usb2_properties = {
369378
{ &dibusb_dib3000mb_table[28], NULL },
370379
{ &dibusb_dib3000mb_table[29], NULL },
371380
},
381+
{ NULL },
372382
}
373383
};
374384

0 commit comments

Comments
 (0)