diff options
author | BK Kim <bkk@nvidia.com> | 2014-04-02 17:59:18 +0900 |
---|---|---|
committer | Peter Kim <pekim@nvidia.com> | 2014-07-08 22:14:28 -0700 |
commit | 55d6d0d4d6254e84f0d951cb5dbbf7209e7cf08f (patch) | |
tree | 1643f174412c5e3d98b84e9ecb8c0df09b47ffe0 | |
parent | 65af72747df736eac26f60d00e27b2d9550f54f4 (diff) |
WAR 1490685
To avoid error on csi, we do mipi calibration,
while camera is not on.
Bug 1490685
Bug 1504262
Change-Id: I91adb3da0ae54ccb4e0963f1f3f3cf933a292830
Signed-off-by: BK Kim <bkk@nvidia.com>
Reviewed-on: http://git-lge/r/1550
Reviewed-by: Peter Kim <pekim@nvidia.com>
Tested-by: Peter Kim <pekim@nvidia.com>
Reviewed-on: http://git-master/r/435540
-rw-r--r-- | drivers/video/tegra/camera/camera_power.c | 4 | ||||
-rw-r--r-- | drivers/video/tegra/dc/dsi.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/video/tegra/camera/camera_power.c b/drivers/video/tegra/camera/camera_power.c index b5a3e0c7d467..2d4adda9a5c3 100644 --- a/drivers/video/tegra/camera/camera_power.c +++ b/drivers/video/tegra/camera/camera_power.c @@ -16,6 +16,8 @@ #include "camera_power.h" +atomic_t camera_power_on = ATOMIC_INIT(0); + int tegra_camera_power_on(struct tegra_camera *camera) { int ret = 0; @@ -50,6 +52,7 @@ int tegra_camera_power_on(struct tegra_camera *camera) __func__); #endif camera->power_on = 1; + atomic_set(&camera_power_on, 1); return ret; } @@ -86,6 +89,7 @@ int tegra_camera_power_off(struct tegra_camera *camera) } } camera->power_on = 0; + atomic_set(&camera_power_on, 0); return ret; } diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c index cb167847698e..cf3d4eeecb8a 100644 --- a/drivers/video/tegra/dc/dsi.c +++ b/drivers/video/tegra/dc/dsi.c @@ -2323,6 +2323,7 @@ static void tegra_dsi_panelB_enable(void) writel(val, (IO_ADDRESS(APB_MISC_GP_MIPI_PAD_CTRL_0))); } +extern atomic_t camera_power_on; static int tegra_dsi_init_hw(struct tegra_dc *dc, struct tegra_dc_dsi_data *dsi) { @@ -2359,7 +2360,11 @@ static int tegra_dsi_init_hw(struct tegra_dc *dc, tegra_dsi_writel(dsi, 0, init_reg_vs1_ext[i]); } - tegra_dsi_pad_calibration(dsi); + if (0 == atomic_read(&camera_power_on)) { + tegra_dsi_pad_calibration(dsi); + } else { + dev_warn(&dsi->dc->ndev->dev, "WAR 1490685\n"); + } tegra_dsi_writel(dsi, DSI_POWER_CONTROL_LEG_DSI_ENABLE(TEGRA_DSI_ENABLE), |