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

media: dvb-usb: dibusb-mc: 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/f1d4fa4960b709152ae693800c830e19a4bc1f48.1648499509.git.mchehab@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

+62 -42
+54 -34
drivers/media/usb/dvb-usb/dibusb-mc.c
··· 24 24 } 25 25 26 26 /* do not change the order of the ID table */ 27 - static struct usb_device_id dibusb_dib3000mc_table [] = { 28 - /* 00 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_COLD) }, 29 - /* 01 */ { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_MOD3001_WARM) }, 30 - /* 02 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_COLD) }, 31 - /* 03 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ULTIMA_TVBOX_USB2_WARM) }, // ( ? ) 32 - /* 04 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_COLD) }, 33 - /* 05 */ { USB_DEVICE(USB_VID_LITEON, USB_PID_LITEON_DVB_T_WARM) }, 34 - /* 06 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_COLD) }, 35 - /* 07 */ { USB_DEVICE(USB_VID_EMPIA, USB_PID_DIGIVOX_MINI_SL_WARM) }, 36 - /* 08 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_COLD) }, 37 - /* 09 */ { USB_DEVICE(USB_VID_GRANDTEC, USB_PID_GRANDTEC_DVBT_USB2_WARM) }, 38 - /* 10 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_COLD) }, 39 - /* 11 */ { USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC, USB_PID_ARTEC_T14_WARM) }, 40 - /* 12 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_COLD) }, 41 - /* 13 */ { USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV_DONGLE_WARM) }, 42 - /* 14 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD) }, 43 - /* 15 */ { USB_DEVICE(USB_VID_HUMAX_COEX, USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM) }, 44 - { } /* Terminating entry */ 27 + enum { 28 + DIBCOM_MOD3001_COLD, 29 + DIBCOM_MOD3001_WARM, 30 + ULTIMA_TVBOX_USB2_COLD, 31 + ULTIMA_TVBOX_USB2_WARM, 32 + LITEON_DVB_T_COLD, 33 + LITEON_DVB_T_WARM, 34 + EMPIA_DIGIVOX_MINI_SL_COLD, 35 + EMPIA_DIGIVOX_MINI_SL_WARM, 36 + GRANDTEC_DVBT_USB2_COLD, 37 + GRANDTEC_DVBT_USB2_WARM, 38 + ULTIMA_ARTEC_T14_COLD, 39 + ULTIMA_ARTEC_T14_WARM, 40 + LEADTEK_WINFAST_DTV_DONGLE_COLD, 41 + LEADTEK_WINFAST_DTV_DONGLE_WARM, 42 + HUMAX_DVB_T_STICK_HIGH_SPEED_COLD, 43 + HUMAX_DVB_T_STICK_HIGH_SPEED_WARM, 45 44 }; 45 + 46 + static struct usb_device_id dibusb_dib3000mc_table[] = { 47 + DVB_USB_DEV(DIBCOM, DIBCOM_MOD3001_COLD), 48 + DVB_USB_DEV(DIBCOM, DIBCOM_MOD3001_WARM), 49 + DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_COLD), 50 + DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_TVBOX_USB2_WARM), 51 + DVB_USB_DEV(LITEON, LITEON_DVB_T_COLD), 52 + DVB_USB_DEV(LITEON, LITEON_DVB_T_WARM), 53 + DVB_USB_DEV(EMPIA, EMPIA_DIGIVOX_MINI_SL_COLD), 54 + DVB_USB_DEV(EMPIA, EMPIA_DIGIVOX_MINI_SL_WARM), 55 + DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB2_COLD), 56 + DVB_USB_DEV(GRANDTEC, GRANDTEC_DVBT_USB2_WARM), 57 + DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_ARTEC_T14_COLD), 58 + DVB_USB_DEV(ULTIMA_ELECTRONIC, ULTIMA_ARTEC_T14_WARM), 59 + DVB_USB_DEV(LEADTEK, LEADTEK_WINFAST_DTV_DONGLE_COLD), 60 + DVB_USB_DEV(LEADTEK, LEADTEK_WINFAST_DTV_DONGLE_WARM), 61 + DVB_USB_DEV(HUMAX_COEX, HUMAX_DVB_T_STICK_HIGH_SPEED_COLD), 62 + DVB_USB_DEV(HUMAX_COEX, HUMAX_DVB_T_STICK_HIGH_SPEED_WARM), 63 + { } 64 + }; 65 + 46 66 MODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table); 47 67 48 68 static struct dvb_usb_device_properties dibusb_mc_properties = { ··· 115 95 .num_device_descs = 8, 116 96 .devices = { 117 97 { "DiBcom USB2.0 DVB-T reference design (MOD3000P)", 118 - { &dibusb_dib3000mc_table[0], NULL }, 119 - { &dibusb_dib3000mc_table[1], NULL }, 98 + { &dibusb_dib3000mc_table[DIBCOM_MOD3001_COLD], NULL }, 99 + { &dibusb_dib3000mc_table[DIBCOM_MOD3001_WARM], NULL }, 120 100 }, 121 101 { "Artec T1 USB2.0 TVBOX (please check the warm ID)", 122 - { &dibusb_dib3000mc_table[2], NULL }, 123 - { &dibusb_dib3000mc_table[3], NULL }, 102 + { &dibusb_dib3000mc_table[ULTIMA_TVBOX_USB2_COLD], NULL }, 103 + { &dibusb_dib3000mc_table[ULTIMA_TVBOX_USB2_WARM], NULL }, 124 104 }, 125 105 { "LITE-ON USB2.0 DVB-T Tuner", 126 106 /* Also rebranded as Intuix S800, Toshiba */ 127 - { &dibusb_dib3000mc_table[4], NULL }, 128 - { &dibusb_dib3000mc_table[5], NULL }, 107 + { &dibusb_dib3000mc_table[LITEON_DVB_T_COLD], NULL }, 108 + { &dibusb_dib3000mc_table[LITEON_DVB_T_WARM], NULL }, 129 109 }, 130 110 { "MSI Digivox Mini SL", 131 - { &dibusb_dib3000mc_table[6], NULL }, 132 - { &dibusb_dib3000mc_table[7], NULL }, 111 + { &dibusb_dib3000mc_table[EMPIA_DIGIVOX_MINI_SL_COLD], NULL }, 112 + { &dibusb_dib3000mc_table[EMPIA_DIGIVOX_MINI_SL_WARM], NULL }, 133 113 }, 134 114 { "GRAND - USB2.0 DVB-T adapter", 135 - { &dibusb_dib3000mc_table[8], NULL }, 136 - { &dibusb_dib3000mc_table[9], NULL }, 115 + { &dibusb_dib3000mc_table[GRANDTEC_DVBT_USB2_COLD], NULL }, 116 + { &dibusb_dib3000mc_table[GRANDTEC_DVBT_USB2_WARM], NULL }, 137 117 }, 138 118 { "Artec T14 - USB2.0 DVB-T", 139 - { &dibusb_dib3000mc_table[10], NULL }, 140 - { &dibusb_dib3000mc_table[11], NULL }, 119 + { &dibusb_dib3000mc_table[ULTIMA_ARTEC_T14_COLD], NULL }, 120 + { &dibusb_dib3000mc_table[ULTIMA_ARTEC_T14_WARM], NULL }, 141 121 }, 142 122 { "Leadtek - USB2.0 Winfast DTV dongle", 143 - { &dibusb_dib3000mc_table[12], NULL }, 144 - { &dibusb_dib3000mc_table[13], NULL }, 123 + { &dibusb_dib3000mc_table[LEADTEK_WINFAST_DTV_DONGLE_COLD], NULL }, 124 + { &dibusb_dib3000mc_table[LEADTEK_WINFAST_DTV_DONGLE_WARM], NULL }, 145 125 }, 146 126 { "Humax/Coex DVB-T USB Stick 2.0 High Speed", 147 - { &dibusb_dib3000mc_table[14], NULL }, 148 - { &dibusb_dib3000mc_table[15], NULL }, 127 + { &dibusb_dib3000mc_table[HUMAX_DVB_T_STICK_HIGH_SPEED_COLD], NULL }, 128 + { &dibusb_dib3000mc_table[HUMAX_DVB_T_STICK_HIGH_SPEED_WARM], NULL }, 149 129 }, 150 130 { NULL }, 151 131 }
+8 -8
include/media/dvb-usb-ids.h
··· 111 111 #define USB_PID_ANUBIS_MSI_DIGI_VOX_MINI_II 0x1513 112 112 #define USB_PID_ANYSEE 0x861f 113 113 #define USB_PID_ARTEC_T14BR 0x810f 114 - #define USB_PID_ARTEC_T14_COLD 0x810b 115 - #define USB_PID_ARTEC_T14_WARM 0x810c 116 114 #define USB_PID_ASUS_U3000 0x171f 117 115 #define USB_PID_ASUS_U3000H 0x1736 118 116 #define USB_PID_ASUS_U3100 0x173f ··· 193 195 #define USB_PID_DIBCOM_TFE8096P 0x1f9C 194 196 #define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD 0xdb54 195 197 #define USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM 0xdb55 196 - #define USB_PID_DIGIVOX_MINI_SL_COLD 0xe360 197 - #define USB_PID_DIGIVOX_MINI_SL_WARM 0xe361 198 198 #define USB_PID_DPOSH_M9206_COLD 0x9206 199 199 #define USB_PID_DPOSH_M9206_WARM 0xa090 200 - #define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD 0x5000 201 - #define USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM 0x5001 202 200 #define USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD 0xdb50 203 201 #define USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM 0xdb51 204 202 #define USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD 0xdb58 ··· 222 228 #define USB_PID_ELGATO_EYETV_SAT 0x002a 223 229 #define USB_PID_ELGATO_EYETV_SAT_V2 0x0025 224 230 #define USB_PID_ELGATO_EYETV_SAT_V3 0x0036 231 + #define USB_PID_EMPIA_DIGIVOX_MINI_SL_COLD 0xe360 232 + #define USB_PID_EMPIA_DIGIVOX_MINI_SL_WARM 0xe361 225 233 #define USB_PID_EMPIA_VSTREAM_COLD 0x17de 226 234 #define USB_PID_EMPIA_VSTREAM_WARM 0x17df 227 235 #define USB_PID_EVOLVEO_XTRATV_STICK 0xa115 ··· 266 270 #define USB_PID_HAUPPAUGE_TIGER_ATSC_B210 0xb210 267 271 #define USB_PID_HAUPPAUGE_WINTV_NOVA_T_USB2_COLD 0x9300 268 272 #define USB_PID_HAUPPAUGE_WINTV_NOVA_T_USB2_WARM 0x9301 273 + #define USB_PID_HUMAX_DVB_T_STICK_HIGH_SPEED_COLD 0x5000 274 + #define USB_PID_HUMAX_DVB_T_STICK_HIGH_SPEED_WARM 0x5001 269 275 #define USB_PID_INTEL_CE9500 0x9500 270 276 #define USB_PID_ITETECH_IT9135 0x9135 271 277 #define USB_PID_ITETECH_IT9135_9005 0x9005 ··· 287 289 #define USB_PID_KWORLD_VSTREAM_COLD 0x17de 288 290 #define USB_PID_KYE_DVB_T_COLD 0x701e 289 291 #define USB_PID_KYE_DVB_T_WARM 0x701f 292 + #define USB_PID_LEADTEK_WINFAST_DTV_DONGLE_COLD 0x6025 293 + #define USB_PID_LEADTEK_WINFAST_DTV_DONGLE_WARM 0x6026 290 294 #define USB_PID_LITEON_DVB_T_COLD 0xf000 291 295 #define USB_PID_LITEON_DVB_T_WARM 0xf001 292 296 #define USB_PID_MEDION_MD95700 0x0932 ··· 412 412 #define USB_PID_TWINHAN_VP7021_WARM 0x3208 413 413 #define USB_PID_TWINHAN_VP7041_COLD 0x3201 414 414 #define USB_PID_TWINHAN_VP7041_WARM 0x3202 415 + #define USB_PID_ULTIMA_ARTEC_T14_COLD 0x810b 416 + #define USB_PID_ULTIMA_ARTEC_T14_WARM 0x810c 415 417 #define USB_PID_ULTIMA_TVBOX_AN2235_COLD 0x8107 416 418 #define USB_PID_ULTIMA_TVBOX_AN2235_WARM 0x8108 417 419 #define USB_PID_ULTIMA_TVBOX_ANCHOR_COLD 0x2235 ··· 449 447 #define USB_PID_WIDEVIEW_WT220U_ZL0353_WARM 0x022b 450 448 #define USB_PID_WINFAST_DTV2000DS 0x6a04 451 449 #define USB_PID_WINFAST_DTV2000DS_PLUS 0x6f12 452 - #define USB_PID_WINFAST_DTV_DONGLE_COLD 0x6025 453 450 #define USB_PID_WINFAST_DTV_DONGLE_GOLD 0x6029 454 451 #define USB_PID_WINFAST_DTV_DONGLE_H 0x60f6 455 452 #define USB_PID_WINFAST_DTV_DONGLE_MINID 0x6f0f 456 453 #define USB_PID_WINFAST_DTV_DONGLE_STK7700P 0x6f00 457 454 #define USB_PID_WINFAST_DTV_DONGLE_STK7700P_2 0x6f01 458 - #define USB_PID_WINFAST_DTV_DONGLE_WARM 0x6026 459 455 #define USB_PID_WINTV_SOLOHD 0x0264 460 456 #define USB_PID_WINTV_SOLOHD_2 0x8268 461 457 #define USB_PID_XBOX_ONE_TUNER 0x02d5