summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBK Kim <bkk@nvidia.com>2014-04-02 17:59:18 +0900
committerPeter Kim <pekim@nvidia.com>2014-07-08 22:14:28 -0700
commit55d6d0d4d6254e84f0d951cb5dbbf7209e7cf08f (patch)
tree1643f174412c5e3d98b84e9ecb8c0df09b47ffe0
parent65af72747df736eac26f60d00e27b2d9550f54f4 (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.c4
-rw-r--r--drivers/video/tegra/dc/dsi.c7
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),