summaryrefslogtreecommitdiff
path: root/drivers/media/platform/mxc/subdev
diff options
context:
space:
mode:
authorSandor Yu <R01008@freescale.com>2015-02-11 16:12:36 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-09-17 09:21:41 -0500
commit1c656fdf2e667b35327add7281f2b93e937ce8bc (patch)
treeec36ccdee88b2853ffc8fe4f2cd88170638fcb9d /drivers/media/platform/mxc/subdev
parent88d633c42cb8e5af5320db09c5fa021e9e12fe45 (diff)
MLK-10232-1: vadc: Add vadc to generic pm domain
Vadc in the dispmix power domian, the register will been reset when dispmix power off, add vadc to generic pm domain, dispmix will not power off when vadc driver loading. Signed-off-by: Sandor Yu <R01008@freescale.com>
Diffstat (limited to 'drivers/media/platform/mxc/subdev')
-rw-r--r--drivers/media/platform/mxc/subdev/mxc_vadc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/media/platform/mxc/subdev/mxc_vadc.c b/drivers/media/platform/mxc/subdev/mxc_vadc.c
index e54c3f21264f..f77044f895b7 100644
--- a/drivers/media/platform/mxc/subdev/mxc_vadc.c
+++ b/drivers/media/platform/mxc/subdev/mxc_vadc.c
@@ -28,6 +28,7 @@
#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
#include <linux/of_address.h>
#include <linux/of_device.h>
+#include <linux/pm_runtime.h>
#include <linux/regmap.h>
#include <media/v4l2-ioctl.h>
#include <linux/videodev2.h>
@@ -726,6 +727,9 @@ static int vadc_probe(struct platform_device *pdev)
vadc_v4l2_subdev_init(sd, pdev, &vadc_ops);
+ pm_runtime_enable(&pdev->dev);
+
+ pm_runtime_get_sync(&pdev->dev);
/* Init VADC */
ret = vadc_of_init(pdev);
if (ret < 0)
@@ -736,6 +740,9 @@ static int vadc_probe(struct platform_device *pdev)
return 0;
err:
+ pm_runtime_put_sync(&pdev->dev);
+ pm_runtime_disable(&pdev->dev);
+ v4l2_async_unregister_subdev(&state->sd);
clk_disable_unprepare(state->csi_clk);
clk_disable_unprepare(state->vadc_clk);
return ret;
@@ -745,6 +752,8 @@ static int vadc_remove(struct platform_device *pdev)
{
struct vadc_state *state = platform_get_drvdata(pdev);
+ pm_runtime_put_sync(&pdev->dev);
+ pm_runtime_disable(&pdev->dev);
v4l2_async_unregister_subdev(&state->sd);
clk_disable_unprepare(state->csi_clk);
clk_disable_unprepare(state->vadc_clk);