Message ID | 20220614191127.3420492-28-paul.elder@ideasonboard.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: rkisp1: Cleanups and add support for i.MX8MP | expand |
On 15.06.2022 04:10, Paul Elder wrote: >From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > >The active_sensor field of the rkisp1_device structure points to the ASD >data for the active source. The source may however not be a sensor, so >the naming is a bit confusing. Furthermore, the driver doesn't need to >access the full ASD from the active_sensor field, only the subdev >pointer is needed, when stopping streaming. > >Rename the field to source, and turn it into a v4l2_subdev pointer. > >Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com> >--- > .../platform/rockchip/rkisp1/rkisp1-common.h | 4 +-- > .../platform/rockchip/rkisp1/rkisp1-isp.c | 27 +++++++++---------- > 2 files changed, 14 insertions(+), 17 deletions(-) > >diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >index dbf1baca623a..7a6f55a31bb0 100644 >--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >@@ -419,7 +419,7 @@ struct rkisp1_debug { > * @v4l2_dev: v4l2_device variable > * @media_dev: media_device variable > * @notifier: a notifier to register on the v4l2-async API to be notified on the sensor >- * @active_sensor: sensor in-use, set when streaming on >+ * @source: source subdev in-use, set when starting streaming > * @csi: internal CSI-2 receiver > * @isp: ISP sub-device > * @resizer_devs: resizer sub-devices >@@ -439,7 +439,7 @@ struct rkisp1_device { > struct v4l2_device v4l2_dev; > struct media_device media_dev; > struct v4l2_async_notifier notifier; >- struct rkisp1_sensor_async *active_sensor; >+ struct v4l2_subdev *source; > struct rkisp1_csi csi; > struct rkisp1_isp isp; > struct rkisp1_resizer resizer_devs[2]; >diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >index f6d1c93dd99d..4f12fc0b7694 100644 >--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >@@ -58,7 +58,7 @@ > * Helpers > */ > >-static struct v4l2_subdev *rkisp1_get_remote_sensor(struct v4l2_subdev *sd) >+static struct v4l2_subdev *rkisp1_get_remote_source(struct v4l2_subdev *sd) > { > struct media_pad *local, *remote; > struct media_entity *sensor_me; >@@ -749,12 +749,11 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) > struct rkisp1_device *rkisp1 = > container_of(sd->v4l2_dev, struct rkisp1_device, v4l2_dev); > struct rkisp1_isp *isp = &rkisp1->isp; >- struct v4l2_subdev *sensor_sd; >+ struct rkisp1_sensor_async *asd; > int ret; > > if (!enable) { >- v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, >- false); >+ v4l2_subdev_call(rkisp1->source, video, s_stream, false); > > rkisp1_csi_stop(&rkisp1->csi); > rkisp1_isp_stop(rkisp1); >@@ -762,35 +761,33 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) > return 0; > } > >- sensor_sd = rkisp1_get_remote_sensor(sd); >- if (!sensor_sd) { >- dev_warn(rkisp1->dev, "No link between isp and sensor\n"); >+ rkisp1->source = rkisp1_get_remote_source(sd); >+ if (!rkisp1->source) { >+ dev_warn(rkisp1->dev, "No link between isp and source\n"); > return -ENODEV; > } > >- rkisp1->active_sensor = container_of(sensor_sd->asd, >- struct rkisp1_sensor_async, asd); >+ asd = container_of(rkisp1->source->asd, struct rkisp1_sensor_async, >+ asd); > >- if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY) >+ if (asd->mbus_type != V4L2_MBUS_CSI2_DPHY) > return -EINVAL; > > rkisp1->isp.frame_sequence = -1; > mutex_lock(&isp->ops_lock); >- ret = rkisp1_config_cif(rkisp1, rkisp1->active_sensor->mbus_type, >- rkisp1->active_sensor->mbus_flags); >+ ret = rkisp1_config_cif(rkisp1, asd->mbus_type, asd->mbus_flags); > if (ret) > goto mutex_unlock; > > rkisp1_isp_start(rkisp1); > >- ret = rkisp1_csi_start(&rkisp1->csi, rkisp1->active_sensor); >+ ret = rkisp1_csi_start(&rkisp1->csi, asd); > if (ret) { > rkisp1_isp_stop(rkisp1); > goto mutex_unlock; > } > >- ret = v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, >- true); >+ ret = v4l2_subdev_call(rkisp1->source, video, s_stream, true); > if (ret) { > rkisp1_isp_stop(rkisp1); > rkisp1_csi_stop(&rkisp1->csi); >-- >2.30.2 >
On 15.06.2022 04:10, Paul Elder wrote: >From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com> > >The active_sensor field of the rkisp1_device structure points to the ASD >data for the active source. The source may however not be a sensor, so >the naming is a bit confusing. Furthermore, the driver doesn't need to >access the full ASD from the active_sensor field, only the subdev >pointer is needed, when stopping streaming. > >Rename the field to source, and turn it into a v4l2_subdev pointer. > >Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> >--- > .../platform/rockchip/rkisp1/rkisp1-common.h | 4 +-- > .../platform/rockchip/rkisp1/rkisp1-isp.c | 27 +++++++++---------- > 2 files changed, 14 insertions(+), 17 deletions(-) > >diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >index dbf1baca623a..7a6f55a31bb0 100644 >--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h >@@ -419,7 +419,7 @@ struct rkisp1_debug { > * @v4l2_dev: v4l2_device variable > * @media_dev: media_device variable > * @notifier: a notifier to register on the v4l2-async API to be notified on the sensor >- * @active_sensor: sensor in-use, set when streaming on >+ * @source: source subdev in-use, set when starting streaming > * @csi: internal CSI-2 receiver > * @isp: ISP sub-device > * @resizer_devs: resizer sub-devices >@@ -439,7 +439,7 @@ struct rkisp1_device { > struct v4l2_device v4l2_dev; > struct media_device media_dev; > struct v4l2_async_notifier notifier; >- struct rkisp1_sensor_async *active_sensor; >+ struct v4l2_subdev *source; > struct rkisp1_csi csi; > struct rkisp1_isp isp; > struct rkisp1_resizer resizer_devs[2]; >diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >index f6d1c93dd99d..4f12fc0b7694 100644 >--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c >@@ -58,7 +58,7 @@ > * Helpers > */ > >-static struct v4l2_subdev *rkisp1_get_remote_sensor(struct v4l2_subdev *sd) >+static struct v4l2_subdev *rkisp1_get_remote_source(struct v4l2_subdev *sd) > { > struct media_pad *local, *remote; > struct media_entity *sensor_me; >@@ -749,12 +749,11 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) > struct rkisp1_device *rkisp1 = > container_of(sd->v4l2_dev, struct rkisp1_device, v4l2_dev); > struct rkisp1_isp *isp = &rkisp1->isp; >- struct v4l2_subdev *sensor_sd; >+ struct rkisp1_sensor_async *asd; > int ret; > > if (!enable) { >- v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, >- false); >+ v4l2_subdev_call(rkisp1->source, video, s_stream, false); > > rkisp1_csi_stop(&rkisp1->csi); > rkisp1_isp_stop(rkisp1); >@@ -762,35 +761,33 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) > return 0; > } > >- sensor_sd = rkisp1_get_remote_sensor(sd); >- if (!sensor_sd) { >- dev_warn(rkisp1->dev, "No link between isp and sensor\n"); >+ rkisp1->source = rkisp1_get_remote_source(sd); >+ if (!rkisp1->source) { >+ dev_warn(rkisp1->dev, "No link between isp and source\n"); > return -ENODEV; > } > >- rkisp1->active_sensor = container_of(sensor_sd->asd, >- struct rkisp1_sensor_async, asd); >+ asd = container_of(rkisp1->source->asd, struct rkisp1_sensor_async, >+ asd); > >- if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY) >+ if (asd->mbus_type != V4L2_MBUS_CSI2_DPHY) > return -EINVAL; > > rkisp1->isp.frame_sequence = -1; > mutex_lock(&isp->ops_lock); >- ret = rkisp1_config_cif(rkisp1, rkisp1->active_sensor->mbus_type, >- rkisp1->active_sensor->mbus_flags); >+ ret = rkisp1_config_cif(rkisp1, asd->mbus_type, asd->mbus_flags); > if (ret) > goto mutex_unlock; > > rkisp1_isp_start(rkisp1); > >- ret = rkisp1_csi_start(&rkisp1->csi, rkisp1->active_sensor); >+ ret = rkisp1_csi_start(&rkisp1->csi, asd); > if (ret) { > rkisp1_isp_stop(rkisp1); > goto mutex_unlock; > } > >- ret = v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, >- true); >+ ret = v4l2_subdev_call(rkisp1->source, video, s_stream, true); > if (ret) { > rkisp1_isp_stop(rkisp1); > rkisp1_csi_stop(&rkisp1->csi); >-- >2.30.2 >
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h index dbf1baca623a..7a6f55a31bb0 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h @@ -419,7 +419,7 @@ struct rkisp1_debug { * @v4l2_dev: v4l2_device variable * @media_dev: media_device variable * @notifier: a notifier to register on the v4l2-async API to be notified on the sensor - * @active_sensor: sensor in-use, set when streaming on + * @source: source subdev in-use, set when starting streaming * @csi: internal CSI-2 receiver * @isp: ISP sub-device * @resizer_devs: resizer sub-devices @@ -439,7 +439,7 @@ struct rkisp1_device { struct v4l2_device v4l2_dev; struct media_device media_dev; struct v4l2_async_notifier notifier; - struct rkisp1_sensor_async *active_sensor; + struct v4l2_subdev *source; struct rkisp1_csi csi; struct rkisp1_isp isp; struct rkisp1_resizer resizer_devs[2]; diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c index f6d1c93dd99d..4f12fc0b7694 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c @@ -58,7 +58,7 @@ * Helpers */ -static struct v4l2_subdev *rkisp1_get_remote_sensor(struct v4l2_subdev *sd) +static struct v4l2_subdev *rkisp1_get_remote_source(struct v4l2_subdev *sd) { struct media_pad *local, *remote; struct media_entity *sensor_me; @@ -749,12 +749,11 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) struct rkisp1_device *rkisp1 = container_of(sd->v4l2_dev, struct rkisp1_device, v4l2_dev); struct rkisp1_isp *isp = &rkisp1->isp; - struct v4l2_subdev *sensor_sd; + struct rkisp1_sensor_async *asd; int ret; if (!enable) { - v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, - false); + v4l2_subdev_call(rkisp1->source, video, s_stream, false); rkisp1_csi_stop(&rkisp1->csi); rkisp1_isp_stop(rkisp1); @@ -762,35 +761,33 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable) return 0; } - sensor_sd = rkisp1_get_remote_sensor(sd); - if (!sensor_sd) { - dev_warn(rkisp1->dev, "No link between isp and sensor\n"); + rkisp1->source = rkisp1_get_remote_source(sd); + if (!rkisp1->source) { + dev_warn(rkisp1->dev, "No link between isp and source\n"); return -ENODEV; } - rkisp1->active_sensor = container_of(sensor_sd->asd, - struct rkisp1_sensor_async, asd); + asd = container_of(rkisp1->source->asd, struct rkisp1_sensor_async, + asd); - if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY) + if (asd->mbus_type != V4L2_MBUS_CSI2_DPHY) return -EINVAL; rkisp1->isp.frame_sequence = -1; mutex_lock(&isp->ops_lock); - ret = rkisp1_config_cif(rkisp1, rkisp1->active_sensor->mbus_type, - rkisp1->active_sensor->mbus_flags); + ret = rkisp1_config_cif(rkisp1, asd->mbus_type, asd->mbus_flags); if (ret) goto mutex_unlock; rkisp1_isp_start(rkisp1); - ret = rkisp1_csi_start(&rkisp1->csi, rkisp1->active_sensor); + ret = rkisp1_csi_start(&rkisp1->csi, asd); if (ret) { rkisp1_isp_stop(rkisp1); goto mutex_unlock; } - ret = v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream, - true); + ret = v4l2_subdev_call(rkisp1->source, video, s_stream, true); if (ret) { rkisp1_isp_stop(rkisp1); rkisp1_csi_stop(&rkisp1->csi);