Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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.

Link: https://lore.kernel.org/linux-media/a300c26ad4e9bb913e86eeaf0ec7d72b9e7d5d3e.1648499509.git.mchehab@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

+104 -78
+96 -75
drivers/media/usb/dvb-usb/dibusb-mb.c
··· 121 121 } 122 122 123 123 /* 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 - */ 167 - 168 - #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY 169 - /* 30 */ { USB_DEVICE(USB_VID_ANCHOR, USB_PID_ULTIMA_TVBOX_ANCHOR_COLD) }, 170 - #endif 171 - 172 - { } /* Terminating entry */ 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, 173 156 }; 157 + 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), 189 + #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY 190 + DVB_USB_DEV(ANCHOR, ULTIMA_TVBOX_ANCHOR_COLD), 191 + #endif 192 + { } 193 + }; 194 + 174 195 MODULE_DEVICE_TABLE (usb, dibusb_dib3000mb_table); 175 196 176 197 static struct dvb_usb_device_properties dibusb1_1_properties = { ··· 247 226 .num_device_descs = 9, 248 227 .devices = { 249 228 { "AVerMedia AverTV DVBT USB1.1", 250 - { &dibusb_dib3000mb_table[0], NULL }, 251 - { &dibusb_dib3000mb_table[1], NULL }, 229 + { &dibusb_dib3000mb_table[WIDEVIEW_DVBT_USB_COLD], NULL }, 230 + { &dibusb_dib3000mb_table[WIDEVIEW_DVBT_USB_WARM], NULL }, 252 231 }, 253 232 { "Compro Videomate DVB-U2000 - DVB-T USB1.1 (please confirm to linux-dvb)", 254 - { &dibusb_dib3000mb_table[2], &dibusb_dib3000mb_table[4], NULL}, 255 - { &dibusb_dib3000mb_table[3], NULL }, 233 + { &dibusb_dib3000mb_table[COMPRO_DVBU2000_COLD], &dibusb_dib3000mb_table[COMPRO_DVBU2000_UNK_COLD], NULL}, 234 + { &dibusb_dib3000mb_table[COMPRO_DVBU2000_WARM], NULL }, 256 235 }, 257 236 { "DiBcom USB1.1 DVB-T reference design (MOD3000)", 258 - { &dibusb_dib3000mb_table[5], NULL }, 259 - { &dibusb_dib3000mb_table[6], NULL }, 237 + { &dibusb_dib3000mb_table[DIBCOM_MOD3000_COLD], NULL }, 238 + { &dibusb_dib3000mb_table[DIBCOM_MOD3000_WARM], NULL }, 260 239 }, 261 240 { "KWorld V-Stream XPERT DTV - DVB-T USB1.1", 262 - { &dibusb_dib3000mb_table[7], NULL }, 263 - { &dibusb_dib3000mb_table[8], NULL }, 241 + { &dibusb_dib3000mb_table[EMPIA_VSTREAM_COLD], NULL }, 242 + { &dibusb_dib3000mb_table[EMPIA_VSTREAM_WARM], NULL }, 264 243 }, 265 244 { "Grandtec USB1.1 DVB-T", 266 - { &dibusb_dib3000mb_table[9], &dibusb_dib3000mb_table[11], NULL }, 267 - { &dibusb_dib3000mb_table[10], &dibusb_dib3000mb_table[12], NULL }, 245 + { &dibusb_dib3000mb_table[GRANDTEC_DVBT_USB_COLD], &dibusb_dib3000mb_table[GRANDTEC_MOD3000_COLD], NULL }, 246 + { &dibusb_dib3000mb_table[GRANDTEC_DVBT_USB_WARM], &dibusb_dib3000mb_table[GRANDTEC_MOD3000_WARM], NULL }, 268 247 }, 269 248 { "Unknown USB1.1 DVB-T device ???? please report the name to the author", 270 - { &dibusb_dib3000mb_table[13], NULL }, 271 - { &dibusb_dib3000mb_table[14], NULL }, 249 + { &dibusb_dib3000mb_table[UNK_HYPER_PALTEK_COLD], NULL }, 250 + { &dibusb_dib3000mb_table[UNK_HYPER_PALTEK_WARM], NULL }, 272 251 }, 273 252 { "TwinhanDTV USB-Ter USB1.1 / Magic Box I / HAMA USB1.1 DVB-T device", 274 - { &dibusb_dib3000mb_table[15], &dibusb_dib3000mb_table[17], NULL}, 275 - { &dibusb_dib3000mb_table[16], &dibusb_dib3000mb_table[18], NULL}, 253 + { &dibusb_dib3000mb_table[VISIONPLUS_VP7041_COLD], &dibusb_dib3000mb_table[TWINHAN_VP7041_COLD], NULL}, 254 + { &dibusb_dib3000mb_table[VISIONPLUS_VP7041_WARM], &dibusb_dib3000mb_table[TWINHAN_VP7041_WARM], NULL}, 276 255 }, 277 256 { "Artec T1 USB1.1 TVBOX with AN2135", 278 - { &dibusb_dib3000mb_table[19], NULL }, 279 - { &dibusb_dib3000mb_table[20], NULL }, 257 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_COLD], NULL }, 258 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_WARM], NULL }, 280 259 }, 281 260 { "VideoWalker DVB-T USB", 282 - { &dibusb_dib3000mb_table[25], NULL }, 283 - { &dibusb_dib3000mb_table[26], NULL }, 261 + { &dibusb_dib3000mb_table[KYE_DVB_T_COLD], NULL }, 262 + { &dibusb_dib3000mb_table[KYE_DVB_T_WARM], NULL }, 284 263 }, 285 264 } 286 265 }; ··· 340 319 #endif 341 320 .devices = { 342 321 { "Artec T1 USB1.1 TVBOX with AN2235", 343 - { &dibusb_dib3000mb_table[21], NULL }, 344 - { &dibusb_dib3000mb_table[22], NULL }, 322 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_AN2235_COLD], NULL }, 323 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_AN2235_WARM], NULL }, 345 324 }, 346 325 #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY 347 326 { "Artec T1 USB1.1 TVBOX with AN2235 (faulty USB IDs)", 348 - { &dibusb_dib3000mb_table[30], NULL }, 327 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_ANCHOR_COLD], NULL }, 349 328 { NULL }, 350 329 }, 351 330 { NULL }, ··· 405 384 .num_device_descs = 2, 406 385 .devices = { 407 386 { "KWorld/ADSTech Instant DVB-T USB2.0", 408 - { &dibusb_dib3000mb_table[23], NULL }, 409 - { &dibusb_dib3000mb_table[24], NULL }, 387 + { &dibusb_dib3000mb_table[ADSTECH_USB2_COLD], NULL }, 388 + { &dibusb_dib3000mb_table[ADSTECH_USB2_WARM], NULL }, 410 389 }, 411 390 { "KWorld Xpert DVB-T USB2.0", 412 - { &dibusb_dib3000mb_table[27], NULL }, 391 + { &dibusb_dib3000mb_table[KWORLD_VSTREAM_COLD], NULL }, 413 392 { NULL } 414 393 }, 415 394 { NULL }, ··· 467 446 .num_device_descs = 1, 468 447 .devices = { 469 448 { "Artec T1 USB2.0", 470 - { &dibusb_dib3000mb_table[28], NULL }, 471 - { &dibusb_dib3000mb_table[29], NULL }, 449 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_USB2_COLD], NULL }, 450 + { &dibusb_dib3000mb_table[ULTIMA_TVBOX_USB2_WARM], NULL }, 472 451 }, 473 452 { NULL }, 474 453 }
+8 -3
include/media/dvb-usb-ids.h
··· 133 133 #define USB_PID_AVERMEDIA_B835 0xb835 134 134 #define USB_PID_AVERMEDIA_DVBT_USB2_COLD 0xa800 135 135 #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 138 136 #define USB_PID_AVERMEDIA_EXPRESS 0xb568 139 137 #define USB_PID_AVERMEDIA_H335 0x0335 140 138 #define USB_PID_AVERMEDIA_HYBRID_ULTRA_USB_M039R 0x0039 ··· 228 230 #define USB_PID_ELGATO_EYETV_SAT 0x002a 229 231 #define USB_PID_ELGATO_EYETV_SAT_V2 0x0025 230 232 #define USB_PID_ELGATO_EYETV_SAT_V3 0x0036 233 + #define USB_PID_EMPIA_VSTREAM_COLD 0x17de 234 + #define USB_PID_EMPIA_VSTREAM_WARM 0x17df 231 235 #define USB_PID_EVOLVEO_XTRATV_STICK 0xa115 232 236 #define USB_PID_FREECOM_DVBT 0x0160 233 237 #define USB_PID_FREECOM_DVBT_2 0x0161 ··· 251 251 #define USB_PID_GRANDTEC_DVBT_USB2_WARM 0x0bc7 252 252 #define USB_PID_GRANDTEC_DVBT_USB_COLD 0x0fa0 253 253 #define USB_PID_GRANDTEC_DVBT_USB_WARM 0x0fa1 254 + #define USB_PID_GRANDTEC_MOD3000_COLD 0x0bb8 255 + #define USB_PID_GRANDTEC_MOD3000_WARM 0x0bb9 254 256 #define USB_PID_HAMA_DVBT_HYBRID 0x2758 255 257 #define USB_PID_HANFTEK_UMT_010_COLD 0x0001 256 258 #define USB_PID_HANFTEK_UMT_010_WARM 0x0015 ··· 287 285 #define USB_PID_KWORLD_UB383_T 0xe383 288 286 #define USB_PID_KWORLD_UB499_2T_T09 0xe409 289 287 #define USB_PID_KWORLD_VSTREAM_COLD 0x17de 290 - #define USB_PID_KWORLD_VSTREAM_WARM 0x17df 291 288 #define USB_PID_KYE_DVB_T_COLD 0x701e 292 289 #define USB_PID_KYE_DVB_T_WARM 0x701f 293 290 #define USB_PID_LITEON_DVB_T_COLD 0xf000 ··· 430 429 #define USB_PID_VISIONPLUS_VP7020_COLD 0x3203 431 430 #define USB_PID_VISIONPLUS_VP7020_WARM 0x3204 432 431 #define USB_PID_VISIONPLUS_VP7021_COLD 0x3207 432 + #define USB_PID_VISIONPLUS_VP7041_COLD 0x3201 433 + #define USB_PID_VISIONPLUS_VP7041_WARM 0x3202 433 434 #define USB_PID_VISIONPLUS_VP7045_COLD 0x3205 434 435 #define USB_PID_VISIONPLUS_VP7045_WARM 0x3206 435 436 #define USB_PID_WIDEVIEW_DTT200U_COLD 0x0201 436 437 #define USB_PID_WIDEVIEW_DTT200U_WARM 0x0301 438 + #define USB_PID_WIDEVIEW_DVBT_USB_COLD 0x0001 439 + #define USB_PID_WIDEVIEW_DVBT_USB_WARM 0x0002 437 440 #define USB_PID_WIDEVIEW_WT220U_COLD 0x0222 438 441 #define USB_PID_WIDEVIEW_WT220U_FC_COLD 0x0225 439 442 #define USB_PID_WIDEVIEW_WT220U_FC_WARM 0x0226