All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Frank Li <Frank.Li@nxp.com>
Cc: Steve Longerbeam <slongerbeam@gmail.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	imx@lists.linux.dev, linux-media@vger.kernel.org,
	linux-staging@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND v2 4/5] media: staging: media: imx6-mipi-csi2: use guard() to simplify code
Date: Wed, 21 Jan 2026 04:13:48 +0200	[thread overview]
Message-ID: <20260121021348.GH403250@killaraus> (raw)
In-Reply-To: <20260116-stage-csi2-cleanup-v2-4-a56e9cb25196@nxp.com>

Hi Frank,

Thank you for the patch.

On Fri, Jan 16, 2026 at 11:17:59AM -0500, Frank Li wrote:
> Use guard() to simplify mutex locking. No functional change.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> leave as it without cleanup goto branch because there are two path to
> update stream_count.
> 
> And it will be replaced soon at
> 
> Use new v4l2_subdev_pad_ops.enable_streams(disalbe_stream) replace
> deprecated s_stream interface.
> 
> https://lore.kernel.org/imx/20250821-95_cam-v3-18-c9286fbb34b9@nxp.com/
> ---
>  drivers/staging/media/imx/imx6-mipi-csi2.c | 54 +++++++++++-------------------
>  1 file changed, 19 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/staging/media/imx/imx6-mipi-csi2.c b/drivers/staging/media/imx/imx6-mipi-csi2.c
> index e1b4b7fb53131ce9515b9441d8fc420e85d3e993..762f19ffd0858c952027afa8e0f36fc87246e1ea 100644
> --- a/drivers/staging/media/imx/imx6-mipi-csi2.c
> +++ b/drivers/staging/media/imx/imx6-mipi-csi2.c
> @@ -412,21 +412,17 @@ static int csi2_s_stream(struct v4l2_subdev *sd, int enable)
>  	struct csi2_dev *csi2 = sd_to_dev(sd);
>  	int i, ret = 0;
>  
> -	mutex_lock(&csi2->lock);
> +	guard(mutex)(&csi2->lock);
>  
> -	if (!csi2->src_sd) {
> -		ret = -EPIPE;
> -		goto out;
> -	}
> +	if (!csi2->src_sd)
> +		return -EPIPE;
>  
>  	for (i = 0; i < CSI2_NUM_SRC_PADS; i++) {
>  		if (csi2->sink_linked[i])
>  			break;
>  	}
> -	if (i >= CSI2_NUM_SRC_PADS) {
> -		ret = -EPIPE;
> -		goto out;
> -	}
> +	if (i >= CSI2_NUM_SRC_PADS)
> +		return -EPIPE;
>  
>  	/*
>  	 * enable/disable streaming only if stream_count is
> @@ -441,14 +437,12 @@ static int csi2_s_stream(struct v4l2_subdev *sd, int enable)
>  	else
>  		csi2_stop(csi2);
>  	if (ret)
> -		goto out;
> +		return ret;
>  
>  update_count:
>  	csi2->stream_count += enable ? 1 : -1;
>  	if (csi2->stream_count < 0)
>  		csi2->stream_count = 0;
> -out:
> -	mutex_unlock(&csi2->lock);
>  	return ret;
>  }
>  
> @@ -466,32 +460,28 @@ static int csi2_link_setup(struct media_entity *entity,
>  
>  	remote_sd = media_entity_to_v4l2_subdev(remote->entity);
>  
> -	mutex_lock(&csi2->lock);
> +	guard(mutex)(&csi2->lock);
>  
>  	if (local->flags & MEDIA_PAD_FL_SOURCE) {
>  		if (flags & MEDIA_LNK_FL_ENABLED) {
> -			if (csi2->sink_linked[local->index - 1]) {
> -				ret = -EBUSY;
> -				goto out;
> -			}
> +			if (csi2->sink_linked[local->index - 1])
> +				return -EBUSY;
> +
>  			csi2->sink_linked[local->index - 1] = true;
>  		} else {
>  			csi2->sink_linked[local->index - 1] = false;
>  		}
>  	} else {
>  		if (flags & MEDIA_LNK_FL_ENABLED) {
> -			if (csi2->src_sd) {
> -				ret = -EBUSY;
> -				goto out;
> -			}
> +			if (csi2->src_sd)
> +				return -EBUSY;
> +
>  			csi2->src_sd = remote_sd;
>  		} else {
>  			csi2->src_sd = NULL;
>  		}
>  	}
>  
> -out:
> -	mutex_unlock(&csi2->lock);
>  	return ret;

You can

	return 0;

here and drop the local ret variable. With that,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  }
>  
> @@ -512,14 +502,12 @@ static int csi2_get_fmt(struct v4l2_subdev *sd,
>  	struct csi2_dev *csi2 = sd_to_dev(sd);
>  	struct v4l2_mbus_framefmt *fmt;
>  
> -	mutex_lock(&csi2->lock);
> +	guard(mutex)(&csi2->lock);
>  
>  	fmt = __csi2_get_fmt(csi2, sd_state, sdformat->pad, sdformat->which);
>  
>  	sdformat->format = *fmt;
>  
> -	mutex_unlock(&csi2->lock);
> -
>  	return 0;
>  }
>  
> @@ -529,17 +517,14 @@ static int csi2_set_fmt(struct v4l2_subdev *sd,
>  {
>  	struct csi2_dev *csi2 = sd_to_dev(sd);
>  	struct v4l2_mbus_framefmt *fmt;
> -	int ret = 0;
>  
>  	if (sdformat->pad >= CSI2_NUM_PADS)
>  		return -EINVAL;
>  
> -	mutex_lock(&csi2->lock);
> +	guard(mutex)(&csi2->lock);
>  
> -	if (csi2->stream_count > 0) {
> -		ret = -EBUSY;
> -		goto out;
> -	}
> +	if (csi2->stream_count > 0)
> +		return -EBUSY;
>  
>  	/* Output pads mirror active input pad, no limits on input pads */
>  	if (sdformat->pad != CSI2_SINK_PAD)
> @@ -548,9 +533,8 @@ static int csi2_set_fmt(struct v4l2_subdev *sd,
>  	fmt = __csi2_get_fmt(csi2, sd_state, sdformat->pad, sdformat->which);
>  
>  	*fmt = sdformat->format;
> -out:
> -	mutex_unlock(&csi2->lock);
> -	return ret;
> +
> +	return 0;
>  }
>  
>  static int csi2_registered(struct v4l2_subdev *sd)

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2026-01-21  2:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-16 16:17 [PATCH RESEND v2 0/5] media: staging: media: imx6-mipi-csi2: trivial cleanup to prepare convert to common dw mipi csi2 Frank Li
2026-01-16 16:17 ` [PATCH RESEND v2 1/5] media: staging: media: imx6-mipi-csi2: replace spaces with tabs for alignment Frank Li
2026-01-21  1:59   ` Laurent Pinchart
2026-01-16 16:17 ` [PATCH RESEND v2 2/5] media: staging: media: imx6-mipi-csi2: use devm_mutex_init() to simplify code Frank Li
2026-01-21  2:00   ` Laurent Pinchart
2026-01-16 16:17 ` [PATCH RESEND v2 3/5] media: staging: media: imx6-mipi-csi2: use devm_clk_bulk_get_all() to fetch clocks Frank Li
2026-01-21  2:08   ` Laurent Pinchart
2026-01-16 16:17 ` [PATCH RESEND v2 4/5] media: staging: media: imx6-mipi-csi2: use guard() to simplify code Frank Li
2026-01-21  2:13   ` Laurent Pinchart [this message]
2026-01-16 16:18 ` [PATCH RESEND v2 5/5] media: staging: media: imx6-mipi-csi2: use devm_platform_ioremap_resource() " Frank Li
2026-01-21  2:17 ` [PATCH RESEND v2 0/5] media: staging: media: imx6-mipi-csi2: trivial cleanup to prepare convert to common dw mipi csi2 Laurent Pinchart

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=20260121021348.GH403250@killaraus \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=Frank.Li@nxp.com \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=mchehab@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=slongerbeam@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.