aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Kumar K <arun.kk@samsung.com>2013-07-26 06:28:01 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2013-09-03 08:24:21 -0400
commitd0b1c31349969973204fad21a076aecf131cc5e4 (patch)
tree4ba0266d423fefbd8b6e938ed2df15919ce03454
parent3396b096c54a84603c51bd705effa88f7f5b0d76 (diff)
[media] exynos-gsc: Register v4l2 device
Gscaler video device registration was happening without reference to a parent v4l2_dev causing probe to fail. The patch creates a parent v4l2 device and uses it for the gsc m2m video device registration. This fixes regression introduced with comit commit 1c1d86a1ea07506 [media] v4l2: always require v4l2_dev, rename parent to dev_parent Signed-off-by: Arun Kumar K <arun.kk@samsung.com> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com> Cc: stable@vger.kernel.org
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-core.c9
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-core.h1
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-m2m.c1
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index fe69eaeb907a..9d0cc04d7ab7 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -1122,10 +1122,14 @@ static int gsc_probe(struct platform_device *pdev)
1122 goto err_clk; 1122 goto err_clk;
1123 } 1123 }
1124 1124
1125 ret = gsc_register_m2m_device(gsc); 1125 ret = v4l2_device_register(dev, &gsc->v4l2_dev);
1126 if (ret) 1126 if (ret)
1127 goto err_clk; 1127 goto err_clk;
1128 1128
1129 ret = gsc_register_m2m_device(gsc);
1130 if (ret)
1131 goto err_v4l2;
1132
1129 platform_set_drvdata(pdev, gsc); 1133 platform_set_drvdata(pdev, gsc);
1130 pm_runtime_enable(dev); 1134 pm_runtime_enable(dev);
1131 ret = pm_runtime_get_sync(&pdev->dev); 1135 ret = pm_runtime_get_sync(&pdev->dev);
@@ -1147,6 +1151,8 @@ err_pm:
1147 pm_runtime_put(dev); 1151 pm_runtime_put(dev);
1148err_m2m: 1152err_m2m:
1149 gsc_unregister_m2m_device(gsc); 1153 gsc_unregister_m2m_device(gsc);
1154err_v4l2:
1155 v4l2_device_unregister(&gsc->v4l2_dev);
1150err_clk: 1156err_clk:
1151 gsc_clk_put(gsc); 1157 gsc_clk_put(gsc);
1152 return ret; 1158 return ret;
@@ -1157,6 +1163,7 @@ static int gsc_remove(struct platform_device *pdev)
1157 struct gsc_dev *gsc = platform_get_drvdata(pdev); 1163 struct gsc_dev *gsc = platform_get_drvdata(pdev);
1158 1164
1159 gsc_unregister_m2m_device(gsc); 1165 gsc_unregister_m2m_device(gsc);
1166 v4l2_device_unregister(&gsc->v4l2_dev);
1160 1167
1161 vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx); 1168 vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx);
1162 pm_runtime_disable(&pdev->dev); 1169 pm_runtime_disable(&pdev->dev);
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.h b/drivers/media/platform/exynos-gsc/gsc-core.h
index cc19bba09bd1..76435d3bf62d 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.h
+++ b/drivers/media/platform/exynos-gsc/gsc-core.h
@@ -343,6 +343,7 @@ struct gsc_dev {
343 unsigned long state; 343 unsigned long state;
344 struct vb2_alloc_ctx *alloc_ctx; 344 struct vb2_alloc_ctx *alloc_ctx;
345 struct video_device vdev; 345 struct video_device vdev;
346 struct v4l2_device v4l2_dev;
346}; 347};
347 348
348/** 349/**
diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
index 40a73f7d20da..e576ff2de3de 100644
--- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
+++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
@@ -751,6 +751,7 @@ int gsc_register_m2m_device(struct gsc_dev *gsc)
751 gsc->vdev.release = video_device_release_empty; 751 gsc->vdev.release = video_device_release_empty;
752 gsc->vdev.lock = &gsc->lock; 752 gsc->vdev.lock = &gsc->lock;
753 gsc->vdev.vfl_dir = VFL_DIR_M2M; 753 gsc->vdev.vfl_dir = VFL_DIR_M2M;
754 gsc->vdev.v4l2_dev = &gsc->v4l2_dev;
754 snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m", 755 snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
755 GSC_MODULE_NAME, gsc->id); 756 GSC_MODULE_NAME, gsc->id);
756 757