Re: [PATCH 2/3] media: Prefer designated initializers over memset for subdev pad ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

Thank you for the patch.

On Wed, Feb 15, 2023 at 4:50 PM Laurent Pinchart
<laurent.pinchart@xxxxxxxxxxxxxxxx> wrote:
>
> Structures passed to subdev pad operations are all zero-initialized, but
> not always with the same kind of code constructs. While most drivers
> used designated initializers, which zero all the fields that are not
> specified, when declaring variables, some use memset(). Those two
> methods lead to the same end result, and, depending on compiler
> optimizations, may even be completely equivalent, but they're not
> consistent.
>
> Improve coding style consistency by using designated initializers
> instead of calling memset(). Where applicable, also move the variables
> to inner scopes of for loops to ensure correct initialization in all
> iterations.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> ---
<snip>
>  drivers/media/platform/ti/am437x/am437x-vpfe.c | 15 ++++++++-------

For above,

Reviewed-by: Lad Prabhakar <prabhakar.csengg@xxxxxxxxx>

Cheers,
Prabhakar

>  drivers/media/platform/ti/cal/cal-video.c      |  8 ++++----
>  drivers/media/usb/dvb-usb/cxusb-analog.c       | 14 +++++++-------
>  drivers/staging/media/imx/imx-media-capture.c  | 12 ++++++------
>  drivers/staging/media/imx/imx-media-utils.c    |  8 ++++----
>  drivers/staging/media/omap4iss/iss_video.c     |  6 +++---
>  9 files changed, 50 insertions(+), 49 deletions(-)
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drm.c b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> index c6f25200982c..7fe375b6322c 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> @@ -66,7 +66,9 @@ static int vsp1_du_insert_uif(struct vsp1_device *vsp1,
>                               struct vsp1_entity *prev, unsigned int prev_pad,
>                               struct vsp1_entity *next, unsigned int next_pad)
>  {
> -       struct v4l2_subdev_format format;
> +       struct v4l2_subdev_format format = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
>         int ret;
>
>         if (!uif) {
> @@ -82,8 +84,6 @@ static int vsp1_du_insert_uif(struct vsp1_device *vsp1,
>         prev->sink = uif;
>         prev->sink_pad = UIF_PAD_SINK;
>
> -       memset(&format, 0, sizeof(format));
> -       format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>         format.pad = prev_pad;
>
>         ret = v4l2_subdev_call(&prev->subdev, pad, get_fmt, NULL, &format);
> @@ -118,8 +118,12 @@ static int vsp1_du_pipeline_setup_rpf(struct vsp1_device *vsp1,
>                                       struct vsp1_entity *uif,
>                                       unsigned int brx_input)
>  {
> -       struct v4l2_subdev_selection sel;
> -       struct v4l2_subdev_format format;
> +       struct v4l2_subdev_selection sel = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
> +       struct v4l2_subdev_format format = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
>         const struct v4l2_rect *crop;
>         int ret;
>
> @@ -129,8 +133,6 @@ static int vsp1_du_pipeline_setup_rpf(struct vsp1_device *vsp1,
>          */
>         crop = &vsp1->drm->inputs[rpf->entity.index].crop;
>
> -       memset(&format, 0, sizeof(format));
> -       format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>         format.pad = RWPF_PAD_SINK;
>         format.format.width = crop->width + crop->left;
>         format.format.height = crop->height + crop->top;
> @@ -147,8 +149,6 @@ static int vsp1_du_pipeline_setup_rpf(struct vsp1_device *vsp1,
>                 __func__, format.format.width, format.format.height,
>                 format.format.code, rpf->entity.index);
>
> -       memset(&sel, 0, sizeof(sel));
> -       sel.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>         sel.pad = RWPF_PAD_SINK;
>         sel.target = V4L2_SEL_TGT_CROP;
>         sel.r = *crop;
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_entity.c b/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> index 4c3bd2b1ca28..c31f05a80bb5 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> @@ -184,15 +184,14 @@ vsp1_entity_get_pad_selection(struct vsp1_entity *entity,
>  int vsp1_entity_init_cfg(struct v4l2_subdev *subdev,
>                          struct v4l2_subdev_state *sd_state)
>  {
> -       struct v4l2_subdev_format format;
>         unsigned int pad;
>
>         for (pad = 0; pad < subdev->entity.num_pads - 1; ++pad) {
> -               memset(&format, 0, sizeof(format));
> -
> -               format.pad = pad;
> -               format.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
> -                            : V4L2_SUBDEV_FORMAT_ACTIVE;
> +               struct v4l2_subdev_format format = {
> +                       .pad = pad,
> +                       .which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
> +                              : V4L2_SUBDEV_FORMAT_ACTIVE,
> +               };
>
>                 v4l2_subdev_call(subdev, pad, set_fmt, sd_state, &format);
>         }
> diff --git a/drivers/media/platform/samsung/exynos4-is/fimc-capture.c b/drivers/media/platform/samsung/exynos4-is/fimc-capture.c
> index 4800751a401c..a0d43bf892e6 100644
> --- a/drivers/media/platform/samsung/exynos4-is/fimc-capture.c
> +++ b/drivers/media/platform/samsung/exynos4-is/fimc-capture.c
> @@ -763,7 +763,10 @@ static int fimc_pipeline_try_format(struct fimc_ctx *ctx,
>         struct fimc_dev *fimc = ctx->fimc_dev;
>         struct fimc_pipeline *p = to_fimc_pipeline(fimc->vid_cap.ve.pipe);
>         struct v4l2_subdev *sd = p->subdevs[IDX_SENSOR];
> -       struct v4l2_subdev_format sfmt;
> +       struct v4l2_subdev_format sfmt = {
> +               .which = set ? V4L2_SUBDEV_FORMAT_ACTIVE
> +                      : V4L2_SUBDEV_FORMAT_TRY,
> +       };
>         struct v4l2_mbus_framefmt *mf = &sfmt.format;
>         struct media_entity *me;
>         struct fimc_fmt *ffmt;
> @@ -774,9 +777,7 @@ static int fimc_pipeline_try_format(struct fimc_ctx *ctx,
>         if (WARN_ON(!sd || !tfmt))
>                 return -EINVAL;
>
> -       memset(&sfmt, 0, sizeof(sfmt));
>         sfmt.format = *tfmt;
> -       sfmt.which = set ? V4L2_SUBDEV_FORMAT_ACTIVE : V4L2_SUBDEV_FORMAT_TRY;
>
>         me = fimc_pipeline_get_head(&sd->entity);
>
> diff --git a/drivers/media/platform/ti/am437x/am437x-vpfe.c b/drivers/media/platform/ti/am437x/am437x-vpfe.c
> index f23085b5954b..9fcbf2a2b7c3 100644
> --- a/drivers/media/platform/ti/am437x/am437x-vpfe.c
> +++ b/drivers/media/platform/ti/am437x/am437x-vpfe.c
> @@ -1501,7 +1501,9 @@ static int vpfe_enum_size(struct file *file, void  *priv,
>                           struct v4l2_frmsizeenum *fsize)
>  {
>         struct vpfe_device *vpfe = video_drvdata(file);
> -       struct v4l2_subdev_frame_size_enum fse;
> +       struct v4l2_subdev_frame_size_enum fse = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
>         struct v4l2_subdev *sd = vpfe->current_subdev->sd;
>         struct vpfe_fmt *fmt;
>         int ret;
> @@ -1516,11 +1518,9 @@ static int vpfe_enum_size(struct file *file, void  *priv,
>
>         memset(fsize->reserved, 0x0, sizeof(fsize->reserved));
>
> -       memset(&fse, 0x0, sizeof(fse));
>         fse.index = fsize->index;
>         fse.pad = 0;
>         fse.code = fmt->code;
> -       fse.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>         ret = v4l2_subdev_call(sd, pad, enum_frame_size, NULL, &fse);
>         if (ret)
>                 return ret;
> @@ -2148,7 +2148,6 @@ vpfe_async_bound(struct v4l2_async_notifier *notifier,
>  {
>         struct vpfe_device *vpfe = container_of(notifier->v4l2_dev,
>                                                struct vpfe_device, v4l2_dev);
> -       struct v4l2_subdev_mbus_code_enum mbus_code;
>         struct vpfe_subdev_info *sdinfo;
>         struct vpfe_fmt *fmt;
>         int ret = 0;
> @@ -2175,9 +2174,11 @@ vpfe_async_bound(struct v4l2_async_notifier *notifier,
>
>         vpfe->num_active_fmt = 0;
>         for (j = 0, i = 0; (ret != -EINVAL); ++j) {
> -               memset(&mbus_code, 0, sizeof(mbus_code));
> -               mbus_code.index = j;
> -               mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE;
> +               struct v4l2_subdev_mbus_code_enum mbus_code = {
> +                       .index = j,
> +                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +               };
> +
>                 ret = v4l2_subdev_call(subdev, pad, enum_mbus_code,
>                                        NULL, &mbus_code);
>                 if (ret)
> diff --git a/drivers/media/platform/ti/cal/cal-video.c b/drivers/media/platform/ti/cal/cal-video.c
> index 51ed82172d71..ca906a9e4222 100644
> --- a/drivers/media/platform/ti/cal/cal-video.c
> +++ b/drivers/media/platform/ti/cal/cal-video.c
> @@ -814,7 +814,6 @@ static const struct v4l2_file_operations cal_fops = {
>
>  static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
>  {
> -       struct v4l2_subdev_mbus_code_enum mbus_code;
>         struct v4l2_mbus_framefmt mbus_fmt;
>         const struct cal_format_info *fmtinfo;
>         unsigned int i, j, k;
> @@ -829,10 +828,11 @@ static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
>         ctx->num_active_fmt = 0;
>
>         for (j = 0, i = 0; ; ++j) {
> +               struct v4l2_subdev_mbus_code_enum mbus_code = {
> +                       .index = j,
> +                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +               };
>
> -               memset(&mbus_code, 0, sizeof(mbus_code));
> -               mbus_code.index = j;
> -               mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>                 ret = v4l2_subdev_call(ctx->phy->source, pad, enum_mbus_code,
>                                        NULL, &mbus_code);
>                 if (ret == -EINVAL)
> diff --git a/drivers/media/usb/dvb-usb/cxusb-analog.c b/drivers/media/usb/dvb-usb/cxusb-analog.c
> index e93183ddd797..deba5224cb8d 100644
> --- a/drivers/media/usb/dvb-usb/cxusb-analog.c
> +++ b/drivers/media/usb/dvb-usb/cxusb-analog.c
> @@ -1014,7 +1014,10 @@ static int cxusb_medion_try_s_fmt_vid_cap(struct file *file,
>  {
>         struct dvb_usb_device *dvbdev = video_drvdata(file);
>         struct cxusb_medion_dev *cxdev = dvbdev->priv;
> -       struct v4l2_subdev_format subfmt;
> +       struct v4l2_subdev_format subfmt = {
> +               .which = isset ? V4L2_SUBDEV_FORMAT_ACTIVE :
> +                        V4L2_SUBDEV_FORMAT_TRY,
> +       };
>         u32 field;
>         int ret;
>
> @@ -1024,9 +1027,6 @@ static int cxusb_medion_try_s_fmt_vid_cap(struct file *file,
>         field = vb2_start_streaming_called(&cxdev->videoqueue) ?
>                 cxdev->field_order : cxusb_medion_field_order(cxdev);
>
> -       memset(&subfmt, 0, sizeof(subfmt));
> -       subfmt.which = isset ? V4L2_SUBDEV_FORMAT_ACTIVE :
> -               V4L2_SUBDEV_FORMAT_TRY;
>         subfmt.format.width = f->fmt.pix.width & ~1;
>         subfmt.format.height = f->fmt.pix.height & ~1;
>         subfmt.format.code = MEDIA_BUS_FMT_FIXED;
> @@ -1464,7 +1464,9 @@ int cxusb_medion_analog_init(struct dvb_usb_device *dvbdev)
>                                             .buf = tuner_analog_msg_data,
>                                             .len =
>                                             sizeof(tuner_analog_msg_data) };
> -       struct v4l2_subdev_format subfmt;
> +       struct v4l2_subdev_format subfmt = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
>         int ret;
>
>         /* switch tuner to analog mode so IF demod will become accessible */
> @@ -1507,8 +1509,6 @@ int cxusb_medion_analog_init(struct dvb_usb_device *dvbdev)
>         v4l2_subdev_call(cxdev->tuner, video, s_std, cxdev->norm);
>         v4l2_subdev_call(cxdev->cx25840, video, s_std, cxdev->norm);
>
> -       memset(&subfmt, 0, sizeof(subfmt));
> -       subfmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>         subfmt.format.width = cxdev->width;
>         subfmt.format.height = cxdev->height;
>         subfmt.format.code = MEDIA_BUS_FMT_FIXED;
> diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
> index 39666db59c4e..4364df27c6d2 100644
> --- a/drivers/staging/media/imx/imx-media-capture.c
> +++ b/drivers/staging/media/imx/imx-media-capture.c
> @@ -504,14 +504,14 @@ static int capture_legacy_g_parm(struct file *file, void *fh,
>                                  struct v4l2_streamparm *a)
>  {
>         struct capture_priv *priv = video_drvdata(file);
> -       struct v4l2_subdev_frame_interval fi;
> +       struct v4l2_subdev_frame_interval fi = {
> +               .pad = priv->src_sd_pad,
> +       };
>         int ret;
>
>         if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
>                 return -EINVAL;
>
> -       memset(&fi, 0, sizeof(fi));
> -       fi.pad = priv->src_sd_pad;
>         ret = v4l2_subdev_call(priv->src_sd, video, g_frame_interval, &fi);
>         if (ret < 0)
>                 return ret;
> @@ -526,14 +526,14 @@ static int capture_legacy_s_parm(struct file *file, void *fh,
>                                  struct v4l2_streamparm *a)
>  {
>         struct capture_priv *priv = video_drvdata(file);
> -       struct v4l2_subdev_frame_interval fi;
> +       struct v4l2_subdev_frame_interval fi = {
> +               .pad = priv->src_sd_pad,
> +       };
>         int ret;
>
>         if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
>                 return -EINVAL;
>
> -       memset(&fi, 0, sizeof(fi));
> -       fi.pad = priv->src_sd_pad;
>         fi.interval = a->parm.capture.timeperframe;
>         ret = v4l2_subdev_call(priv->src_sd, video, s_frame_interval, &fi);
>         if (ret < 0)
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index 411e907b68eb..b545750ca526 100644
> --- a/drivers/staging/media/imx/imx-media-utils.c
> +++ b/drivers/staging/media/imx/imx-media-utils.c
> @@ -432,15 +432,15 @@ int imx_media_init_cfg(struct v4l2_subdev *sd,
>                        struct v4l2_subdev_state *sd_state)
>  {
>         struct v4l2_mbus_framefmt *mf_try;
> -       struct v4l2_subdev_format format;
>         unsigned int pad;
>         int ret;
>
>         for (pad = 0; pad < sd->entity.num_pads; pad++) {
> -               memset(&format, 0, sizeof(format));
> +               struct v4l2_subdev_format format = {
> +                       .pad = pad,
> +                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +               };
>
> -               format.pad = pad;
> -               format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>                 ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, &format);
>                 if (ret)
>                         continue;
> diff --git a/drivers/staging/media/omap4iss/iss_video.c b/drivers/staging/media/omap4iss/iss_video.c
> index 1406445a30c3..22fa4d6cae10 100644
> --- a/drivers/staging/media/omap4iss/iss_video.c
> +++ b/drivers/staging/media/omap4iss/iss_video.c
> @@ -237,7 +237,9 @@ static int
>  __iss_video_get_format(struct iss_video *video,
>                        struct v4l2_mbus_framefmt *format)
>  {
> -       struct v4l2_subdev_format fmt;
> +       struct v4l2_subdev_format fmt = {
> +               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
> +       };
>         struct v4l2_subdev *subdev;
>         u32 pad;
>         int ret;
> @@ -246,9 +248,7 @@ __iss_video_get_format(struct iss_video *video,
>         if (!subdev)
>                 return -EINVAL;
>
> -       memset(&fmt, 0, sizeof(fmt));
>         fmt.pad = pad;
> -       fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
>
>         mutex_lock(&video->mutex);
>         ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &fmt);
> --
> Regards,
>
> Laurent Pinchart
>



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux