Re: [PATCH] media: i2c: rdacm2x: properly set subdev entity function

From: Jacopo Mondi
Date: Wed Mar 09 2022 - 03:43:27 EST


Hi Laurentiu,

On Tue, Mar 08, 2022 at 02:55:49PM +0200, Laurentiu Palcu wrote:
> The subdevice entity function was left unset, which produces a warning
> when probing the device:
>
> mxc-md bus@58000000:camera: Entity type for entity rdacm20 19-0051 was
> not initialized!
>
> Also, set the entity flags to MEDIA_ENT_FL_DEFAULT instead of
> MEDIA_ENT_F_CAM_SENSOR which will be used for entity's function instead.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@xxxxxxxxxxx>
> ---
> Hi,
>
> Only tested the rdacm20 part but I believe rdacm21 should work as well.
>
> Cheers,
> laurentiu
>
> drivers/media/i2c/rdacm20.c | 3 ++-
> drivers/media/i2c/rdacm21.c | 3 ++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/i2c/rdacm20.c b/drivers/media/i2c/rdacm20.c
> index 025a610de893..ea5b7d5151ee 100644
> --- a/drivers/media/i2c/rdacm20.c
> +++ b/drivers/media/i2c/rdacm20.c
> @@ -611,7 +611,8 @@ static int rdacm20_probe(struct i2c_client *client)
> goto error_free_ctrls;
>
> dev->pad.flags = MEDIA_PAD_FL_SOURCE;
> - dev->sd.entity.flags |= MEDIA_ENT_F_CAM_SENSOR;
> + dev->sd.entity.flags |= MEDIA_ENT_FL_DEFAULT;

I'm not sure if setting the DEFAULT flag is right:

* %MEDIA_ENT_FL_DEFAULT
* indicates the default entity for a given type.
* This can be used to report the default audio and video devices or the
* default camera sensor.

In a typical setup there will be several RDACM2x in use, marking all
of them as "default" seems not right (if I understood the flag
description right).


> + dev->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;

This seems right, and it's probably worth a Fixes tag?

Thanks
j

> ret = media_entity_pads_init(&dev->sd.entity, 1, &dev->pad);
> if (ret < 0)
> goto error_free_ctrls;
> diff --git a/drivers/media/i2c/rdacm21.c b/drivers/media/i2c/rdacm21.c
> index 12ec5467ed1e..be89bd43e88b 100644
> --- a/drivers/media/i2c/rdacm21.c
> +++ b/drivers/media/i2c/rdacm21.c
> @@ -583,7 +583,8 @@ static int rdacm21_probe(struct i2c_client *client)
> goto error_free_ctrls;
>
> dev->pad.flags = MEDIA_PAD_FL_SOURCE;
> - dev->sd.entity.flags |= MEDIA_ENT_F_CAM_SENSOR;
> + dev->sd.entity.flags |= MEDIA_ENT_FL_DEFAULT;
> + dev->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
> ret = media_entity_pads_init(&dev->sd.entity, 1, &dev->pad);
> if (ret < 0)
> goto error_free_ctrls;
> --
> 2.33.0
>