summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorSandor Yu <R01008@freescale.com>2015-02-11 16:12:36 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-04-14 14:02:25 -0500
commit800e3cd888888e731869cc71861459dd89975026 (patch)
tree4ab84187bce254c187ad474db49011dd76d45f52 /drivers/media
parentb59006033c138329472e28f58483aa5796dc81aa (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')
-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);