[PATCH] media: staging/imx: add media device to capture register

Rui Miguel Silva rmfrfs at gmail.com
Sun Apr 28 20:35:42 UTC 2019


Hi Steve,
On Sun 28 Apr 2019 at 19:53, Steve Longerbeam wrote:
> Hi Rui,
>
> On second thought, there is no reason to pass the media device to 
> imx_media_capture_device_register(), because it is already available via 
> v4l2_dev->mdev. I will be posting a patch in v2 of the "Switch to sync 
> registration for IPU subdevs" series that fixes this.

That make sense to me. I've already took a look to v2 and I like
the ideas in there, I will give it a proper test and review
tomorrow. Will send feedback afterwards.

Thanks so much for your work on this.

---
Cheers,
	Rui

>
> Steve
>
>
> On 4/12/19 9:44 AM, Rui Miguel Silva wrote:
>> When register the capture media device it is assumed that the device
>> data is the media device. In the imx6 case is but in the imx7 is not
>> case. The device data is the csi structure.
>>
>> Add the explicit argument of the media device that we want to
>> associate with the capture device.
>>
>> Reported-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>> Signed-off-by: Rui Miguel Silva <rui.silva at linaro.org>
>> ---
>>   drivers/staging/media/imx/imx-ic-prpencvf.c   | 2 +-
>>   drivers/staging/media/imx/imx-media-capture.c | 6 +++---
>>   drivers/staging/media/imx/imx-media-csi.c     | 2 +-
>>   drivers/staging/media/imx/imx-media.h         | 3 ++-
>>   drivers/staging/media/imx/imx7-media-csi.c    | 2 +-
>>   5 files changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/staging/media/imx/imx-ic-prpencvf.c b/drivers/staging/media/imx/imx-ic-prpencvf.c
>> index 5c8e6ad8c025..3ca1422f6154 100644
>> --- a/drivers/staging/media/imx/imx-ic-prpencvf.c
>> +++ b/drivers/staging/media/imx/imx-ic-prpencvf.c
>> @@ -1270,7 +1270,7 @@ static int prp_registered(struct v4l2_subdev *sd)
>>   	if (ret)
>>   		return ret;
>>   
>> -	ret = imx_media_capture_device_register(priv->vdev);
>> +	ret = imx_media_capture_device_register(priv->md, priv->vdev);
>>   	if (ret)
>>   		return ret;
>>   
>> diff --git a/drivers/staging/media/imx/imx-media-capture.c b/drivers/staging/media/imx/imx-media-capture.c
>> index 9703c85b19c4..7688238a3396 100644
>> --- a/drivers/staging/media/imx/imx-media-capture.c
>> +++ b/drivers/staging/media/imx/imx-media-capture.c
>> @@ -706,7 +706,8 @@ void imx_media_capture_device_error(struct imx_media_video_dev *vdev)
>>   }
>>   EXPORT_SYMBOL_GPL(imx_media_capture_device_error);
>>   
>> -int imx_media_capture_device_register(struct imx_media_video_dev *vdev)
>> +int imx_media_capture_device_register(struct imx_media_dev *md,
>> +				      struct imx_media_video_dev *vdev)
>>   {
>>   	struct capture_priv *priv = to_capture_priv(vdev);
>>   	struct v4l2_subdev *sd = priv->src_sd;
>> @@ -715,8 +716,7 @@ int imx_media_capture_device_register(struct imx_media_video_dev *vdev)
>>   	struct v4l2_subdev_format fmt_src;
>>   	int ret;
>>   
>> -	/* get media device */
>> -	priv->md = dev_get_drvdata(sd->v4l2_dev->dev);
>> +	priv->md = md;
>>   
>>   	vfd->v4l2_dev = sd->v4l2_dev;
>>   
>> diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c
>> index 3b7517348666..3408ec023d29 100644
>> --- a/drivers/staging/media/imx/imx-media-csi.c
>> +++ b/drivers/staging/media/imx/imx-media-csi.c
>> @@ -1806,7 +1806,7 @@ static int csi_registered(struct v4l2_subdev *sd)
>>   	if (ret)
>>   		goto free_fim;
>>   
>> -	ret = imx_media_capture_device_register(priv->vdev);
>> +	ret = imx_media_capture_device_register(priv->md, priv->vdev);
>>   	if (ret)
>>   		goto free_fim;
>>   
>> diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
>> index ae964c8d5be1..c3a8512bd10f 100644
>> --- a/drivers/staging/media/imx/imx-media.h
>> +++ b/drivers/staging/media/imx/imx-media.h
>> @@ -271,7 +271,8 @@ int imx_media_of_add_csi(struct imx_media_dev *imxmd,
>>   struct imx_media_video_dev *
>>   imx_media_capture_device_init(struct v4l2_subdev *src_sd, int pad);
>>   void imx_media_capture_device_remove(struct imx_media_video_dev *vdev);
>> -int imx_media_capture_device_register(struct imx_media_video_dev *vdev);
>> +int imx_media_capture_device_register(struct imx_media_dev *md,
>> +				       struct imx_media_video_dev *vdev);
>>   void imx_media_capture_device_unregister(struct imx_media_video_dev *vdev);
>>   struct imx_media_buffer *
>>   imx_media_capture_device_next_buf(struct imx_media_video_dev *vdev);
>> diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
>> index 3fba7c27c0ec..a907c5feb3eb 100644
>> --- a/drivers/staging/media/imx/imx7-media-csi.c
>> +++ b/drivers/staging/media/imx/imx7-media-csi.c
>> @@ -1124,7 +1124,7 @@ static int imx7_csi_registered(struct v4l2_subdev *sd)
>>   	if (ret < 0)
>>   		return ret;
>>   
>> -	ret = imx_media_capture_device_register(csi->vdev);
>> +	ret = imx_media_capture_device_register(csi->imxmd, csi->vdev);
>>   	if (ret < 0)
>>   		return ret;
>>   
>
> _______________________________________________
> devel mailing list
> devel at linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



More information about the devel mailing list