linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: "Benjamin Stürz" <benni@stuerz.xyz>
Cc: Joe Perches <joe@perches.com>,
	linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
	Larry Finger <Larry.Finger@lwfinger.net>
Subject: Re: [PATCH 16/22 v3] dvb-usb: Replace comments with C99 initializers
Date: Mon, 28 Mar 2022 22:52:21 +0200	[thread overview]
Message-ID: <20220328225221.6543f8f8@coco.lan> (raw)
In-Reply-To: <66a2f60d-a23b-b62f-d91a-64538388ae65@stuerz.xyz>

Em Mon, 28 Mar 2022 20:08:30 +0200
Benjamin Stürz <benni@stuerz.xyz> escreveu:

> Replace comments telling the index with explicit designators and make
> the array entries more compact to aid in better readability.

Just using designated initializers is not enough for dvb-usb, as the
big issue there is really the fact that the dvb-usb struct needs to point
to the entries inside the USB ID table.

Also, your patch touches only two of the several dvb-usb drivers. So,
I ended taking some time and writing a series:

	https://lore.kernel.org/linux-media/cover.1648499509.git.mchehab@kernel.org/T/#t

Giving you credits for suggesting it at the dibusb-* patches.

> It was suggested to make the arrays const, but that didn't compile.

Yeah, the struct that points to it is not marked as const, as there
are a couple of drivers that actually change some things there.

As I said, the real fix would be to just migrate the drivers from
the legacy dvb-usb core to the newer dvb-usb-v2.

But, at least with the newer series, the risk of pointing to the
wrong entry is reduced.

Regards,
Mauro

