Re: [PATCH 7/7] media: renesas: vsp1: Implement control events

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

 



Hi Laurent

On Wed, Apr 30, 2025 at 02:53:22AM +0300, Laurent Pinchart wrote:
> The V4L2 API requires drivers that expose controls to implement control
> notification events. This is enforced by v4l2-compliance. Add event
> handling to the VSP1 entities that create controls to fix the compliance
> failures.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>

Reviewed-by: Jacopo Mondi <jacopo.mondi@xxxxxxxxxxxxxxxx>

Thanks
  j

> ---
>  drivers/media/platform/renesas/vsp1/vsp1_brx.c    | 1 +
>  drivers/media/platform/renesas/vsp1/vsp1_clu.c    | 1 +
>  drivers/media/platform/renesas/vsp1/vsp1_entity.c | 9 +++++++++
>  drivers/media/platform/renesas/vsp1/vsp1_entity.h | 2 ++
>  drivers/media/platform/renesas/vsp1/vsp1_histo.c  | 1 +
>  drivers/media/platform/renesas/vsp1/vsp1_lut.c    | 1 +
>  drivers/media/platform/renesas/vsp1/vsp1_rwpf.c   | 1 +
>  drivers/media/platform/renesas/vsp1/vsp1_sru.c    | 1 +
>  8 files changed, 17 insertions(+)
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_brx.c b/drivers/media/platform/renesas/vsp1/vsp1_brx.c
> index 911359faa600..b1a2c68e9944 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_brx.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_brx.c
> @@ -269,6 +269,7 @@ static const struct v4l2_subdev_pad_ops brx_pad_ops = {
>  };
>
>  static const struct v4l2_subdev_ops brx_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &brx_pad_ops,
>  };
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_clu.c b/drivers/media/platform/renesas/vsp1/vsp1_clu.c
> index a56c038a2c71..04c466c4da81 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_clu.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_clu.c
> @@ -130,6 +130,7 @@ static const struct v4l2_subdev_pad_ops clu_pad_ops = {
>  };
>
>  static const struct v4l2_subdev_ops clu_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &clu_pad_ops,
>  };
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_entity.c b/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> index a3d4bf2887ec..27c172788621 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_entity.c
> @@ -12,6 +12,7 @@
>
>  #include <media/media-entity.h>
>  #include <media/v4l2-ctrls.h>
> +#include <media/v4l2-event.h>
>  #include <media/v4l2-subdev.h>
>
>  #include "vsp1.h"
> @@ -389,6 +390,11 @@ static const struct v4l2_subdev_internal_ops vsp1_entity_internal_ops = {
>  	.init_state = vsp1_entity_init_state,
>  };
>
> +const struct v4l2_subdev_core_ops vsp1_entity_core_ops = {
> +	.subscribe_event = v4l2_ctrl_subdev_subscribe_event,
> +	.unsubscribe_event = v4l2_event_subdev_unsubscribe,
> +};
> +
>  /* -----------------------------------------------------------------------------
>   * Media Operations
>   */
> @@ -629,6 +635,9 @@ int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity,
>  	subdev->entity.ops = &vsp1->media_ops;
>  	subdev->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
>
> +	if (ops->core == &vsp1_entity_core_ops)
> +		subdev->flags |= V4L2_SUBDEV_FL_HAS_EVENTS;
> +
>  	snprintf(subdev->name, sizeof(subdev->name), "%s %s",
>  		 dev_name(vsp1->dev), name);
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_entity.h b/drivers/media/platform/renesas/vsp1/vsp1_entity.h
> index 5542f6446b16..626fb1d5d470 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_entity.h
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_entity.h
> @@ -142,6 +142,8 @@ static inline struct vsp1_entity *to_vsp1_entity(struct v4l2_subdev *subdev)
>  	return container_of(subdev, struct vsp1_entity, subdev);
>  }
>
> +extern const struct v4l2_subdev_core_ops vsp1_entity_core_ops;
> +
>  int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity,
>  		     const char *name, unsigned int num_pads,
>  		     const struct v4l2_subdev_ops *ops, u32 function);
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_histo.c b/drivers/media/platform/renesas/vsp1/vsp1_histo.c
> index a1b3671a0873..158d01aa5e81 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_histo.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_histo.c
> @@ -370,6 +370,7 @@ static const struct v4l2_subdev_pad_ops histo_pad_ops = {
>  };
>
>  static const struct v4l2_subdev_ops histo_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &histo_pad_ops,
>  };
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_lut.c b/drivers/media/platform/renesas/vsp1/vsp1_lut.c
> index 2ec4d596465d..94bdedcc5c92 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_lut.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_lut.c
> @@ -106,6 +106,7 @@ static const struct v4l2_subdev_pad_ops lut_pad_ops = {
>  };
>
>  static const struct v4l2_subdev_ops lut_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &lut_pad_ops,
>  };
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_rwpf.c b/drivers/media/platform/renesas/vsp1/vsp1_rwpf.c
> index bd97fc75eb5b..32b018e21f57 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_rwpf.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_rwpf.c
> @@ -351,6 +351,7 @@ static const struct v4l2_subdev_pad_ops vsp1_rwpf_pad_ops = {
>  };
>
>  const struct v4l2_subdev_ops vsp1_rwpf_subdev_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &vsp1_rwpf_pad_ops,
>  };
>
> diff --git a/drivers/media/platform/renesas/vsp1/vsp1_sru.c b/drivers/media/platform/renesas/vsp1/vsp1_sru.c
> index e821eac1cbc2..30b482a160c2 100644
> --- a/drivers/media/platform/renesas/vsp1/vsp1_sru.c
> +++ b/drivers/media/platform/renesas/vsp1/vsp1_sru.c
> @@ -250,6 +250,7 @@ static const struct v4l2_subdev_pad_ops sru_pad_ops = {
>  };
>
>  static const struct v4l2_subdev_ops sru_ops = {
> +	.core	= &vsp1_entity_core_ops,
>  	.pad    = &sru_pad_ops,
>  };
>
> --
> Regards,
>
> Laurent Pinchart
>
>




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux