Message ID | 20150216153307.19963.61947.stgit@warthog.procyon.org.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Em Mon, 16 Feb 2015 15:33:07 +0000 David Howells <dhowells@redhat.com> escreveu: > Use enum to represent table offsets rather than hard-coding numbers to avoid > problems with the numbers becoming out of sync with the table. > > Signed-off-by: David Howells <dhowells@redhat.com> > --- > > drivers/media/usb/dvb-usb/cxusb.c | 115 +++++++++++++++++++++++-------------- > 1 file changed, 71 insertions(+), 44 deletions(-) > > diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c > index f327c49..5bb1c5c 100644 > --- a/drivers/media/usb/dvb-usb/cxusb.c > +++ b/drivers/media/usb/dvb-usb/cxusb.c > @@ -1516,28 +1516,55 @@ static void cxusb_disconnect(struct usb_interface *intf) > dvb_usb_device_exit(intf); > } > > -static struct usb_device_id cxusb_table [] = { > - { USB_DEVICE(USB_VID_MEDION, USB_PID_MEDION_MD95700) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM) }, > - { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_A868R) }, > - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2) }, > - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB) }, > - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689) }, > - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230) }, > +enum cxusb_table_index { > + ix_USB_PID_MEDION_MD95700, > + ix_USB_PID_DVICO_BLUEBIRD_LG064F_COLD, > + ix_USB_PID_DVICO_BLUEBIRD_LG064F_WARM, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM, > + ix_USB_PID_DVICO_BLUEBIRD_LGZ201_COLD, > + ix_USB_PID_DVICO_BLUEBIRD_LGZ201_WARM, > + ix_USB_PID_DVICO_BLUEBIRD_TH7579_COLD, > + ix_USB_PID_DVICO_BLUEBIRD_TH7579_WARM, > + ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD, > + ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_4, > + ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2, > + ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM, > + ix_USB_PID_AVERMEDIA_VOLAR_A868R, > + ix_USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2, > + ix_USB_PID_CONEXANT_D680_DMB, > + ix_USB_PID_MYGICA_D689, > + ix_USB_PID_MYGICA_T230, I would do a s/ix_USB_PID_// in the above, in order to simplify the namespace and to avoid giving the false impression that those are vendor IDs. If you look below on your patch, even you forgot to add a "ix_" prefix into one of the entires ;) Just calling MEDION_MD95700..MYGICA_T230 would be enough and shorter. > + NR__cxusb_table_index > +}; > + > +static struct usb_device_id cxusb_table [NR__cxusb_table_index + 1] = { > +#define _(vend, prod) [ix_##prod] = { vend, prod } Of course, if you change s/ix_USB_PID_//, here, you'll need to change the macro to: #define _(vend, prod) [prod] = { vend, USB_PID_##prod } And maybe add some comment. Yet, I think that the best would be to just remove the macro, an just use: static struct usb_device_id cxusb_table [] = { [VID_MEDION] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, ... } > + _(USB_VID_MEDION, USB_PID_MEDION_MD95700), // 0 Please don't use c99 comments. Also, I don't think that the comments would help, as the entries on this table doesn't need to follow the same order as defined at the enum. > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_COLD), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_WARM), // 2 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM), // 4 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_COLD), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_WARM), // 6 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_COLD), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_WARM), // 8 > + _(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD), > + _(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM), // 10 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM), // 12 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4), > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2), // 14 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM), > + _(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_A868R), // 16 > + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2), > + _(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB), // 18 > + _(USB_VID_CONEXANT, USB_PID_MYGICA_D689), > + _(USB_VID_CONEXANT, USB_PID_MYGICA_T230), // 20 > +#undef _ > {} /* Terminating entry */ > }; > MODULE_DEVICE_TABLE (usb, cxusb_table); > @@ -1581,7 +1608,7 @@ static struct dvb_usb_device_properties cxusb_medion_properties = { > .devices = { > { "Medion MD95700 (MDUSBTV-HYBRID)", > { NULL }, > - { &cxusb_table[0], NULL }, > + { &cxusb_table[ix_USB_PID_MEDION_MD95700], NULL }, > }, > } > }; > @@ -1637,8 +1664,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { > .num_device_descs = 1, > .devices = { > { "DViCO FusionHDTV5 USB Gold", > - { &cxusb_table[1], NULL }, > - { &cxusb_table[2], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LG064F_COLD], NULL }, > + { &cxusb_table[USB_PID_DVICO_BLUEBIRD_LG064F_WARM], NULL }, Here, you forgot the "ix_" prefix. > }, > } > }; > @@ -1693,16 +1720,16 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { > .num_device_descs = 3, > .devices = { > { "DViCO FusionHDTV DVB-T Dual USB", > - { &cxusb_table[3], NULL }, > - { &cxusb_table[4], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM], NULL }, > }, > { "DigitalNow DVB-T Dual USB", > - { &cxusb_table[9], NULL }, > - { &cxusb_table[10], NULL }, > + { &cxusb_table[ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD], NULL }, > + { &cxusb_table[ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM], NULL }, > }, > { "DViCO FusionHDTV DVB-T Dual Digital 2", > - { &cxusb_table[11], NULL }, > - { &cxusb_table[12], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM], NULL }, > }, > } > }; > @@ -1756,8 +1783,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { > .num_device_descs = 1, > .devices = { > { "DViCO FusionHDTV DVB-T USB (LGZ201)", > - { &cxusb_table[5], NULL }, > - { &cxusb_table[6], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LGZ201_COLD], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LGZ201_WARM], NULL }, > }, > } > }; > @@ -1812,8 +1839,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { > .num_device_descs = 1, > .devices = { > { "DViCO FusionHDTV DVB-T USB (TH7579)", > - { &cxusb_table[7], NULL }, > - { &cxusb_table[8], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_TH7579_COLD], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_TH7579_WARM], NULL }, > }, > } > }; > @@ -1865,7 +1892,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { > .devices = { > { "DViCO FusionHDTV DVB-T Dual Digital 4", > { NULL }, > - { &cxusb_table[13], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_4], NULL }, > }, > } > }; > @@ -1918,7 +1945,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { > .devices = { > { "DViCO FusionHDTV DVB-T NANO2", > { NULL }, > - { &cxusb_table[14], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2], NULL }, > }, > } > }; > @@ -1972,8 +1999,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope > .num_device_descs = 1, > .devices = { > { "DViCO FusionHDTV DVB-T NANO2 w/o firmware", > - { &cxusb_table[14], NULL }, > - { &cxusb_table[15], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM], NULL }, > }, > } > }; > @@ -2017,7 +2044,7 @@ static struct dvb_usb_device_properties cxusb_aver_a868r_properties = { > .devices = { > { "AVerMedia AVerTVHD Volar (A868R)", > { NULL }, > - { &cxusb_table[16], NULL }, > + { &cxusb_table[ix_USB_PID_AVERMEDIA_VOLAR_A868R], NULL }, > }, > } > }; > @@ -2071,7 +2098,7 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { > .devices = { > { "DViCO FusionHDTV DVB-T Dual Digital 4 (rev 2)", > { NULL }, > - { &cxusb_table[17], NULL }, > + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2], NULL }, > }, > } > }; > @@ -2125,7 +2152,7 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { > { > "Conexant DMB-TH Stick", > { NULL }, > - { &cxusb_table[18], NULL }, > + { &cxusb_table[ix_USB_PID_CONEXANT_D680_DMB], NULL }, > }, > } > }; > @@ -2179,7 +2206,7 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { > { > "Mygica D689 DMB-TH", > { NULL }, > - { &cxusb_table[19], NULL }, > + { &cxusb_table[ix_USB_PID_MYGICA_D689], NULL }, > }, > } > }; > @@ -2232,7 +2259,7 @@ static struct dvb_usb_device_properties cxusb_mygica_t230_properties = { > { > "Mygica T230 DVB-T/T2/C", > { NULL }, > - { &cxusb_table[20], NULL }, > + { &cxusb_table[ix_USB_PID_MYGICA_T230], NULL }, > }, > } > }; > > -- > To unsubscribe from this list: send the line "unsubscribe linux-media" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Mauro Carvalho Chehab <mchehab@osg.samsung.com> wrote: > I would do a s/ix_USB_PID_// in the above, in order to simplify the > namespace and to avoid giving the false impression that those are vendor > IDs. Okay. > If you look below on your patch, even you forgot to add a "ix_" prefix into > one of the entires ;) Bah. I realised I'd forgotten and went back to try and fix them up. > Just calling MEDION_MD95700..MYGICA_T230 would be enough and shorter. True. > static struct usb_device_id cxusb_table [] = { > [VID_MEDION] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, > ... That should really be: [VID_MEDION_MD95700] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, since the index number is the model, not the vendor, which brings me to: [DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM] = {USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM}, which would be excessively long. > > + _(USB_VID_MEDION, USB_PID_MEDION_MD95700), // 0 > > Please don't use c99 comments. Also, I don't think that the comments would > help, as the entries on this table doesn't need to follow the same order > as defined at the enum. Sorry, yes, I meant those as guides purely for when I was converting numbers to symbols. David -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Howells <dhowells@redhat.com> wrote: > That should really be: > > [VID_MEDION_MD95700] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, > > since the index number is the model, not the vendor, which brings me to: > > [DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM] = {USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM}, > > which would be excessively long. In fact, they're both wrong, since there needs to be a USB_DEVICE() wrapper. David -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Em Tue, 17 Feb 2015 13:45:50 +0000 David Howells <dhowells@redhat.com> escreveu: > Mauro Carvalho Chehab <mchehab@osg.samsung.com> wrote: > > > I would do a s/ix_USB_PID_// in the above, in order to simplify the > > namespace and to avoid giving the false impression that those are vendor > > IDs. > > Okay. > > > If you look below on your patch, even you forgot to add a "ix_" prefix into > > one of the entires ;) > > Bah. I realised I'd forgotten and went back to try and fix them up. > > > Just calling MEDION_MD95700..MYGICA_T230 would be enough and shorter. > > True. > > > static struct usb_device_id cxusb_table [] = { > > [VID_MEDION] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, > > ... > > That should really be: > > [VID_MEDION_MD95700] = {USB_VID_MEDION, USB_PID_MEDION_MD95700}, Actually, MEDION_MD95700 :) > > since the index number is the model, not the vendor, which brings me to: > > [DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM] = {USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM}, > > which would be excessively long. True. Perhaps: [DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM] = { USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM }, Would be better, as it follows better the CodingStyle. > > > > + _(USB_VID_MEDION, USB_PID_MEDION_MD95700), // 0 > > > > Please don't use c99 comments. Also, I don't think that the comments would > > help, as the entries on this table doesn't need to follow the same order > > as defined at the enum. > > Sorry, yes, I meant those as guides purely for when I was converting numbers > to symbols. > > David Thanks! Mauro -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c index f327c49..5bb1c5c 100644 --- a/drivers/media/usb/dvb-usb/cxusb.c +++ b/drivers/media/usb/dvb-usb/cxusb.c @@ -1516,28 +1516,55 @@ static void cxusb_disconnect(struct usb_interface *intf) dvb_usb_device_exit(intf); } -static struct usb_device_id cxusb_table [] = { - { USB_DEVICE(USB_VID_MEDION, USB_PID_MEDION_MD95700) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM) }, - { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_A868R) }, - { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2) }, - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB) }, - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689) }, - { USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230) }, +enum cxusb_table_index { + ix_USB_PID_MEDION_MD95700, + ix_USB_PID_DVICO_BLUEBIRD_LG064F_COLD, + ix_USB_PID_DVICO_BLUEBIRD_LG064F_WARM, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM, + ix_USB_PID_DVICO_BLUEBIRD_LGZ201_COLD, + ix_USB_PID_DVICO_BLUEBIRD_LGZ201_WARM, + ix_USB_PID_DVICO_BLUEBIRD_TH7579_COLD, + ix_USB_PID_DVICO_BLUEBIRD_TH7579_WARM, + ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD, + ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_4, + ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2, + ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM, + ix_USB_PID_AVERMEDIA_VOLAR_A868R, + ix_USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2, + ix_USB_PID_CONEXANT_D680_DMB, + ix_USB_PID_MYGICA_D689, + ix_USB_PID_MYGICA_T230, + NR__cxusb_table_index +}; + +static struct usb_device_id cxusb_table [NR__cxusb_table_index + 1] = { +#define _(vend, prod) [ix_##prod] = { vend, prod } + _(USB_VID_MEDION, USB_PID_MEDION_MD95700), // 0 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_COLD), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LG064F_WARM), // 2 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM), // 4 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_COLD), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_LGZ201_WARM), // 6 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_COLD), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_TH7579_WARM), // 8 + _(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD), + _(USB_VID_DVICO, USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM), // 10 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM), // 12 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4), + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2), // 14 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM), + _(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_A868R), // 16 + _(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2), + _(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB), // 18 + _(USB_VID_CONEXANT, USB_PID_MYGICA_D689), + _(USB_VID_CONEXANT, USB_PID_MYGICA_T230), // 20 +#undef _ {} /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, cxusb_table); @@ -1581,7 +1608,7 @@ static struct dvb_usb_device_properties cxusb_medion_properties = { .devices = { { "Medion MD95700 (MDUSBTV-HYBRID)", { NULL }, - { &cxusb_table[0], NULL }, + { &cxusb_table[ix_USB_PID_MEDION_MD95700], NULL }, }, } }; @@ -1637,8 +1664,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgh064f_properties = { .num_device_descs = 1, .devices = { { "DViCO FusionHDTV5 USB Gold", - { &cxusb_table[1], NULL }, - { &cxusb_table[2], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LG064F_COLD], NULL }, + { &cxusb_table[USB_PID_DVICO_BLUEBIRD_LG064F_WARM], NULL }, }, } }; @@ -1693,16 +1720,16 @@ static struct dvb_usb_device_properties cxusb_bluebird_dee1601_properties = { .num_device_descs = 3, .devices = { { "DViCO FusionHDTV DVB-T Dual USB", - { &cxusb_table[3], NULL }, - { &cxusb_table[4], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_COLD], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_1_WARM], NULL }, }, { "DigitalNow DVB-T Dual USB", - { &cxusb_table[9], NULL }, - { &cxusb_table[10], NULL }, + { &cxusb_table[ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_COLD], NULL }, + { &cxusb_table[ix_USB_PID_DIGITALNOW_BLUEBIRD_DUAL_1_WARM], NULL }, }, { "DViCO FusionHDTV DVB-T Dual Digital 2", - { &cxusb_table[11], NULL }, - { &cxusb_table[12], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_COLD], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_2_WARM], NULL }, }, } }; @@ -1756,8 +1783,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_lgz201_properties = { .num_device_descs = 1, .devices = { { "DViCO FusionHDTV DVB-T USB (LGZ201)", - { &cxusb_table[5], NULL }, - { &cxusb_table[6], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LGZ201_COLD], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_LGZ201_WARM], NULL }, }, } }; @@ -1812,8 +1839,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_dtt7579_properties = { .num_device_descs = 1, .devices = { { "DViCO FusionHDTV DVB-T USB (TH7579)", - { &cxusb_table[7], NULL }, - { &cxusb_table[8], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_TH7579_COLD], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_TH7579_WARM], NULL }, }, } }; @@ -1865,7 +1892,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_dualdig4_properties = { .devices = { { "DViCO FusionHDTV DVB-T Dual Digital 4", { NULL }, - { &cxusb_table[13], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_4], NULL }, }, } }; @@ -1918,7 +1945,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_properties = { .devices = { { "DViCO FusionHDTV DVB-T NANO2", { NULL }, - { &cxusb_table[14], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2], NULL }, }, } }; @@ -1972,8 +1999,8 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_prope .num_device_descs = 1, .devices = { { "DViCO FusionHDTV DVB-T NANO2 w/o firmware", - { &cxusb_table[14], NULL }, - { &cxusb_table[15], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DVB_T_NANO_2_NFW_WARM], NULL }, }, } }; @@ -2017,7 +2044,7 @@ static struct dvb_usb_device_properties cxusb_aver_a868r_properties = { .devices = { { "AVerMedia AVerTVHD Volar (A868R)", { NULL }, - { &cxusb_table[16], NULL }, + { &cxusb_table[ix_USB_PID_AVERMEDIA_VOLAR_A868R], NULL }, }, } }; @@ -2071,7 +2098,7 @@ struct dvb_usb_device_properties cxusb_bluebird_dualdig4_rev2_properties = { .devices = { { "DViCO FusionHDTV DVB-T Dual Digital 4 (rev 2)", { NULL }, - { &cxusb_table[17], NULL }, + { &cxusb_table[ix_USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2], NULL }, }, } }; @@ -2125,7 +2152,7 @@ static struct dvb_usb_device_properties cxusb_d680_dmb_properties = { { "Conexant DMB-TH Stick", { NULL }, - { &cxusb_table[18], NULL }, + { &cxusb_table[ix_USB_PID_CONEXANT_D680_DMB], NULL }, }, } }; @@ -2179,7 +2206,7 @@ static struct dvb_usb_device_properties cxusb_mygica_d689_properties = { { "Mygica D689 DMB-TH", { NULL }, - { &cxusb_table[19], NULL }, + { &cxusb_table[ix_USB_PID_MYGICA_D689], NULL }, }, } }; @@ -2232,7 +2259,7 @@ static struct dvb_usb_device_properties cxusb_mygica_t230_properties = { { "Mygica T230 DVB-T/T2/C", { NULL }, - { &cxusb_table[20], NULL }, + { &cxusb_table[ix_USB_PID_MYGICA_T230], NULL }, }, } };
Use enum to represent table offsets rather than hard-coding numbers to avoid problems with the numbers becoming out of sync with the table. Signed-off-by: David Howells <dhowells@redhat.com> --- drivers/media/usb/dvb-usb/cxusb.c | 115 +++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 44 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html