From 9d76b2eb095b678b57ed28b2324ac684c2cf48c7 Mon Sep 17 00:00:00 2001 From: Zhang Yunlong Date: Mon, 23 Jul 2018 11:31:44 +0800 Subject: [PATCH] camera: rockchip: camsys_drv: v0.0x30.0 rk3326 and other platform power management implementation Change-Id: I34b9c773cfee1e684e833cdbcf687ac54cd8d88a Signed-off-by: Zhang Yunlong --- drivers/media/video/rk_camsys/camsys_internal.h | 4 +++- drivers/media/video/rk_camsys/camsys_marvin.c | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/media/video/rk_camsys/camsys_internal.h b/drivers/media/video/rk_camsys/camsys_internal.h index c5030d0653ea..e4bd2433deae 100644 --- a/drivers/media/video/rk_camsys/camsys_internal.h +++ b/drivers/media/video/rk_camsys/camsys_internal.h @@ -212,9 +212,11 @@ CSIHOST_PHY_SHUTDOWNZ and CSIHOST_DPHY_RSTZ is csi host control interface;so DPHY_RX1_SRC_SEL_MASK should be set DPHY_RX1_SRC_SEL_CSI. +*v0.0x30.0: + 1) rk3326 and other platform power management implementation. */ -#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x29, 0) +#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x30, 0) #define CAMSYS_PLATFORM_DRV_NAME "RockChip-CamSys" #define CAMSYS_PLATFORM_MARVIN_NAME "Platform_MarvinDev" diff --git a/drivers/media/video/rk_camsys/camsys_marvin.c b/drivers/media/video/rk_camsys/camsys_marvin.c index 1307d0b12162..a8860fc6a0f3 100644 --- a/drivers/media/video/rk_camsys/camsys_marvin.c +++ b/drivers/media/video/rk_camsys/camsys_marvin.c @@ -652,13 +652,14 @@ static int camsys_mrv_clkin_cb(void *ptr, unsigned int on) clk_prepare_enable(clk->clk_mipi_24m); } clk->in_on = true; - + pm_runtime_get_sync(&camsys_dev->pdev->dev); camsys_trace(1, "%s clock(f: %ld Hz) in turn on", dev_name(camsys_dev->miscdev.this_device), isp_clk); camsys_mrv_reset_cb(ptr, 1); udelay(100); camsys_mrv_reset_cb(ptr, 0); } else if (!on && clk->in_on) { + pm_runtime_put_sync(&camsys_dev->pdev->dev); clk_disable_unprepare(clk->aclk_isp); clk_disable_unprepare(clk->hclk_isp); clk_disable_unprepare(clk->isp); @@ -929,8 +930,7 @@ static int camsys_mrv_remove_cb(struct platform_device *pdev) if (!IS_ERR_OR_NULL(mrv_clk->pclkin_isp1)) { devm_clk_put(&pdev->dev, mrv_clk->pclkin_isp1); } - if (CHIP_TYPE == 3399) - pm_runtime_disable(&pdev->dev); + pm_runtime_disable(&pdev->dev); kfree(mrv_clk); mrv_clk = NULL; } @@ -975,6 +975,7 @@ int camsys_mrv_probe_cb(struct platform_device *pdev, camsys_dev_t *camsys_dev) } if (CHIP_TYPE == 3368 || CHIP_TYPE == 3366 || CHIP_TYPE == 3326) { + pm_runtime_enable(&pdev->dev); /* mrv_clk->pd_isp = devm_clk_get(&pdev->dev, "pd_isp"); */ mrv_clk->aclk_isp = devm_clk_get(&pdev->dev, "aclk_isp"); mrv_clk->hclk_isp = devm_clk_get(&pdev->dev, "hclk_isp"); @@ -1081,6 +1082,7 @@ int camsys_mrv_probe_cb(struct platform_device *pdev, camsys_dev_t *camsys_dev) } } } else{ + pm_runtime_enable(&pdev->dev); /*mrv_clk->pd_isp = */ /* devm_clk_get(&pdev->dev, "pd_isp");*/ mrv_clk->aclk_isp =