[3/8] media: rkisp1: Remove cached format info
Commit Message
The struct rkisp1_params type contains a v4l2_format instance which
is used to store the buffer format and sizes to be used in enum_fmt and
g_fmt operations.
To prepare for supporting multiple meta output formats, to introduce
support for extensible buffer formats, remove the cached format info
and initialize them explicitly in the enum_fmt and g_fmt operations.
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
---
.../platform/rockchip/rkisp1/rkisp1-common.h | 2 --
.../platform/rockchip/rkisp1/rkisp1-params.c | 28 ++++++-------------
2 files changed, 9 insertions(+), 21 deletions(-)
Comments
Hi Jacopo
On 05/06/2024 17:54, Jacopo Mondi wrote:
> The struct rkisp1_params type contains a v4l2_format instance which
> is used to store the buffer format and sizes to be used in enum_fmt and
> g_fmt operations.
>
> To prepare for supporting multiple meta output formats, to introduce
> support for extensible buffer formats, remove the cached format info
> and initialize them explicitly in the enum_fmt and g_fmt operations.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
> ---
> .../platform/rockchip/rkisp1/rkisp1-common.h | 2 --
> .../platform/rockchip/rkisp1/rkisp1-params.c | 28 ++++++-------------
> 2 files changed, 9 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> index 26573f6ae575..2a715f964f6e 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> @@ -372,7 +372,6 @@ struct rkisp1_params_ops {
> * @ops: pointer to the variant-specific operations
> * @config_lock: locks the buffer list 'params'
> * @params: queue of rkisp1_buffer
> - * @vdev_fmt: v4l2_format of the metadata format
> * @quantization: the quantization configured on the isp's src pad
> * @raw_type: the bayer pattern on the isp video sink pad
> */
> @@ -383,7 +382,6 @@ struct rkisp1_params {
>
> spinlock_t config_lock; /* locks the buffers list 'params' */
> struct list_head params;
> - struct v4l2_format vdev_fmt;
>
> enum v4l2_quantization quantization;
> enum v4l2_ycbcr_encoding ycbcr_encoding;
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> index 173d1ea41874..1f449f29b241 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> @@ -1742,12 +1742,11 @@ static int rkisp1_params_enum_fmt_meta_out(struct file *file, void *priv,
> struct v4l2_fmtdesc *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
>
> if (f->index > 0 || f->type != video->queue->type)
> return -EINVAL;
>
> - f->pixelformat = params->vdev_fmt.fmt.meta.dataformat;
> + f->pixelformat = V4L2_META_FMT_RK_ISP1_PARAMS;
>
> return 0;
> }
> @@ -1756,15 +1755,14 @@ static int rkisp1_params_g_fmt_meta_out(struct file *file, void *fh,
> struct v4l2_format *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
> struct v4l2_meta_format *meta = &f->fmt.meta;
>
> if (f->type != video->queue->type)
> return -EINVAL;
>
> memset(meta, 0, sizeof(*meta));
> - meta->dataformat = params->vdev_fmt.fmt.meta.dataformat;
> - meta->buffersize = params->vdev_fmt.fmt.meta.buffersize;
> + meta->dataformat = V4L2_META_FMT_RK_ISP1_PARAMS;
> + meta->buffersize = sizeof(struct rkisp1_params_cfg);
>
> return 0;
> }
> @@ -1897,19 +1895,6 @@ static int rkisp1_params_init_vb2_queue(struct vb2_queue *q,
> return vb2_queue_init(q);
> }
>
> -static void rkisp1_init_params(struct rkisp1_params *params)
> -{
> - params->vdev_fmt.fmt.meta.dataformat =
> - V4L2_META_FMT_RK_ISP1_PARAMS;
> - params->vdev_fmt.fmt.meta.buffersize =
> - sizeof(struct rkisp1_params_cfg);
> -
> - if (params->rkisp1->info->isp_ver == RKISP1_V12)
> - params->ops = &rkisp1_v12_params_ops;
> - else
> - params->ops = &rkisp1_v10_params_ops;
> -}
> -
> int rkisp1_params_register(struct rkisp1_device *rkisp1)
> {
> struct rkisp1_params *params = &rkisp1->params;
> @@ -1938,7 +1923,12 @@ int rkisp1_params_register(struct rkisp1_device *rkisp1)
> vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_META_OUTPUT;
> vdev->vfl_dir = VFL_DIR_TX;
> rkisp1_params_init_vb2_queue(vdev->queue, params);
> - rkisp1_init_params(params);
> +
> + if (params->rkisp1->info->isp_ver == RKISP1_V12)
> + params->ops = &rkisp1_v12_params_ops;
> + else
> + params->ops = &rkisp1_v10_params_ops;
> +
> video_set_drvdata(vdev, params);
>
> node->pad.flags = MEDIA_PAD_FL_SOURCE;
Hi Jacopo,
Thank you for the patch.
On Wed, Jun 05, 2024 at 06:54:22PM +0200, Jacopo Mondi wrote:
> The struct rkisp1_params type contains a v4l2_format instance which
> is used to store the buffer format and sizes to be used in enum_fmt and
> g_fmt operations.
>
> To prepare for supporting multiple meta output formats, to introduce
> support for extensible buffer formats, remove the cached format info
> and initialize them explicitly in the enum_fmt and g_fmt operations.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> .../platform/rockchip/rkisp1/rkisp1-common.h | 2 --
> .../platform/rockchip/rkisp1/rkisp1-params.c | 28 ++++++-------------
> 2 files changed, 9 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> index 26573f6ae575..2a715f964f6e 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> @@ -372,7 +372,6 @@ struct rkisp1_params_ops {
> * @ops: pointer to the variant-specific operations
> * @config_lock: locks the buffer list 'params'
> * @params: queue of rkisp1_buffer
> - * @vdev_fmt: v4l2_format of the metadata format
> * @quantization: the quantization configured on the isp's src pad
> * @raw_type: the bayer pattern on the isp video sink pad
> */
> @@ -383,7 +382,6 @@ struct rkisp1_params {
>
> spinlock_t config_lock; /* locks the buffers list 'params' */
> struct list_head params;
> - struct v4l2_format vdev_fmt;
>
> enum v4l2_quantization quantization;
> enum v4l2_ycbcr_encoding ycbcr_encoding;
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> index 173d1ea41874..1f449f29b241 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> @@ -1742,12 +1742,11 @@ static int rkisp1_params_enum_fmt_meta_out(struct file *file, void *priv,
> struct v4l2_fmtdesc *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
>
> if (f->index > 0 || f->type != video->queue->type)
> return -EINVAL;
>
> - f->pixelformat = params->vdev_fmt.fmt.meta.dataformat;
> + f->pixelformat = V4L2_META_FMT_RK_ISP1_PARAMS;
>
> return 0;
> }
> @@ -1756,15 +1755,14 @@ static int rkisp1_params_g_fmt_meta_out(struct file *file, void *fh,
> struct v4l2_format *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
> struct v4l2_meta_format *meta = &f->fmt.meta;
>
> if (f->type != video->queue->type)
> return -EINVAL;
>
> memset(meta, 0, sizeof(*meta));
> - meta->dataformat = params->vdev_fmt.fmt.meta.dataformat;
> - meta->buffersize = params->vdev_fmt.fmt.meta.buffersize;
> + meta->dataformat = V4L2_META_FMT_RK_ISP1_PARAMS;
> + meta->buffersize = sizeof(struct rkisp1_params_cfg);
>
> return 0;
> }
> @@ -1897,19 +1895,6 @@ static int rkisp1_params_init_vb2_queue(struct vb2_queue *q,
> return vb2_queue_init(q);
> }
>
> -static void rkisp1_init_params(struct rkisp1_params *params)
> -{
> - params->vdev_fmt.fmt.meta.dataformat =
> - V4L2_META_FMT_RK_ISP1_PARAMS;
> - params->vdev_fmt.fmt.meta.buffersize =
> - sizeof(struct rkisp1_params_cfg);
> -
> - if (params->rkisp1->info->isp_ver == RKISP1_V12)
> - params->ops = &rkisp1_v12_params_ops;
> - else
> - params->ops = &rkisp1_v10_params_ops;
> -}
> -
> int rkisp1_params_register(struct rkisp1_device *rkisp1)
> {
> struct rkisp1_params *params = &rkisp1->params;
> @@ -1938,7 +1923,12 @@ int rkisp1_params_register(struct rkisp1_device *rkisp1)
> vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_META_OUTPUT;
> vdev->vfl_dir = VFL_DIR_TX;
> rkisp1_params_init_vb2_queue(vdev->queue, params);
> - rkisp1_init_params(params);
> +
> + if (params->rkisp1->info->isp_ver == RKISP1_V12)
> + params->ops = &rkisp1_v12_params_ops;
> + else
> + params->ops = &rkisp1_v10_params_ops;
> +
> video_set_drvdata(vdev, params);
>
> node->pad.flags = MEDIA_PAD_FL_SOURCE;
On Wed, Jun 05, 2024 at 06:54:22PM +0200, Jacopo Mondi wrote:
> The struct rkisp1_params type contains a v4l2_format instance which
> is used to store the buffer format and sizes to be used in enum_fmt and
> g_fmt operations.
>
> To prepare for supporting multiple meta output formats, to introduce
> support for extensible buffer formats, remove the cached format info
> and initialize them explicitly in the enum_fmt and g_fmt operations.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
> ---
> .../platform/rockchip/rkisp1/rkisp1-common.h | 2 --
> .../platform/rockchip/rkisp1/rkisp1-params.c | 28 ++++++-------------
> 2 files changed, 9 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> index 26573f6ae575..2a715f964f6e 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> @@ -372,7 +372,6 @@ struct rkisp1_params_ops {
> * @ops: pointer to the variant-specific operations
> * @config_lock: locks the buffer list 'params'
> * @params: queue of rkisp1_buffer
> - * @vdev_fmt: v4l2_format of the metadata format
> * @quantization: the quantization configured on the isp's src pad
> * @raw_type: the bayer pattern on the isp video sink pad
> */
> @@ -383,7 +382,6 @@ struct rkisp1_params {
>
> spinlock_t config_lock; /* locks the buffers list 'params' */
> struct list_head params;
> - struct v4l2_format vdev_fmt;
>
> enum v4l2_quantization quantization;
> enum v4l2_ycbcr_encoding ycbcr_encoding;
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> index 173d1ea41874..1f449f29b241 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> @@ -1742,12 +1742,11 @@ static int rkisp1_params_enum_fmt_meta_out(struct file *file, void *priv,
> struct v4l2_fmtdesc *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
>
> if (f->index > 0 || f->type != video->queue->type)
> return -EINVAL;
>
> - f->pixelformat = params->vdev_fmt.fmt.meta.dataformat;
> + f->pixelformat = V4L2_META_FMT_RK_ISP1_PARAMS;
>
> return 0;
> }
> @@ -1756,15 +1755,14 @@ static int rkisp1_params_g_fmt_meta_out(struct file *file, void *fh,
> struct v4l2_format *f)
> {
> struct video_device *video = video_devdata(file);
> - struct rkisp1_params *params = video_get_drvdata(video);
> struct v4l2_meta_format *meta = &f->fmt.meta;
>
> if (f->type != video->queue->type)
> return -EINVAL;
>
> memset(meta, 0, sizeof(*meta));
> - meta->dataformat = params->vdev_fmt.fmt.meta.dataformat;
> - meta->buffersize = params->vdev_fmt.fmt.meta.buffersize;
> + meta->dataformat = V4L2_META_FMT_RK_ISP1_PARAMS;
> + meta->buffersize = sizeof(struct rkisp1_params_cfg);
>
> return 0;
> }
> @@ -1897,19 +1895,6 @@ static int rkisp1_params_init_vb2_queue(struct vb2_queue *q,
> return vb2_queue_init(q);
> }
>
> -static void rkisp1_init_params(struct rkisp1_params *params)
> -{
> - params->vdev_fmt.fmt.meta.dataformat =
> - V4L2_META_FMT_RK_ISP1_PARAMS;
> - params->vdev_fmt.fmt.meta.buffersize =
> - sizeof(struct rkisp1_params_cfg);
> -
> - if (params->rkisp1->info->isp_ver == RKISP1_V12)
> - params->ops = &rkisp1_v12_params_ops;
> - else
> - params->ops = &rkisp1_v10_params_ops;
> -}
> -
> int rkisp1_params_register(struct rkisp1_device *rkisp1)
> {
> struct rkisp1_params *params = &rkisp1->params;
> @@ -1938,7 +1923,12 @@ int rkisp1_params_register(struct rkisp1_device *rkisp1)
> vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_META_OUTPUT;
> vdev->vfl_dir = VFL_DIR_TX;
> rkisp1_params_init_vb2_queue(vdev->queue, params);
> - rkisp1_init_params(params);
> +
> + if (params->rkisp1->info->isp_ver == RKISP1_V12)
> + params->ops = &rkisp1_v12_params_ops;
> + else
> + params->ops = &rkisp1_v10_params_ops;
> +
> video_set_drvdata(vdev, params);
>
> node->pad.flags = MEDIA_PAD_FL_SOURCE;
> --
> 2.45.1
>
@@ -372,7 +372,6 @@ struct rkisp1_params_ops {
* @ops: pointer to the variant-specific operations
* @config_lock: locks the buffer list 'params'
* @params: queue of rkisp1_buffer
- * @vdev_fmt: v4l2_format of the metadata format
* @quantization: the quantization configured on the isp's src pad
* @raw_type: the bayer pattern on the isp video sink pad
*/
@@ -383,7 +382,6 @@ struct rkisp1_params {
spinlock_t config_lock; /* locks the buffers list 'params' */
struct list_head params;
- struct v4l2_format vdev_fmt;
enum v4l2_quantization quantization;
enum v4l2_ycbcr_encoding ycbcr_encoding;
@@ -1742,12 +1742,11 @@ static int rkisp1_params_enum_fmt_meta_out(struct file *file, void *priv,
struct v4l2_fmtdesc *f)
{
struct video_device *video = video_devdata(file);
- struct rkisp1_params *params = video_get_drvdata(video);
if (f->index > 0 || f->type != video->queue->type)
return -EINVAL;
- f->pixelformat = params->vdev_fmt.fmt.meta.dataformat;
+ f->pixelformat = V4L2_META_FMT_RK_ISP1_PARAMS;
return 0;
}
@@ -1756,15 +1755,14 @@ static int rkisp1_params_g_fmt_meta_out(struct file *file, void *fh,
struct v4l2_format *f)
{
struct video_device *video = video_devdata(file);
- struct rkisp1_params *params = video_get_drvdata(video);
struct v4l2_meta_format *meta = &f->fmt.meta;
if (f->type != video->queue->type)
return -EINVAL;
memset(meta, 0, sizeof(*meta));
- meta->dataformat = params->vdev_fmt.fmt.meta.dataformat;
- meta->buffersize = params->vdev_fmt.fmt.meta.buffersize;
+ meta->dataformat = V4L2_META_FMT_RK_ISP1_PARAMS;
+ meta->buffersize = sizeof(struct rkisp1_params_cfg);
return 0;
}
@@ -1897,19 +1895,6 @@ static int rkisp1_params_init_vb2_queue(struct vb2_queue *q,
return vb2_queue_init(q);
}
-static void rkisp1_init_params(struct rkisp1_params *params)
-{
- params->vdev_fmt.fmt.meta.dataformat =
- V4L2_META_FMT_RK_ISP1_PARAMS;
- params->vdev_fmt.fmt.meta.buffersize =
- sizeof(struct rkisp1_params_cfg);
-
- if (params->rkisp1->info->isp_ver == RKISP1_V12)
- params->ops = &rkisp1_v12_params_ops;
- else
- params->ops = &rkisp1_v10_params_ops;
-}
-
int rkisp1_params_register(struct rkisp1_device *rkisp1)
{
struct rkisp1_params *params = &rkisp1->params;
@@ -1938,7 +1923,12 @@ int rkisp1_params_register(struct rkisp1_device *rkisp1)
vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_META_OUTPUT;
vdev->vfl_dir = VFL_DIR_TX;
rkisp1_params_init_vb2_queue(vdev->queue, params);
- rkisp1_init_params(params);
+
+ if (params->rkisp1->info->isp_ver == RKISP1_V12)
+ params->ops = &rkisp1_v12_params_ops;
+ else
+ params->ops = &rkisp1_v10_params_ops;
+
video_set_drvdata(vdev, params);
node->pad.flags = MEDIA_PAD_FL_SOURCE;