summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandor Yu <R01008@freescale.com>2015-02-11 16:12:36 +0800
committerSandor Yu <R01008@freescale.com>2015-02-12 10:26:11 +0800
commit905ac59a91ad37d3ca0113305246802768e5e007 (patch)
tree1eb926b5bbb0e035da40c96d99ace6ed1bc0d96e
parentd578346b1f0e6b70e9b78f9215ad9a57db8fd3c4 (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> (cherry picked from commit e06f7339c01d6f77a94cfc8fc22276d03841fecf)
-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);