Commit b6ae1019 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

media: staging: media: imx: imx7-media-csi: Fold imx_media_dev into imx7_csi

Now that the driver doesn't use any helper that relies on the
imx_media_dev structure anymore, merge the three fields of the
imx_media_dev structure directly in the imx7_csi structure. Update all
the users accordingly.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Tested-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent f5c67342
...@@ -183,8 +183,10 @@ struct imx7_csi { ...@@ -183,8 +183,10 @@ struct imx7_csi {
spinlock_t irqlock; /* Protects last_eof */ spinlock_t irqlock; /* Protects last_eof */
/* Media and V4L2 device */ /* Media and V4L2 device */
struct imx_media_dev imxmd; struct media_device mdev;
struct v4l2_device v4l2_dev;
struct v4l2_async_notifier notifier; struct v4l2_async_notifier notifier;
struct media_pipeline pipe;
struct v4l2_subdev *src_sd; struct v4l2_subdev *src_sd;
bool is_csi2; bool is_csi2;
...@@ -1081,9 +1083,9 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq, ...@@ -1081,9 +1083,9 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq,
goto err_buffers; goto err_buffers;
} }
mutex_lock(&csi->imxmd.md.graph_mutex); mutex_lock(&csi->mdev.graph_mutex);
ret = __media_pipeline_start(&csi->sd.entity, &csi->imxmd.pipe); ret = __media_pipeline_start(&csi->sd.entity, &csi->pipe);
if (ret) if (ret)
goto err_unlock; goto err_unlock;
...@@ -1091,14 +1093,14 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq, ...@@ -1091,14 +1093,14 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq,
if (ret) if (ret)
goto err_stop; goto err_stop;
mutex_unlock(&csi->imxmd.md.graph_mutex); mutex_unlock(&csi->mdev.graph_mutex);
return 0; return 0;
err_stop: err_stop:
__media_pipeline_stop(&csi->sd.entity); __media_pipeline_stop(&csi->sd.entity);
err_unlock: err_unlock:
mutex_unlock(&csi->imxmd.md.graph_mutex); mutex_unlock(&csi->mdev.graph_mutex);
dev_err(csi->dev, "pipeline start failed with %d\n", ret); dev_err(csi->dev, "pipeline start failed with %d\n", ret);
err_buffers: err_buffers:
spin_lock_irqsave(&csi->q_lock, flags); spin_lock_irqsave(&csi->q_lock, flags);
...@@ -1117,10 +1119,10 @@ static void imx7_csi_video_stop_streaming(struct vb2_queue *vq) ...@@ -1117,10 +1119,10 @@ static void imx7_csi_video_stop_streaming(struct vb2_queue *vq)
struct imx_media_buffer *tmp; struct imx_media_buffer *tmp;
unsigned long flags; unsigned long flags;
mutex_lock(&csi->imxmd.md.graph_mutex); mutex_lock(&csi->mdev.graph_mutex);
v4l2_subdev_call(&csi->sd, video, s_stream, 0); v4l2_subdev_call(&csi->sd, video, s_stream, 0);
__media_pipeline_stop(&csi->sd.entity); __media_pipeline_stop(&csi->sd.entity);
mutex_unlock(&csi->imxmd.md.graph_mutex); mutex_unlock(&csi->mdev.graph_mutex);
/* release all active buffers */ /* release all active buffers */
spin_lock_irqsave(&csi->q_lock, flags); spin_lock_irqsave(&csi->q_lock, flags);
...@@ -1704,11 +1706,11 @@ static int imx7_csi_registered(struct v4l2_subdev *sd) ...@@ -1704,11 +1706,11 @@ static int imx7_csi_registered(struct v4l2_subdev *sd)
if (ret) if (ret)
return ret; return ret;
ret = v4l2_device_register_subdev_nodes(&csi->imxmd.v4l2_dev); ret = v4l2_device_register_subdev_nodes(&csi->v4l2_dev);
if (ret) if (ret)
goto err_unreg; goto err_unreg;
ret = media_device_register(&csi->imxmd.md); ret = media_device_register(&csi->mdev);
if (ret) if (ret)
goto err_unreg; goto err_unreg;
...@@ -1778,7 +1780,7 @@ static int imx7_csi_notify_complete(struct v4l2_async_notifier *notifier) ...@@ -1778,7 +1780,7 @@ static int imx7_csi_notify_complete(struct v4l2_async_notifier *notifier)
{ {
struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier); struct imx7_csi *csi = imx7_csi_notifier_to_dev(notifier);
return v4l2_device_register_subdev_nodes(&csi->imxmd.v4l2_dev); return v4l2_device_register_subdev_nodes(&csi->v4l2_dev);
} }
static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = { static const struct v4l2_async_notifier_operations imx7_csi_notify_ops = {
...@@ -1812,7 +1814,7 @@ static int imx7_csi_async_register(struct imx7_csi *csi) ...@@ -1812,7 +1814,7 @@ static int imx7_csi_async_register(struct imx7_csi *csi)
csi->notifier.ops = &imx7_csi_notify_ops; csi->notifier.ops = &imx7_csi_notify_ops;
ret = v4l2_async_nf_register(&csi->imxmd.v4l2_dev, &csi->notifier); ret = v4l2_async_nf_register(&csi->v4l2_dev, &csi->notifier);
if (ret) if (ret)
return ret; return ret;
...@@ -1821,11 +1823,9 @@ static int imx7_csi_async_register(struct imx7_csi *csi) ...@@ -1821,11 +1823,9 @@ static int imx7_csi_async_register(struct imx7_csi *csi)
static void imx7_csi_media_cleanup(struct imx7_csi *csi) static void imx7_csi_media_cleanup(struct imx7_csi *csi)
{ {
struct imx_media_dev *imxmd = &csi->imxmd; v4l2_device_unregister(&csi->v4l2_dev);
media_device_unregister(&csi->mdev);
v4l2_device_unregister(&imxmd->v4l2_dev); media_device_cleanup(&csi->mdev);
media_device_unregister(&imxmd->md);
media_device_cleanup(&imxmd->md);
} }
static const struct media_device_ops imx7_csi_media_ops = { static const struct media_device_ops imx7_csi_media_ops = {
...@@ -1834,26 +1834,25 @@ static const struct media_device_ops imx7_csi_media_ops = { ...@@ -1834,26 +1834,25 @@ static const struct media_device_ops imx7_csi_media_ops = {
static int imx7_csi_media_dev_init(struct imx7_csi *csi) static int imx7_csi_media_dev_init(struct imx7_csi *csi)
{ {
struct imx_media_dev *imxmd = &csi->imxmd;
int ret; int ret;
dev_set_drvdata(csi->dev, imxmd); dev_set_drvdata(csi->dev, csi);
strscpy(imxmd->md.model, "imx-media", sizeof(imxmd->md.model)); strscpy(csi->mdev.model, "imx-media", sizeof(csi->mdev.model));
imxmd->md.ops = &imx7_csi_media_ops; csi->mdev.ops = &imx7_csi_media_ops;
imxmd->md.dev = csi->dev; csi->mdev.dev = csi->dev;
imxmd->v4l2_dev.mdev = &imxmd->md; csi->v4l2_dev.mdev = &csi->mdev;
strscpy(imxmd->v4l2_dev.name, "imx-media", strscpy(csi->v4l2_dev.name, "imx-media",
sizeof(imxmd->v4l2_dev.name)); sizeof(csi->v4l2_dev.name));
snprintf(imxmd->md.bus_info, sizeof(imxmd->md.bus_info), snprintf(csi->mdev.bus_info, sizeof(csi->mdev.bus_info),
"platform:%s", dev_name(imxmd->md.dev)); "platform:%s", dev_name(csi->mdev.dev));
media_device_init(&imxmd->md); media_device_init(&csi->mdev);
ret = v4l2_device_register(csi->dev, &imxmd->v4l2_dev); ret = v4l2_device_register(csi->dev, &csi->v4l2_dev);
if (ret < 0) { if (ret < 0) {
v4l2_err(&imxmd->v4l2_dev, v4l2_err(&csi->v4l2_dev,
"Failed to register v4l2_device: %d\n", ret); "Failed to register v4l2_device: %d\n", ret);
goto cleanup; goto cleanup;
} }
...@@ -1861,7 +1860,7 @@ static int imx7_csi_media_dev_init(struct imx7_csi *csi) ...@@ -1861,7 +1860,7 @@ static int imx7_csi_media_dev_init(struct imx7_csi *csi)
return 0; return 0;
cleanup: cleanup:
media_device_cleanup(&imxmd->md); media_device_cleanup(&csi->mdev);
return ret; return ret;
} }
...@@ -1895,7 +1894,7 @@ static int imx7_csi_media_init(struct imx7_csi *csi) ...@@ -1895,7 +1894,7 @@ static int imx7_csi_media_init(struct imx7_csi *csi)
if (ret) if (ret)
goto error; goto error;
ret = v4l2_device_register_subdev(&csi->imxmd.v4l2_dev, &csi->sd); ret = v4l2_device_register_subdev(&csi->v4l2_dev, &csi->sd);
if (ret) if (ret)
goto error; goto error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment