History

media: dvb-usb: dibusb-mb: use an enum for the device number

The device number is currently a value that needs to be the same on two separate tables, but the code doesn't actually enforce it, leading to errors as boards get added or removed. Fix it by using an enum.

Mauro Carvalho Chehab committed 4 years ago

Commit d7634791 parent 5710a242 files · +101 −75Browse files

Unified · Split

2 files
  1. drivers/media/usb/dvb-usb/dibusb-mb.c +93 −72
  2. include/media/dvb-usb-ids.h +8 −3
drivers/media/usb/dvb-usb/dibusb-mb.c+93−72
@@ -121,56 +121,77 @@ static int dibusb_probe(struct usb_interface *intf, · 120 unmodified lines
121121 }
122122
123123 /* do not change the order of the ID table */
124−static struct usb_device_id dibusb_dib3000mb_table [] = {
125−/* 00 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_COLD) },
126−/* 01 */ { USB_DEVICE(USB_VID_WIDEVIEW, USB_PID_AVERMEDIA_DVBT_USB_WARM) },
127−/* 02 */ { USB_DEVICE(USB_VID_COMPRO, USB_PID_COMPRO_DVBU2000_COLD) },
128−/* 03 */ { USB_DEVICE(USB_VID_COMPRO, USB_PID_COMPRO_DVBU2000_WARM) },
129−/* 04 */ { USB_DEVICE(USB_VID_COMPRO_UNK, USB_PID_COMPRO_DVBU2000_UNK_COLD) },
130−/* 05 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3000_COLD) },
131−/* 06 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3000_WARM) },
132−/* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_COLD) },
133−/* 08 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_KWORLD_VSTREAM_WARM) },
134−/* 09 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB_COLD) },
135−/* 10 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB_WARM) },
136−/* 11 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_DIBCOM_MOD3000_COLD) },
137−/* 12 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_DIBCOM_MOD3000_WARM) },
138−/* 13 */ { USB_DEVICE(USB_VID_HYPER_PALTEK, USB_PID_UNK_HYPER_PALTEK_COLD) },
139−/* 14 */ { USB_DEVICE(USB_VID_HYPER_PALTEK, USB_PID_UNK_HYPER_PALTEK_WARM) },
140−/* 15 */ { USB_DEVICE(USB_VID_VISIONPLUS, USB_PID_TWINHAN_VP7041_COLD) },
141−/* 16 */ { USB_DEVICE(USB_VID_VISIONPLUS, USB_PID_TWINHAN_VP7041_WARM) },
142−/* 17 */ { USB_DEVICE(USB_VID_TWINHAN, USB_PID_TWINHAN_VP7041_COLD) },
143−/* 18 */ { USB_DEVICE(USB_VID_TWINHAN, USB_PID_TWINHAN_VP7041_WARM) },
144−/* 19 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_COLD) },
145−/* 20 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_WARM) },
146−/* 21 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_COLD) },
147−/* 22 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_AN2235_WARM) },
148−/* 23 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_COLD) },
149−
150−/* device ID with default DIBUSB2_0-firmware and with the hacked firmware */
151−/* 24 */ { USB_DEVICE(USB_VID_ADSTECH, USB_PID_ADSTECH_USB2_WARM) },
152−/* 25 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_COLD) },
153−/* 26 */ { USB_DEVICE(USB_VID_KYE, USB_PID_KYE_DVB_T_WARM) },
154−
155−/* 27 */ { USB_DEVICE(USB_VID_KWORLD, USB_PID_KWORLD_VSTREAM_COLD) },
156−
157−/* 28 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) },
158−/* 29 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) },
159−
160−/*
161− * XXX: As Artec just 'forgot' to program the EEPROM on some Artec T1 devices
162− * we don't catch these faulty IDs (namely 'Cypress FX1 USB controller') that
163− * have been left on the device. If you don't have such a device but an Artec
164− * device that's supposed to work with this driver but is not detected by it,
165− * free to enable CONFIG_DVB_USB_DIBUSB_MB_FAULTY via your kernel config.
166− */
124+enum {
125+ WIDEVIEW_DVBT_USB_COLD,
126+ WIDEVIEW_DVBT_USB_WARM,
127+ COMPRO_DVBU2000_COLD,
128+ COMPRO_DVBU2000_WARM,
129+ COMPRO_DVBU2000_UNK_COLD,
130+ DIBCOM_MOD3000_COLD,
131+ DIBCOM_MOD3000_WARM,
132+ EMPIA_VSTREAM_COLD,
133+ EMPIA_VSTREAM_WARM,
134+ GRANDTEC_DVBT_USB_COLD,
135+ GRANDTEC_DVBT_USB_WARM,
136+ GRANDTEC_MOD3000_COLD,
137+ GRANDTEC_MOD3000_WARM,
138+ UNK_HYPER_PALTEK_COLD,
139+ UNK_HYPER_PALTEK_WARM,
140+ VISIONPLUS_VP7041_COLD,
141+ VISIONPLUS_VP7041_WARM,
142+ TWINHAN_VP7041_COLD,
143+ TWINHAN_VP7041_WARM,
144+ ULTIMA_TVBOX_COLD,
145+ ULTIMA_TVBOX_WARM,
146+ ULTIMA_TVBOX_AN2235_COLD,
147+ ULTIMA_TVBOX_AN2235_WARM,
148+ ADSTECH_USB2_COLD,
149+ ADSTECH_USB2_WARM,
150+ KYE_DVB_T_COLD,
151+ KYE_DVB_T_WARM,
152+ KWORLD_VSTREAM_COLD,
153+ ULTIMA_TVBOX_USB2_COLD,
154+ ULTIMA_TVBOX_USB2_WARM,
155+ ULTIMA_TVBOX_ANCHOR_COLD,
156+};
167157
158+static struct usb_device_id dibusb_dib3000mb_table[] = {
159+ DVB_USB_DEV(WIDEVIEW, WIDEVIEW_DVBT_USB_COLD),
160+ DVB_USB_DEV(WIDEVIEW, WIDEVIEW_DVBT_USB_WARM),
161+ DVB_USB_DEV(COMPRO, COMPRO_DVBU2000_COLD),
162+ DVB_USB_DEV(COMPRO, COMPRO_DVBU2000_WARM),
163+ DVB_USB_DEV(COMPRO_UNK, COMPRO_DVBU2000_UNK_COLD),
164+ DVB_USB_DEV(DIBCOM, DIBCOM_MOD3000_COLD),
165+ DVB_USB_DEV(DIBCOM, DIBCOM_MOD3000_WARM),
166+ DVB_USB_DEV(EMPIA, EMPIA_VSTREAM_COLD),
167+ DVB_USB_DEV(EMPIA, EMPIA_VSTREAM_WARM),
168+ DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB_COLD),
169+ DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB_WARM),
170+ DVB_USB_DEV(GRANDTEC, GRANDTEC_MOD3000_COLD),
171+ DVB_USB_DEV(GRANDTEC, GRANDTEC_MOD3000_WARM),
172+ DVB_USB_DEV(HYPER_PALTEK, UNK_HYPER_PALTEK_COLD),
173+ DVB_USB_DEV(HYPER_PALTEK, UNK_HYPER_PALTEK_WARM),
174+ DVB_USB_DEV(VISIONPLUS, VISIONPLUS_VP7041_COLD),
175+ DVB_USB_DEV(VISIONPLUS, VISIONPLUS_VP7041_WARM),
176+ DVB_USB_DEV(TWINHAN, TWINHAN_VP7041_COLD),
177+ DVB_USB_DEV(TWINHAN, TWINHAN_VP7041_WARM),
178+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_COLD),
179+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_WARM),
180+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_AN2235_COLD),
181+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_AN2235_WARM),
182+ DVB_USB_DEV(ADSTECH, ADSTECH_USB2_COLD),
183+ DVB_USB_DEV(ADSTECH, ADSTECH_USB2_WARM),
184+ DVB_USB_DEV(KYE, KYE_DVB_T_COLD),
185+ DVB_USB_DEV(KYE, KYE_DVB_T_WARM),
186+ DVB_USB_DEV(KWORLD, KWORLD_VSTREAM_COLD),
187+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_COLD),
188+ DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_WARM),
168189 #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
169−/* 30 */ { USB_DEVICE(USB_VID_ANCHOR, USB_PID_ULTIMA_TVBOX_ANCHOR_COLD) },
190+ DVB_USB_DEV(ANCHOR, ULTIMA_TVBOX_ANCHOR_COLD),
170191 #endif
171−
172− { } /* Terminating entry */
192+ { }
173193 };
194+
174195 MODULE_DEVICE_TABLE (usb, dibusb_dib3000mb_table);
175196
176197 static struct dvb_usb_device_properties dibusb1_1_properties = {
@@ -226,40 +247,40 @@ static struct dvb_usb_device_properties dibusb1_1_properties = { · 49 unmodified lines
226247 .num_device_descs = 9,
227248 .devices = {
228249 { "AVerMedia AverTV DVBT USB1.1",
229− { &dibusb_dib3000mb_table[0], NULL },
230− { &dibusb_dib3000mb_table[1], NULL },
250+ { &dibusb_dib3000mb_table[WIDEVIEW_DVBT_USB_COLD], NULL },
251+ { &dibusb_dib3000mb_table[WIDEVIEW_DVBT_USB_WARM], NULL },
231252 },
232253 { "Compro Videomate DVB-U2000 - DVB-T USB1.1 (please confirm to linux-dvb)",
233− { &dibusb_dib3000mb_table[2], &dibusb_dib3000mb_table[4], NULL},
234− { &dibusb_dib3000mb_table[3], NULL },
254+ { &dibusb_dib3000mb_table[COMPRO_DVBU2000_COLD], &dibusb_dib3000mb_table[COMPRO_DVBU2000_UNK_COLD], NULL},
255+ { &dibusb_dib3000mb_table[COMPRO_DVBU2000_WARM], NULL },
235256 },
236257 { "DiBcom USB1.1 DVB-T reference design (MOD3000)",
237− { &dibusb_dib3000mb_table[5], NULL },
238− { &dibusb_dib3000mb_table[6], NULL },
258+ { &dibusb_dib3000mb_table[DIBCOM_MOD3000_COLD], NULL },
259+ { &dibusb_dib3000mb_table[DIBCOM_MOD3000_WARM], NULL },
239260 },
240261 { "KWorld V-Stream XPERT DTV - DVB-T USB1.1",
241− { &dibusb_dib3000mb_table[7], NULL },
242− { &dibusb_dib3000mb_table[8], NULL },
262+ { &dibusb_dib3000mb_table[EMPIA_VSTREAM_COLD], NULL },
263+ { &dibusb_dib3000mb_table[EMPIA_VSTREAM_WARM], NULL },
243264 },
244265 { "Grandtec USB1.1 DVB-T",
245− { &dibusb_dib3000mb_table[9], &dibusb_dib3000mb_table[11], NULL },
246− { &dibusb_dib3000mb_table[10], &dibusb_dib3000mb_table[12], NULL },
266+ { &dibusb_dib3000mb_table[GRANDTEC_DVBT_USB_COLD], &dibusb_dib3000mb_table[GRANDTEC_MOD3000_COLD], NULL },
267+ { &dibusb_dib3000mb_table[GRANDTEC_DVBT_USB_WARM], &dibusb_dib3000mb_table[GRANDTEC_MOD3000_WARM], NULL },
247268 },
248269 { "Unknown USB1.1 DVB-T device ???? please report the name to the author",
249− { &dibusb_dib3000mb_table[13], NULL },
250− { &dibusb_dib3000mb_table[14], NULL },
270+ { &dibusb_dib3000mb_table[UNK_HYPER_PALTEK_COLD], NULL },
271+ { &dibusb_dib3000mb_table[UNK_HYPER_PALTEK_WARM], NULL },
251272 },
252273 { "TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device",
253− { &dibusb_dib3000mb_table[15], &dibusb_dib3000mb_table[17], NULL},
254− { &dibusb_dib3000mb_table[16], &dibusb_dib3000mb_table[18], NULL},
274+ { &dibusb_dib3000mb_table[VISIONPLUS_VP7041_COLD], &dibusb_dib3000mb_table[TWINHAN_VP7041_COLD], NULL},
275+ { &dibusb_dib3000mb_table[VISIONPLUS_VP7041_WARM], &dibusb_dib3000mb_table[TWINHAN_VP7041_WARM], NULL},
255276 },
256277 { "Artec T1 USB1.1 TVBOX with AN2135",
257− { &dibusb_dib3000mb_table[19], NULL },
258− { &dibusb_dib3000mb_table[20], NULL },
278+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_COLD], NULL },
279+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_WARM], NULL },
259280 },
260281 { "VideoWalker DVB-T USB",
261− { &dibusb_dib3000mb_table[25], NULL },
262− { &dibusb_dib3000mb_table[26], NULL },
282+ { &dibusb_dib3000mb_table[KYE_DVB_T_COLD], NULL },
283+ { &dibusb_dib3000mb_table[KYE_DVB_T_WARM], NULL },
263284 },
264285 }
265286 };
@@ -319,12 +340,12 @@ static struct dvb_usb_device_properties dibusb1_1_an2235_properties = { · 53 unmodified lines
319340 #endif
320341 .devices = {
321342 { "Artec T1 USB1.1 TVBOX with AN2235",
322− { &dibusb_dib3000mb_table[21], NULL },
323− { &dibusb_dib3000mb_table[22], NULL },
343+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_AN2235_COLD], NULL },
344+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_AN2235_WARM], NULL },
324345 },
325346 #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
326347 { "Artec T1 USB1.1 TVBOX with AN2235 (faulty USB IDs)",
327− { &dibusb_dib3000mb_table[30], NULL },
348+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_ANCHOR_COLD], NULL },
328349 { NULL },
329350 },
330351 { NULL },
@@ -384,11 +405,11 @@ static struct dvb_usb_device_properties dibusb2_0b_properties = { · 53 unmodified lines
384405 .num_device_descs = 2,
385406 .devices = {
386407 { "KWorld/ADSTech Instant DVB-T USB2.0",
387− { &dibusb_dib3000mb_table[23], NULL },
388− { &dibusb_dib3000mb_table[24], NULL },
408+ { &dibusb_dib3000mb_table[ADSTECH_USB2_COLD], NULL },
409+ { &dibusb_dib3000mb_table[ADSTECH_USB2_WARM], NULL },
389410 },
390411 { "KWorld Xpert DVB-T USB2.0",
391− { &dibusb_dib3000mb_table[27], NULL },
412+ { &dibusb_dib3000mb_table[KWORLD_VSTREAM_COLD], NULL },
392413 { NULL }
393414 },
394415 { NULL },
@@ -446,8 +467,8 @@ static struct dvb_usb_device_properties artec_t1_usb2_properties = { · 51 unmodified lines
446467 .num_device_descs = 1,
447468 .devices = {
448469 { "Artec T1 USB2.0",
449− { &dibusb_dib3000mb_table[28], NULL },
450− { &dibusb_dib3000mb_table[29], NULL },
470+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_USB2_COLD], NULL },
471+ { &dibusb_dib3000mb_table[ULTIMA_TVBOX_USB2_WARM], NULL },
451472 },
452473 { NULL },
453474 }
include/media/dvb-usb-ids.h+8−3
@@ -133,8 +133,6 @@ · 132 unmodified lines
133133 #define USB_PID_AVERMEDIA_B835 0xb835
134134 #define USB_PID_AVERMEDIA_DVBT_USB2_COLD 0xa800
135135 #define USB_PID_AVERMEDIA_DVBT_USB2_WARM 0xa801
136−#define USB_PID_AVERMEDIA_DVBT_USB_COLD 0x0001
137−#define USB_PID_AVERMEDIA_DVBT_USB_WARM 0x0002
138136 #define USB_PID_AVERMEDIA_EXPRESS 0xb568
139137 #define USB_PID_AVERMEDIA_H335 0x0335
140138 #define USB_PID_AVERMEDIA_HYBRID_ULTRA_USB_M039R 0x0039
@@ -230,6 +228,8 @@ · 89 unmodified lines
230228 #define USB_PID_ELGATO_EYETV_SAT 0x002a
231229 #define USB_PID_ELGATO_EYETV_SAT_V2 0x0025
232230 #define USB_PID_ELGATO_EYETV_SAT_V3 0x0036
231+#define USB_PID_EMPIA_VSTREAM_COLD 0x17de
232+#define USB_PID_EMPIA_VSTREAM_WARM 0x17df
233233 #define USB_PID_EVOLVEO_XTRATV_STICK 0xa115
234234 #define USB_PID_FREECOM_DVBT 0x0160
235235 #define USB_PID_FREECOM_DVBT_2 0x0161
@@ -251,6 +251,8 @@ · 15 unmodified lines
251251 #define USB_PID_GRANDTEC_DVBT_USB2_WARM 0x0bc7
252252 #define USB_PID_GRANDTEC_DVBT_USB_COLD 0x0fa0
253253 #define USB_PID_GRANDTEC_DVBT_USB_WARM 0x0fa1
254+#define USB_PID_GRANDTEC_MOD3000_COLD 0x0bb8
255+#define USB_PID_GRANDTEC_MOD3000_WARM 0x0bb9
254256 #define USB_PID_HAMA_DVBT_HYBRID 0x2758
255257 #define USB_PID_HANFTEK_UMT_010_COLD 0x0001
256258 #define USB_PID_HANFTEK_UMT_010_WARM 0x0015
@@ -285,7 +287,6 @@ · 28 unmodified lines
285287 #define USB_PID_KWORLD_UB383_T 0xe383
286288 #define USB_PID_KWORLD_UB499_2T_T09 0xe409
287289 #define USB_PID_KWORLD_VSTREAM_COLD 0x17de
288−#define USB_PID_KWORLD_VSTREAM_WARM 0x17df
289290 #define USB_PID_KYE_DVB_T_COLD 0x701e
290291 #define USB_PID_KYE_DVB_T_WARM 0x701f
291292 #define USB_PID_LITEON_DVB_T_COLD 0xf000
@@ -429,10 +430,14 @@ · 137 unmodified lines
429430 #define USB_PID_VISIONPLUS_VP7020_COLD 0x3203
430431 #define USB_PID_VISIONPLUS_VP7020_WARM 0x3204
431432 #define USB_PID_VISIONPLUS_VP7021_COLD 0x3207
433+#define USB_PID_VISIONPLUS_VP7041_COLD 0x3201
434+#define USB_PID_VISIONPLUS_VP7041_WARM 0x3202
432435 #define USB_PID_VISIONPLUS_VP7045_COLD 0x3205
433436 #define USB_PID_VISIONPLUS_VP7045_WARM 0x3206
434437 #define USB_PID_WIDEVIEW_DTT200U_COLD 0x0201
435438 #define USB_PID_WIDEVIEW_DTT200U_WARM 0x0301
439+#define USB_PID_WIDEVIEW_DVBT_USB_COLD 0x0001
440+#define USB_PID_WIDEVIEW_DVBT_USB_WARM 0x0002
436441 #define USB_PID_WIDEVIEW_WT220U_COLD 0x0222
437442 #define USB_PID_WIDEVIEW_WT220U_FC_COLD 0x0225
438443 #define USB_PID_WIDEVIEW_WT220U_FC_WARM 0x0226