[PATCH 00/45] media: Use string_choice helpers

Andy Walls awalls at md.metrocast.net
Mon Sep 30 22:57:44 AEST 2024


On September 30, 2024 8:38:22 AM EDT, Hans Verkuil <hverkuil at xs4all.nl> wrote:
>On 30/09/2024 14:21, Laurent Pinchart wrote:
>> Hi Ricardo,
>> 
>> On Mon, Sep 30, 2024 at 12:03:55PM +0000, Ricardo Ribalda wrote:
>>> include/linux/string_choices.h contains a set of helpers that can be
>>> used instead of hard coding some strings.
>>>
>>> Cocci has located some places where the helpers can be used. This
>>> patchset uses the diff generated by cocci, plus these changes:
>> 
>> Personally I think most of those helpers just hinder readability for not
>> much added gain. String de-duplication is done by the linker already.
>> The only value I see in the helpers is ensuring that the strings are
>> consistently written, and I think we can do so through other means.
>
>Just my opinion: I'm OK with these new helpers, but I am not too keen to apply
>all this to existing source code. I.e., for new code it is fine, but if we have
>to update all drivers every time a new cocci test is added, then that will not
>scale.
>
>Note that I never ran cocci in my build scripts, so this is a new check that
>we haven't set rules for or have much experience with.
>
>checkpatch just checks the patches, it doesn't force you to fix existing code.
>
>Some of the cocci tests are clearly checking for incorrect code, but others are
>for code improvements (i.e. the code was correct, it can just be done slightly
>better). It's the second category were I think that should only apply to new code,
>and not existing code.
>
>Regards,
>
>	Hans
>
>> 
>>> diff --git a/drivers/media/dvb-frontends/ascot2e.c b/drivers/media/dvb-frontends/ascot2e.c
>>> index 8c3eb5d69dda..ec7a718428fc 100644
>>> --- a/drivers/media/dvb-frontends/ascot2e.c
>>> +++ b/drivers/media/dvb-frontends/ascot2e.c
>>> @@ -104,7 +104,7 @@ static void ascot2e_i2c_debug(struct ascot2e_priv *priv,
>>>                               u8 reg, u8 write, const u8 *data, u32 len)
>>>  {
>>>         dev_dbg(&priv->i2c->dev, "ascot2e: I2C %s reg 0x%02x size %d\n",
>>> -               str_read_write(write == 0), reg, len);
>>> +               str_write_read(write), reg, len);
>>>         print_hex_dump_bytes("ascot2e: I2C data: ",
>>>                 DUMP_PREFIX_OFFSET, data, len);
>>>  }
>>> diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
>>> index db684f314b47..d1b84cd9c510 100644
>>> --- a/drivers/media/dvb-frontends/cxd2841er.c
>>> +++ b/drivers/media/dvb-frontends/cxd2841er.c
>>> @@ -206,7 +206,7 @@ static void cxd2841er_i2c_debug(struct cxd2841er_priv *priv,
>>>  {
>>>         dev_dbg(&priv->i2c->dev,
>>>                 "cxd2841er: I2C %s addr %02x reg 0x%02x size %d data %*ph\n",
>>> -               str_read_write(write == 0), addr, reg, len, len, data);
>>> +               str_write_read(write), addr, reg, len, len, data);
>>>  }
>>>  
>>>  static int cxd2841er_write_regs(struct cxd2841er_priv *priv,
>>> diff --git a/drivers/media/dvb-frontends/helene.c b/drivers/media/dvb-frontends/helene.c
>>> index 52198cb49dba..b4527c141d9c 100644
>>> --- a/drivers/media/dvb-frontends/helene.c
>>> +++ b/drivers/media/dvb-frontends/helene.c
>>> @@ -279,7 +279,7 @@ static void helene_i2c_debug(struct helene_priv *priv,
>>>                 u8 reg, u8 write, const u8 *data, u32 len)
>>>  {
>>>         dev_dbg(&priv->i2c->dev, "helene: I2C %s reg 0x%02x size %d\n",
>>> -                       str_read_write(write == 0), reg, len);
>>> +                       str_write_read(write), reg, len);
>>>         print_hex_dump_bytes("helene: I2C data: ",
>>>                         DUMP_PREFIX_OFFSET, data, len);
>>>  }
>>> diff --git a/drivers/media/dvb-frontends/horus3a.c b/drivers/media/dvb-frontends/horus3a.c
>>> index 84385079918c..10300ebf3ca0 100644
>>> --- a/drivers/media/dvb-frontends/horus3a.c
>>> +++ b/drivers/media/dvb-frontends/horus3a.c
>>> @@ -38,7 +38,7 @@ static void horus3a_i2c_debug(struct horus3a_priv *priv,
>>>                               u8 reg, u8 write, const u8 *data, u32 len)
>>>  {
>>>         dev_dbg(&priv->i2c->dev, "horus3a: I2C %s reg 0x%02x size %d\n",
>>> -               str_read_write(write == 0), reg, len);
>>> +               str_write_read(write), reg, len);
>>>         print_hex_dump_bytes("horus3a: I2C data: ",
>>>                 DUMP_PREFIX_OFFSET, data, len);
>>>  }
>>> diff --git a/drivers/media/i2c/adv7842.c b/drivers/media/i2c/adv7842.c
>>> index ba174aa45afa..a43479c3ff03 100644
>>> --- a/drivers/media/i2c/adv7842.c
>>> +++ b/drivers/media/i2c/adv7842.c
>>> @@ -2763,7 +2763,7 @@ static int adv7842_cp_log_status(struct v4l2_subdev *sd)
>>>                           str_true_false(io_read(sd, 0x6a) & 0x10));
>>>         }
>>>         v4l2_info(sd, "CP free run: %s\n",
>>> -                 str_on_off(!!(cp_read(sd, 0xff) & 0x10)));
>>> +                 str_on_off(cp_read(sd, 0xff) & 0x10));
>>>         v4l2_info(sd, "Prim-mode = 0x%x, video std = 0x%x, v_freq = 0x%x\n",
>>>                   io_read(sd, 0x01) & 0x0f, io_read(sd, 0x00) & 0x3f,
>>>                   (io_read(sd, 0x01) & 0x70) >> 4);
>>> diff --git a/drivers/media/pci/saa7134/saa7134-cards.c b/drivers/media/pci/saa7134/saa7134-cards.c
>>> index 301b89e799d8..79cd61fb0205 100644
>>> --- a/drivers/media/pci/saa7134/saa7134-cards.c
>>> +++ b/drivers/media/pci/saa7134/saa7134-cards.c
>>> @@ -7981,7 +7981,7 @@ int saa7134_board_init2(struct saa7134_dev *dev)
>>>                         rc = i2c_transfer(&dev->i2c_adap, &msg, 1);
>>>                         pr_info("%s: probe IR chip @ i2c 0x%02x: %s\n",
>>>                                    dev->name, msg.addr,
>>> -                                  str_yes_no(1 == rc));
>>> +                                  str_yes_no(rc == 1));
>>>                         if (rc == 1)
>>>                                 dev->has_remote = SAA7134_REMOTE_I2C;
>>>                 }
>>> diff --git a/drivers/media/pci/saa7134/saa7134-input.c b/drivers/media/pci/saa7134/saa7134-input.c
>>> index 90837ec6e70f..239f0b9d080a 100644
>>> --- a/drivers/media/pci/saa7134/saa7134-input.c
>>> +++ b/drivers/media/pci/saa7134/saa7134-input.c
>>> @@ -895,7 +895,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
>>>                 rc = i2c_transfer(&dev->i2c_adap, &msg_msi, 1);
>>>                 input_dbg("probe 0x%02x @ %s: %s\n",
>>>                         msg_msi.addr, dev->i2c_adap.name,
>>> -                       str_yes_no(1 == rc));
>>> +                       str_yes_no(rc == 1));
>>>                 break;
>>>         case SAA7134_BOARD_SNAZIO_TVPVR_PRO:
>>>                 dev->init_data.name = "SnaZio* TVPVR PRO";
>>> @@ -931,7 +931,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev)
>>>                 rc = i2c_transfer(&dev->i2c_adap, &msg_msi, 1);
>>>                 input_dbg("probe 0x%02x @ %s: %s\n",
>>>                         msg_msi.addr, dev->i2c_adap.name,
>>> -                       str_yes_no(1 == rc));
>>> +                       str_yes_no(rc == 1));
>>>                 break;
>>>         case SAA7134_BOARD_HAUPPAUGE_HVR1110:
>>>                 dev->init_data.name = saa7134_boards[dev->board].name;
>>> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-ctrl.c b/drivers/media/usb/pvrusb2/pvrusb2-ctrl.c
>>> index 448c40caf363..b6c9bda214c8 100644
>>> --- a/drivers/media/usb/pvrusb2/pvrusb2-ctrl.c
>>> +++ b/drivers/media/usb/pvrusb2/pvrusb2-ctrl.c
>>> @@ -521,7 +521,7 @@ int pvr2_ctrl_value_to_sym_internal(struct pvr2_ctrl *cptr,
>>>                 *len = scnprintf(buf,maxlen,"%d",val);
>>>                 ret = 0;
>>>         } else if (cptr->info->type == pvr2_ctl_bool) {
>>> -               *len = scnprintf(buf,maxlen,"%s",str_true_false(val));
>>> +               *len = scnprintf(buf, maxlen, "%s", str_true_false(val));
>>>                 ret = 0;
>>>         } else if (cptr->info->type == pvr2_ctl_enum) {
>>>                 const char * const *names;
>>> diff --git a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
>>> index 96d3a0045fac..761d718478ca 100644
>>> --- a/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
>>> +++ b/drivers/media/usb/pvrusb2/pvrusb2-hdw.c
>>> @@ -338,7 +338,7 @@ static void trace_stbit(const char *name,int val)
>>>  {
>>>         pvr2_trace(PVR2_TRACE_STBITS,
>>>                    "State bit %s <-- %s",
>>> -                  name,str_true_false(val));
>>> +                  name, str_true_false(val));
>>>  }
>>>
>>> Signed-off-by: Ricardo Ribalda <ribalda at chromium.org>
>>> ---
>>> Ricardo Ribalda (45):
>>>       media: staging: ipu3: Use string_choices helpers
>>>       media: staging: atomisp: Use string_choices helpers
>>>       media: core: Use string_choices helpers
>>>       media: pwc-ctl: Use string_choices helpers
>>>       media: pvrusb2:Use string_choices helpers
>>>       media: em28xx: Use string_choices helpers
>>>       media: dvb-usb: Use string_choices helpers
>>>       media: dvb-usb-v2: Use string_choices helpers
>>>       media: cx231xx: Use string_choices helpers
>>>       media: tuners: Use string_choices helpers
>>>       media: rc: Use string_choices helpers
>>>       media: dvb-frontends: Use string_choices helpers
>>>       media: pci: cx23885: Use string_choices helpers
>>>       media: saa7134: Use string_choices helpers
>>>       media: amphion: Use string_choices helpers
>>>       media: pci: ivtv: Use string_choices helpers
>>>       media: bttv: Use string_choices helpers
>>>       media: xilinx: Use string_choices helpers
>>>       media: platform: ti: Use string_choices helpers
>>>       media: st: Use string_choices helpers
>>>       media: coda: Use string_choices helpers
>>>       media: aspeed: Use string_choices helpers
>>>       media: ipu6: Use string_choices helpers
>>>       media: cx18: Use string_choices helpers
>>>       media: cobalt: Use string_choices helpers
>>>       media: videobuf2: Use string_choices helpers
>>>       media: cec: Use string_choices helpers
>>>       media: b2c2: Use string_choices helpers
>>>       media: siano: Use string_choices helpers
>>>       media: i2c: cx25840: Use string_choices helpers
>>>       media: i2c: vpx3220: Use string_choices helpers
>>>       media: i2c: tvp7002: Use string_choices helpers
>>>       media: i2c: ths8200: Use string_choices helpers
>>>       media: i2c: tda1997x: Use string_choices helpers
>>>       media: i2c: tc358743: Use string_choices helpers
>>>       media: i2c: st-mipid02: Use string_choices helpers
>>>       media: i2c: msp3400: Use string_choices helpers
>>>       media: i2c: max9286: Use string_choices helpers
>>>       media: i2c: saa717x: Use string_choices helpers
>>>       media: i2c: saa7127: Use string_choices helpers
>>>       media: i2c: saa7115: Use string_choices helpers
>>>       media: i2c: saa7110: Use string_choices helpers
>>>       media: i2c: adv7842: Use string_choices helpers
>>>       media: i2c: adv76xx: Use string_choices helpers
>>>       media: i2c: adv7511: Use string_choices helpers
>>>
>>>  drivers/media/cec/platform/cec-gpio/cec-gpio.c     |  4 +-
>>>  drivers/media/cec/usb/pulse8/pulse8-cec.c          |  4 +-
>>>  drivers/media/common/b2c2/flexcop-hw-filter.c      |  4 +-
>>>  drivers/media/common/siano/sms-cards.c             |  3 +-
>>>  drivers/media/common/videobuf2/videobuf2-core.c    |  5 ++-
>>>  drivers/media/dvb-frontends/ascot2e.c              |  2 +-
>>>  drivers/media/dvb-frontends/cx24120.c              |  4 +-
>>>  drivers/media/dvb-frontends/cxd2841er.c            |  2 +-
>>>  drivers/media/dvb-frontends/drxk_hard.c            |  4 +-
>>>  drivers/media/dvb-frontends/helene.c               |  2 +-
>>>  drivers/media/dvb-frontends/horus3a.c              |  2 +-
>>>  drivers/media/dvb-frontends/sp2.c                  |  2 +-
>>>  drivers/media/i2c/adv7511-v4l2.c                   | 11 +++---
>>>  drivers/media/i2c/adv7604.c                        | 25 ++++++------
>>>  drivers/media/i2c/adv7842.c                        | 40 ++++++++++----------
>>>  drivers/media/i2c/cx25840/cx25840-core.c           |  4 +-
>>>  drivers/media/i2c/cx25840/cx25840-ir.c             | 34 ++++++++---------
>>>  drivers/media/i2c/max9286.c                        |  2 +-
>>>  drivers/media/i2c/msp3400-driver.c                 |  4 +-
>>>  drivers/media/i2c/saa7110.c                        |  2 +-
>>>  drivers/media/i2c/saa7115.c                        |  2 +-
>>>  drivers/media/i2c/saa7127.c                        | 15 +++++---
>>>  drivers/media/i2c/saa717x.c                        |  2 +-
>>>  drivers/media/i2c/st-mipid02.c                     |  2 +-
>>>  drivers/media/i2c/tc358743.c                       | 44 ++++++++++------------
>>>  drivers/media/i2c/tda1997x.c                       |  6 +--
>>>  drivers/media/i2c/ths8200.c                        |  4 +-
>>>  drivers/media/i2c/tvp7002.c                        |  2 +-
>>>  drivers/media/i2c/vpx3220.c                        |  2 +-
>>>  drivers/media/pci/bt8xx/bttv-cards.c               | 16 ++++----
>>>  drivers/media/pci/bt8xx/bttv-driver.c              |  6 +--
>>>  drivers/media/pci/cobalt/cobalt-driver.c           |  2 +-
>>>  drivers/media/pci/cx18/cx18-av-core.c              |  4 +-
>>>  drivers/media/pci/cx23885/altera-ci.c              |  2 +-
>>>  drivers/media/pci/cx23885/cimax2.c                 |  2 +-
>>>  drivers/media/pci/cx23885/cx23888-ir.c             | 36 +++++++++---------
>>>  drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c      |  2 +-
>>>  drivers/media/pci/ivtv/ivtvfb.c                    |  4 +-
>>>  drivers/media/pci/saa7134/saa7134-cards.c          |  2 +-
>>>  drivers/media/pci/saa7134/saa7134-dvb.c            |  2 +-
>>>  drivers/media/pci/saa7134/saa7134-input.c          |  6 +--
>>>  drivers/media/pci/saa7134/saa7134-video.c          |  2 +-
>>>  drivers/media/platform/amphion/venc.c              |  2 +-
>>>  drivers/media/platform/amphion/vpu_dbg.c           |  2 +-
>>>  drivers/media/platform/aspeed/aspeed-video.c       |  4 +-
>>>  drivers/media/platform/chips-media/coda/imx-vdoa.c |  3 +-
>>>  drivers/media/platform/st/sti/hva/hva-debugfs.c    |  6 +--
>>>  drivers/media/platform/ti/omap3isp/ispstat.c       |  2 +-
>>>  drivers/media/platform/xilinx/xilinx-csi2rxss.c    | 18 ++++-----
>>>  drivers/media/rc/ene_ir.c                          |  3 +-
>>>  drivers/media/rc/mceusb.c                          |  3 +-
>>>  drivers/media/rc/serial_ir.c                       |  5 ++-
>>>  drivers/media/tuners/tda18250.c                    |  2 +-
>>>  drivers/media/tuners/tda9887.c                     | 10 ++---
>>>  drivers/media/usb/cx231xx/cx231xx-i2c.c            |  4 +-
>>>  drivers/media/usb/cx231xx/cx231xx-video.c          |  2 +-
>>>  drivers/media/usb/dvb-usb-v2/az6007.c              |  4 +-
>>>  drivers/media/usb/dvb-usb-v2/dvb_usb_core.c        |  4 +-
>>>  drivers/media/usb/dvb-usb/af9005-fe.c              |  4 +-
>>>  drivers/media/usb/dvb-usb/dvb-usb-dvb.c            |  6 +--
>>>  drivers/media/usb/dvb-usb/opera1.c                 |  8 ++--
>>>  drivers/media/usb/em28xx/em28xx-i2c.c              |  4 +-
>>>  drivers/media/usb/em28xx/em28xx-video.c            |  2 +-
>>>  drivers/media/usb/pvrusb2/pvrusb2-ctrl.c           |  2 +-
>>>  drivers/media/usb/pvrusb2/pvrusb2-debugifc.c       |  3 +-
>>>  drivers/media/usb/pvrusb2/pvrusb2-encoder.c        |  5 +--
>>>  drivers/media/usb/pvrusb2/pvrusb2-hdw.c            |  6 +--
>>>  drivers/media/usb/pvrusb2/pvrusb2-i2c-core.c       |  3 +-
>>>  drivers/media/usb/pwc/pwc-ctrl.c                   |  2 +-
>>>  drivers/media/v4l2-core/v4l2-ctrls-core.c          |  3 +-
>>>  drivers/media/v4l2-core/v4l2-fwnode.c              | 12 +++---
>>>  .../media/atomisp/pci/atomisp_compat_css20.c       |  2 +-
>>>  .../media/atomisp/pci/atomisp_csi2_bridge.c        |  2 +-
>>>  .../media/atomisp/pci/atomisp_gmin_platform.c      |  4 +-
>>>  drivers/staging/media/atomisp/pci/atomisp_v4l2.c   |  4 +-
>>>  .../media/atomisp/pci/runtime/binary/src/binary.c  |  2 +-
>>>  drivers/staging/media/atomisp/pci/sh_css.c         |  2 +-
>>>  drivers/staging/media/ipu3/ipu3-v4l2.c             |  4 +-
>>>  78 files changed, 240 insertions(+), 239 deletions(-)
>>> ---
>>> base-commit: 9852d85ec9d492ebef56dc5f229416c925758edc
>>> change-id: 20240930-cocci-opportunity-40bca6a17c42
>> 
>

Hi Ricardo,

I'll go a little further than Hans and Laurent:

I staunchly oppose what I call editorial changes:

 'sed s/happy/glad/g'

in code that has been working for a long time for which many do not have time or hardware to perform regression tests against.

Please explain the return on investment for why this change should be applied?  Help me to understand how that return outweighs the risk of introducing a bug? (No human being really code reviews sweeping editorial change like these thoroughly.)

-Andy


More information about the Linux-aspeed mailing list