Re: [PATCH v3 21/29] media: rzg2l-cru: Use v4l2_subdev_get_frame_desc()

Frank Li <[email protected]>
Newsgroups org.kernel.vger.linux-media
Message-ID <aoyz5ReiQVeKRU7b@lizhi-Precision-Tower-5810>
On Mon, Aug 24, 2026 at 03:14:43PM +0300, Sakari Ailus wrote:
> Call v4l2_subdev_get_frame_desc() to obtain the frame descriptor. This is
> preferred over calling the get_frame_desc() pad operation directly.
>
> Signed-off-by: Sakari Ailus <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

>  .../platform/renesas/rzg2l-cru/rzg2l-video.c  | 27 +++++--------------
>  1 file changed, 7 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> index 91eda5034248..90c074527e01 100644
> --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c
> @@ -11,6 +11,7 @@
>   * Copyright (C) 2008 Magnus Damm
>   */
>
> +#include <linux/cleanup.h>
>  #include <linux/clk.h>
>  #include <linux/delay.h>
>  #include <linux/pm_runtime.h>
> @@ -438,31 +439,17 @@ void rzg2l_cru_stop_image_processing(struct rzg2l_cru_dev *cru)
>
>  static int rzg2l_cru_get_virtual_channel(struct rzg2l_cru_dev *cru)
>  {
> -	struct v4l2_mbus_frame_desc fd = { };
>  	struct media_pad *remote_pad;
> -	int ret;
>
>  	remote_pad = media_pad_remote_pad_unique(&cru->ip.pads[RZG2L_CRU_IP_SINK]);
> -	ret = v4l2_subdev_call(cru->ip.remote, pad, get_frame_desc, remote_pad->index, &fd);
> -	if (ret < 0 && ret != -ENOIOCTLCMD) {
> -		dev_err(cru->dev, "get_frame_desc failed on IP remote subdev\n");
> -		return ret;
> -	}
> -	/* If remote subdev does not implement .get_frame_desc default to VC0. */
> -	if (ret == -ENOIOCTLCMD)
> -		return 0;
>
> -	if (fd.type != V4L2_MBUS_FRAME_DESC_TYPE_CSI2) {
> -		dev_err(cru->dev, "get_frame_desc returned invalid bus type %d\n", fd.type);
> -		return -EINVAL;
> -	}
> -
> -	if (!fd.num_entries) {
> -		dev_err(cru->dev, "get_frame_desc returned zero entries\n");
> -		return -EINVAL;
> -	}
> +	struct v4l2_mbus_frame_desc *fd __free(v4l2_subdev_free_frame_desc) =
> +		v4l2_subdev_get_frame_desc(cru->ip.remote, remote_pad->index,
> +					   V4L2_MBUS_FRAME_DESC_TYPE_CSI2);
> +	if (IS_ERR(fd))
> +		return PTR_ERR(fd);
>
> -	return fd.entry[0].bus.csi2.vc;
> +	return fd->entry[0].bus.csi2.vc;
>  }
>
>  void rzg3e_cru_enable_interrupts(struct rzg2l_cru_dev *cru)
> --
> 2.47.3
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.