[PATCH v3 21/29] media: rzg2l-cru: Use v4l2_subdev_get_frame_desc()
Sakari Ailus <[email protected]>
| Newsgroups | org.kernel.vger.linux-media |
|---|---|
| Organization | Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo |
| Message-ID | <[email protected]> |
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]> --- .../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