> 
> Signed-off-by: Benjamin Stürz <benni@stuerz.xyz>
> ---
>  drivers/media/usb/dvb-usb/dibusb-mb.c | 69 ++++++++++++++-------------
>  drivers/media/usb/dvb-usb/dibusb-mc.c | 39 ++++++++-------
>  2 files changed, 59 insertions(+), 49 deletions(-)
> 
> diff --git a/drivers/media/usb/dvb-usb/dibusb-mb.c
> b/drivers/media/usb/dvb-usb/dibusb-mb.c
> index e9dc27f73970..ec1fb30c5665 100644
> --- a/drivers/media/usb/dvb-usb/dibusb-mb.c
> +++ b/drivers/media/usb/dvb-usb/dibusb-mb.c
> @@ -120,42 +120,45 @@ static int dibusb_probe(struct usb_interface *intf,
>  	return -EINVAL;
>  }
> 
> +#define DIB_DEVICE(vid, pid)	\
> +	{ USB_DEVICE(USB_VID_##vid, USB_PID_##pid) }
> +
>  /* do not change the order of the ID table */
>  static struct usb_device_id dibusb_dib3000mb_table [] = {
> -/* 00 */	{ USB_DEVICE(USB_VID_WIDEVIEW,	
> USB_PID_AVERMEDIA_DVBT_USB_COLD) },
> -/* 01 */	{ USB_DEVICE(USB_VID_WIDEVIEW,	
> USB_PID_AVERMEDIA_DVBT_USB_WARM) },
> -/* 02 */	{ USB_DEVICE(USB_VID_COMPRO,		USB_PID_COMPRO_DVBU2000_COLD) },
> -/* 03 */	{ USB_DEVICE(USB_VID_COMPRO,		USB_PID_COMPRO_DVBU2000_WARM) },
> -/* 04 */	{ USB_DEVICE(USB_VID_COMPRO_UNK,
> USB_PID_COMPRO_DVBU2000_UNK_COLD) },
> -/* 05 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3000_COLD) },
> -/* 06 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3000_WARM) },
> -/* 07 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_KWORLD_VSTREAM_COLD) },
> -/* 08 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_KWORLD_VSTREAM_WARM) },
> -/* 09 */	{ USB_DEVICE(USB_VID_GRANDTEC,		USB_PID_GRANDTEC_DVBT_USB_COLD) },
> -/* 10 */	{ USB_DEVICE(USB_VID_GRANDTEC,		USB_PID_GRANDTEC_DVBT_USB_WARM) },
> -/* 11 */	{ USB_DEVICE(USB_VID_GRANDTEC,		USB_PID_DIBCOM_MOD3000_COLD) },
> -/* 12 */	{ USB_DEVICE(USB_VID_GRANDTEC,		USB_PID_DIBCOM_MOD3000_WARM) },
> -/* 13 */	{ USB_DEVICE(USB_VID_HYPER_PALTEK,
> USB_PID_UNK_HYPER_PALTEK_COLD) },
> -/* 14 */	{ USB_DEVICE(USB_VID_HYPER_PALTEK,
> USB_PID_UNK_HYPER_PALTEK_WARM) },
> -/* 15 */	{ USB_DEVICE(USB_VID_VISIONPLUS,	USB_PID_TWINHAN_VP7041_COLD) },
> -/* 16 */	{ USB_DEVICE(USB_VID_VISIONPLUS,	USB_PID_TWINHAN_VP7041_WARM) },
> -/* 17 */	{ USB_DEVICE(USB_VID_TWINHAN,		USB_PID_TWINHAN_VP7041_COLD) },
> -/* 18 */	{ USB_DEVICE(USB_VID_TWINHAN,		USB_PID_TWINHAN_VP7041_WARM) },
> -/* 19 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_COLD) },
> -/* 20 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_WARM) },
> -/* 21 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_AN2235_COLD) },
> -/* 22 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_AN2235_WARM) },
> -/* 23 */	{ USB_DEVICE(USB_VID_ADSTECH,		USB_PID_ADSTECH_USB2_COLD) },
> +	[0]  = DIB_DEVICE(WIDEVIEW,		AVERMEDIA_DVBT_USB_COLD),
> +	[1]  = DIB_DEVICE(WIDEVIEW,		AVERMEDIA_DVBT_USB_WARM),
> +	[2]  = DIB_DEVICE(COMPRO,		COMPRO_DVBU2000_COLD),
> +	[3]  = DIB_DEVICE(COMPRO,		COMPRO_DVBU2000_WARM),
> +	[4]  = DIB_DEVICE(COMPRO_UNK,		COMPRO_DVBU2000_UNK_COLD),
> +	[5]  = DIB_DEVICE(DIBCOM,		DIBCOM_MOD3000_COLD),
> +	[6]  = DIB_DEVICE(DIBCOM,		DIBCOM_MOD3000_WARM),
> +	[7]  = DIB_DEVICE(EMPIA,		KWORLD_VSTREAM_COLD),
> +	[8]  = DIB_DEVICE(EMPIA,		KWORLD_VSTREAM_WARM),
> +	[9]  = DIB_DEVICE(GRANDTEC,		GRANDTEC_DVBT_USB_COLD),
> +	[10] = DIB_DEVICE(GRANDTEC,		GRANDTEC_DVBT_USB_WARM),
> +	[11] = DIB_DEVICE(GRANDTEC,		DIBCOM_MOD3000_COLD),
> +	[12] = DIB_DEVICE(GRANDTEC,		DIBCOM_MOD3000_WARM),
> +	[13] = DIB_DEVICE(HYPER_PALTEK,		UNK_HYPER_PALTEK_COLD),
> +	[14] = DIB_DEVICE(HYPER_PALTEK,		UNK_HYPER_PALTEK_WARM),
> +	[15] = DIB_DEVICE(VISIONPLUS,		TWINHAN_VP7041_COLD),
> +	[16] = DIB_DEVICE(VISIONPLUS,		TWINHAN_VP7041_WARM),
> +	[17] = DIB_DEVICE(TWINHAN,		TWINHAN_VP7041_COLD),
> +	[18] = DIB_DEVICE(TWINHAN,		TWINHAN_VP7041_WARM),
> +	[19] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_COLD),
> +	[20] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_WARM),
> +	[21] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_AN2235_COLD),
> +	[22] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_AN2235_WARM),
> +	[23] = DIB_DEVICE(ADSTECH,		ADSTECH_USB2_COLD),
> 
>  /* device ID with default DIBUSB2_0-firmware and with the hacked
> firmware */
> -/* 24 */	{ USB_DEVICE(USB_VID_ADSTECH,		USB_PID_ADSTECH_USB2_WARM) },
> -/* 25 */	{ USB_DEVICE(USB_VID_KYE,		USB_PID_KYE_DVB_T_COLD) },
> -/* 26 */	{ USB_DEVICE(USB_VID_KYE,		USB_PID_KYE_DVB_T_WARM) },
> +	[24] = DIB_DEVICE(ADSTECH,		ADSTECH_USB2_WARM),
> +	[25] = DIB_DEVICE(KYE,			KYE_DVB_T_COLD),
> +	[26] = DIB_DEVICE(KYE,			KYE_DVB_T_WARM),
> 
> -/* 27 */	{ USB_DEVICE(USB_VID_KWORLD,		USB_PID_KWORLD_VSTREAM_COLD) },
> +	[27] = DIB_DEVICE(KWORLD,		KWORLD_VSTREAM_COLD),
> 
> -/* 28 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_USB2_COLD) },
> -/* 29 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_USB2_WARM) },
> +	[28] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_USB2_COLD),
> +	[29] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_USB2_WARM),
> 
>  /*
>   * XXX: As Artec just 'forgot' to program the EEPROM on some Artec T1
> devices
> @@ -166,13 +169,15 @@ static struct usb_device_id dibusb_dib3000mb_table
> [] = {
>   */
> 
>  #ifdef CONFIG_DVB_USB_DIBUSB_MB_FAULTY
> -/* 30 */	{ USB_DEVICE(USB_VID_ANCHOR,		USB_PID_ULTIMA_TVBOX_ANCHOR_COLD) },
> +	[30] = DIB_DEVICE(ANCHOR,		ULTIMA_TVBOX_ANCHOR_COLD),
>  #endif
> 
> -			{ }		/* Terminating entry */
> +	{ }		/* Terminating entry */
>  };
>  MODULE_DEVICE_TABLE (usb, dibusb_dib3000mb_table);
> 
> +#undef DIB_DEVICE
> +
>  static struct dvb_usb_device_properties dibusb1_1_properties = {
>  	.caps =  DVB_USB_IS_AN_I2C_ADAPTER,
> 
> diff --git a/drivers/media/usb/dvb-usb/dibusb-mc.c
> b/drivers/media/usb/dvb-usb/dibusb-mc.c
> index e2689977c8c8..703c2a7df369 100644
> --- a/drivers/media/usb/dvb-usb/dibusb-mc.c
> +++ b/drivers/media/usb/dvb-usb/dibusb-mc.c
> @@ -23,28 +23,33 @@ static int dibusb_mc_probe(struct usb_interface *intf,
>  				   NULL, adapter_nr);
>  }
> 
> +#define DIB_DEVICE(vid, pid)	\
> +	{ USB_DEVICE(USB_VID_##vid, USB_PID_##pid) }
> +
>  /* do not change the order of the ID table */
>  static struct usb_device_id dibusb_dib3000mc_table [] = {
> -/* 00 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3001_COLD) },
> -/* 01 */	{ USB_DEVICE(USB_VID_DIBCOM,		USB_PID_DIBCOM_MOD3001_WARM) },
> -/* 02 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_USB2_COLD) },
> -/* 03 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,
> USB_PID_ULTIMA_TVBOX_USB2_WARM) }, // ( ? )
> -/* 04 */	{ USB_DEVICE(USB_VID_LITEON,		USB_PID_LITEON_DVB_T_COLD) },
> -/* 05 */	{ USB_DEVICE(USB_VID_LITEON,		USB_PID_LITEON_DVB_T_WARM) },
> -/* 06 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_DIGIVOX_MINI_SL_COLD) },
> -/* 07 */	{ USB_DEVICE(USB_VID_EMPIA,		USB_PID_DIGIVOX_MINI_SL_WARM) },
> -/* 08 */	{ USB_DEVICE(USB_VID_GRANDTEC,
> USB_PID_GRANDTEC_DVBT_USB2_COLD) },
> -/* 09 */	{ USB_DEVICE(USB_VID_GRANDTEC,
> USB_PID_GRANDTEC_DVBT_USB2_WARM) },
> -/* 10 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ARTEC_T14_COLD) },
> -/* 11 */	{ USB_DEVICE(USB_VID_ULTIMA_ELECTRONIC,	USB_PID_ARTEC_T14_WARM) },
> -/* 12 */	{ USB_DEVICE(USB_VID_LEADTEK,		USB_PID_WINFAST_DTV_DONGLE_COLD) },
> -/* 13 */	{ USB_DEVICE(USB_VID_LEADTEK,		USB_PID_WINFAST_DTV_DONGLE_WARM) },
> -/* 14 */	{ USB_DEVICE(USB_VID_HUMAX_COEX,
> USB_PID_DVB_T_USB_STICK_HIGH_SPEED_COLD) },
> -/* 15 */	{ USB_DEVICE(USB_VID_HUMAX_COEX,
> USB_PID_DVB_T_USB_STICK_HIGH_SPEED_WARM) },
> -			{ }		/* Terminating entry */
> +	[0]  = DIB_DEVICE(DIBCOM,		DIBCOM_MOD3001_COLD),
> +	[1]  = DIB_DEVICE(DIBCOM,		DIBCOM_MOD3001_WARM),
> +	[2]  = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_USB2_COLD),
> +	[3]  = DIB_DEVICE(ULTIMA_ELECTRONIC,	ULTIMA_TVBOX_USB2_WARM), // ( ? )
> +	[4]  = DIB_DEVICE(LITEON,		LITEON_DVB_T_COLD),
> +	[5]  = DIB_DEVICE(LITEON,		LITEON_DVB_T_WARM),
> +	[6]  = DIB_DEVICE(EMPIA,		DIGIVOX_MINI_SL_COLD),
> +	[7]  = DIB_DEVICE(EMPIA,		DIGIVOX_MINI_SL_WARM),
> +	[8]  = DIB_DEVICE(GRANDTEC,		GRANDTEC_DVBT_USB2_COLD),
> +	[9]  = DIB_DEVICE(GRANDTEC,		GRANDTEC_DVBT_USB2_WARM),
> +	[10] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ARTEC_T14_COLD),
> +	[11] = DIB_DEVICE(ULTIMA_ELECTRONIC,	ARTEC_T14_WARM),
> +	[12] = DIB_DEVICE(LEADTEK,		WINFAST_DTV_DONGLE_COLD),
> +	[13] = DIB_DEVICE(LEADTEK,		WINFAST_DTV_DONGLE_WARM),
> +	[14] = DIB_DEVICE(HUMAX_COEX,		DVB_T_USB_STICK_HIGH_SPEED_COLD),
> +	[15] = DIB_DEVICE(HUMAX_COEX,		DVB_T_USB_STICK_HIGH_SPEED_WARM),
> +	{ }					/* Terminating entry */
>  };
>  MODULE_DEVICE_TABLE (usb, dibusb_dib3000mc_table);
> 
> +#undef DIB_DEVICE
> +
>  static struct dvb_usb_device_properties dibusb_mc_properties = {
>  	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
> 



Thanks,
Mauro

  reply	other threads:[~2022-03-28 20:52 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-26 16:58 [PATCH 01/22] orion5x: Replace comments with C99 initializers Benjamin Stürz
2022-03-26 16:58 ` [PATCH 02/22] s3c: " Benjamin Stürz
2022-03-26 19:44   ` Joe Perches
2022-03-28 13:37   ` Daniel Thompson
2022-03-26 16:58 ` [PATCH 03/22] ia64: " Benjamin Stürz
2022-03-26 16:58 ` [PATCH 04/22] x86: " Benjamin Stürz
2022-03-28 23:08   ` Thomas Gleixner
2022-03-26 16:58 ` [PATCH 05/22] acpica: " Benjamin Stürz
2022-03-27 19:59   ` Andy Shevchenko
2022-03-31 19:27     ` Moore, Robert
2022-04-01  5:09       ` Christoph Hellwig
2022-04-01  5:10     ` Christoph Hellwig
2022-03-28 12:33   ` Rafael J. Wysocki
2022-03-26 16:58 ` [PATCH 06/22] idt77252: " Benjamin Stürz
2022-03-26 16:58 ` [PATCH 07/22] cm4000: " Benjamin Stürz
2022-03-26 16:58 ` [PATCH 08/22] i5100: " Benjamin Stürz
2022-03-26 16:58 ` [PATCH 09/22] gpio-winbond: Use " Benjamin Stürz
2022-03-27 12:03   ` Linus Walleij
2022-03-29 12:30   ` Bartosz Golaszewski
2022-03-26 16:58 ` [PATCH 10/22] hfi1: Replace comments with " Benjamin Stürz
2022-03-26 16:58 ` [PATCH 11/22] rdmavt: " Benjamin Stürz
2022-03-27  7:04   ` Leon Romanovsky
2022-03-31 17:41     ` Dennis Dalessandro
2022-03-26 16:58 ` [PATCH 12/22] alps: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 13/22] capi: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 14/22] mISDN: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 15/22] macintosh: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 16/22] dvb-usb: " Benjamin Stürz
2022-03-26 18:24   ` Mauro Carvalho Chehab
2022-03-26 18:27     ` Mauro Carvalho Chehab
2022-03-26 19:51       ` Joe Perches
2022-03-26 20:11         ` Larry Finger
2022-03-26 21:08           ` Mauro Carvalho Chehab
2022-03-28 18:08             ` [PATCH 16/22 v3] " Benjamin Stürz
2022-03-28 20:52               ` Mauro Carvalho Chehab [this message]
2022-03-27 13:33   ` [PATCH 16/22 v2] " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 17/22] cxl: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 18/22] smsc: " Benjamin Stürz
2022-03-26 16:59 ` [PATCH 19/22] wnc36xx: " Benjamin Stürz
2022-03-28 16:17   ` Jeff Johnson
2022-03-26 16:59 ` [PATCH 20/22] wireless: " Benjamin Stürz
2022-03-28 12:06   ` Kalle Valo
2022-03-26 16:59 ` [PATCH 21/22] rtw89: " Benjamin Stürz
2022-03-26 18:55   ` Larry Finger
2022-03-28  9:28     ` Kalle Valo
2022-03-28 12:21       ` David Laight
2022-03-26 16:59 ` [PATCH 22/22] pci: " Benjamin Stürz
2022-03-26 18:20 ` [PATCH 01/22] orion5x: " Mauro Carvalho Chehab
2022-03-26 19:23 ` Arnd Bergmann
2022-03-28 13:19   ` Segher Boessenkool
2022-03-27 12:46 ` [PATCH 00/22] " Benjamin Stürz
2022-03-28  9:33   ` Kalle Valo
2022-03-28 11:51     ` Benjamin Stürz
2022-03-28 12:31       ` Kalle Valo
2022-03-28 20:20       ` Jakub Kicinski
2022-03-28 13:47   ` Daniel Thompson
2022-03-28 13:17 ` [PATCH 01/22] orion5x: " Daniel Thompson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220328225221.6543f8f8@coco.lan \
    --to=mchehab@kernel.org \
    --cc=Larry.Finger@lwfinger.net \
    --cc=benni@stuerz.xyz \
    --cc=joe@perches.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).