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@xxxxxxxxxxxxxxxx> >> Signed-off-by: Rui Miguel Silva <rui.silva@xxxxxxxxxx> >> --- >> 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@xxxxxxxxxxxxxxxxxxxxxx > http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel