* [PATCH] [media] exynos-gsc: Register v4l2 device
@ 2013-07-26 11:28 Arun Kumar K
2013-07-29 9:11 ` Sylwester Nawrocki
0 siblings, 1 reply; 2+ messages in thread
From: Arun Kumar K @ 2013-07-26 11:28 UTC (permalink / raw)
To: linux-media, linux-samsung-soc
Cc: s.nawrocki, k.debski, shaik.ameer, arunkk.samsung
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
gsc m2m video device registration.
Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
---
drivers/media/platform/exynos-gsc/gsc-core.c | 9 ++++++++-
drivers/media/platform/exynos-gsc/gsc-core.h | 1 +
drivers/media/platform/exynos-gsc/gsc-m2m.c | 1 +
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index 559fab2..1ec60264 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)
goto err_clk;
}
- ret = gsc_register_m2m_device(gsc);
+ ret = v4l2_device_register(dev, &gsc->v4l2_dev);
if (ret)
goto err_clk;
+ ret = gsc_register_m2m_device(gsc);
+ if (ret)
+ goto err_v4l2;
+
platform_set_drvdata(pdev, gsc);
pm_runtime_enable(dev);
ret = pm_runtime_get_sync(&pdev->dev);
@@ -1147,6 +1151,8 @@ err_pm:
pm_runtime_put(dev);
err_m2m:
gsc_unregister_m2m_device(gsc);
+err_v4l2:
+ v4l2_device_unregister(&gsc->v4l2_dev);
err_clk:
gsc_clk_put(gsc);
return ret;
@@ -1157,6 +1163,7 @@ static int gsc_remove(struct platform_device *pdev)
struct gsc_dev *gsc = platform_get_drvdata(pdev);
gsc_unregister_m2m_device(gsc);
+ v4l2_device_unregister(&gsc->v4l2_dev);
vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx);
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 cc19bba..76435d3 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 {
unsigned long state;
struct vb2_alloc_ctx *alloc_ctx;
struct video_device vdev;
+ struct v4l2_device v4l2_dev;
};
/**
diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
index 40a73f7..e576ff2 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)
gsc->vdev.release = video_device_release_empty;
gsc->vdev.lock = &gsc->lock;
gsc->vdev.vfl_dir = VFL_DIR_M2M;
+ gsc->vdev.v4l2_dev = &gsc->v4l2_dev;
snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
GSC_MODULE_NAME, gsc->id);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] [media] exynos-gsc: Register v4l2 device
2013-07-26 11:28 [PATCH] [media] exynos-gsc: Register v4l2 device Arun Kumar K
@ 2013-07-29 9:11 ` Sylwester Nawrocki
0 siblings, 0 replies; 2+ messages in thread
From: Sylwester Nawrocki @ 2013-07-29 9:11 UTC (permalink / raw)
To: Arun Kumar K
Cc: linux-media, linux-samsung-soc, k.debski, shaik.ameer,
arunkk.samsung
Hi Arun,
On 07/26/2013 01:28 PM, Arun Kumar K wrote:
> 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
> gsc m2m video device registration.
I've queued this patch for v3.11-rc as a regression fix, adding
the following to the changelog:
"This fixes regression introduced with comit commit 1c1d86a1ea07506
[media] v4l2: always require v4l2_dev, rename parent to dev_parent"
But please note that this patch will likely need to be reverted once
capture support is added the GScaler. Then a top level media device
would register struct v4l2_device, instead of the video M2M device
device driver.
Thanks,
Sylwester
> Signed-off-by: Arun Kumar K <arun.kk@samsung.com>
>
> ---
> drivers/media/platform/exynos-gsc/gsc-core.c | 9 ++++++++-
> drivers/media/platform/exynos-gsc/gsc-core.h | 1 +
> drivers/media/platform/exynos-gsc/gsc-m2m.c | 1 +
> 3 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
> index 559fab2..1ec60264 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)
> goto err_clk;
> }
>
> - ret = gsc_register_m2m_device(gsc);
> + ret = v4l2_device_register(dev, &gsc->v4l2_dev);
> if (ret)
> goto err_clk;
>
> + ret = gsc_register_m2m_device(gsc);
> + if (ret)
> + goto err_v4l2;
> +
> platform_set_drvdata(pdev, gsc);
> pm_runtime_enable(dev);
> ret = pm_runtime_get_sync(&pdev->dev);
> @@ -1147,6 +1151,8 @@ err_pm:
> pm_runtime_put(dev);
> err_m2m:
> gsc_unregister_m2m_device(gsc);
> +err_v4l2:
> + v4l2_device_unregister(&gsc->v4l2_dev);
> err_clk:
> gsc_clk_put(gsc);
> return ret;
> @@ -1157,6 +1163,7 @@ static int gsc_remove(struct platform_device *pdev)
> struct gsc_dev *gsc = platform_get_drvdata(pdev);
>
> gsc_unregister_m2m_device(gsc);
> + v4l2_device_unregister(&gsc->v4l2_dev);
>
> vb2_dma_contig_cleanup_ctx(gsc->alloc_ctx);
> 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 cc19bba..76435d3 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 {
> unsigned long state;
> struct vb2_alloc_ctx *alloc_ctx;
> struct video_device vdev;
> + struct v4l2_device v4l2_dev;
> };
>
> /**
> diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
> index 40a73f7..e576ff2 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)
> gsc->vdev.release = video_device_release_empty;
> gsc->vdev.lock = &gsc->lock;
> gsc->vdev.vfl_dir = VFL_DIR_M2M;
> + gsc->vdev.v4l2_dev = &gsc->v4l2_dev;
> snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
> GSC_MODULE_NAME, gsc->id);
--
Sylwester Nawrocki
Samsung R&D Institute Poland
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-07-29 9:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-26 11:28 [PATCH] [media] exynos-gsc: Register v4l2 device Arun Kumar K
2013-07-29 9:11 ` Sylwester Nawrocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox