summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorsiddardha naraharisetti <siddardhan@nvidia.com>2014-02-13 19:15:47 -0800
committerRaymond Poudrier <rapoudrier@nvidia.com>2014-03-10 17:22:37 -0700
commit4c89828cdcdcd1683c80d3182b495b6c500ab28c (patch)
tree5d8a762960e249012e3075b351e50725f2ac8578 /arch
parentb0a90d9e2cbca96e755f7e385665f1be97fa9a69 (diff)
arm: tegra: fix jdi 5" panel power on/off sequence
Fix the jdi panel power on sequence as below from rev01 spec 1. turn on avdd_lcd_3V0 2. enable enb gpio after a 3ms delay 3. turn on mipi data,clk lines 4. enable reset gpio after a 20ms delay 5. send exit_sleep_mode command after a 150ms delay Fix the jdi panel power off sequence as below from rev14 spec 1. send enter_sleep_mode command 2. turn off mipi data,clk lines after a 80ms delay 3. disable reset gpio 4. disable enb gpio 5. turn off avdd_lcd_3v0 after a 5ms delay increase the avdd_lcd_3V0 to 3.1V from 3V to compensate for the voltage drop between pmic and display for 5" and 5.66" panels Bug 1429612 Bug 1384755 Change-Id: I09caed362df09a555986c5c511febe2e0d07e2fc Signed-off-by: siddardha naraharisetti <siddardhan@nvidia.com> Reviewed-on: http://git-master/r/367509 Reviewed-by: Raymond Poudrier <rapoudrier@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/panel-j-1440-810-5-8.c2
-rw-r--r--arch/arm/mach-tegra/panel-j-720p-5.c17
2 files changed, 13 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/panel-j-1440-810-5-8.c b/arch/arm/mach-tegra/panel-j-1440-810-5-8.c
index d320305aac6d..3967dcad43cb 100644
--- a/arch/arm/mach-tegra/panel-j-1440-810-5-8.c
+++ b/arch/arm/mach-tegra/panel-j-1440-810-5-8.c
@@ -494,7 +494,7 @@ static int dsi_j_1440_810_5_8_postpoweron(struct device *dev)
pr_err("avdd_lcd_3v0_2v8 regulator enable failed\n");
goto fail;
}
- regulator_set_voltage(avdd_lcd_3v0_2v8, 3000000, 3000000);
+ regulator_set_voltage(avdd_lcd_3v0_2v8, 3100000, 3100000);
}
usleep_range(3000, 5000);
diff --git a/arch/arm/mach-tegra/panel-j-720p-5.c b/arch/arm/mach-tegra/panel-j-720p-5.c
index dcbee211ae07..4db04acf2f9f 100644
--- a/arch/arm/mach-tegra/panel-j-720p-5.c
+++ b/arch/arm/mach-tegra/panel-j-720p-5.c
@@ -1,7 +1,7 @@
/*
* arch/arm/mach-tegra/panel-j-720p-5.c
*
- * Copyright (c) 2013, NVIDIA Corporation. All rights reserved.
+ * Copyright (c) 2013-2014, NVIDIA Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -32,6 +32,7 @@
#include "gpio-names.h"
#define DSI_PANEL_EN_GPIO TEGRA_GPIO_PQ2
+#define DSI_PANEL_RST_GPIO TEGRA_GPIO_PH3
#define DSI_PANEL_RESET 1
@@ -394,6 +395,10 @@ fail:
}
static struct tegra_dsi_cmd dsi_j_720p_5_init_cmd[] = {
+ /* reset panel before exit_sleep_mode sequence */
+ DSI_DLY_MS(20),
+ DSI_GPIO_SET(DSI_PANEL_RST_GPIO, 1),
+ DSI_DLY_MS(150),
/* panel exit_sleep_mode sequence */
DSI_CMD_SHORT(DSI_DCS_WRITE_0_PARAM, DSI_DCS_EXIT_SLEEP_MODE, 0x0),
DSI_SEND_FRAME(5),
@@ -450,7 +455,7 @@ static int dsi_j_720p_5_postpoweron(struct device *dev)
pr_err("avdd_lcd_3v0_2v8 regulator enable failed\n");
goto fail;
}
- regulator_set_voltage(avdd_lcd_3v0_2v8, 3000000, 3000000);
+ regulator_set_voltage(avdd_lcd_3v0_2v8, 3100000, 3100000);
}
usleep_range(3000, 5000);
@@ -471,10 +476,8 @@ static int dsi_j_720p_5_postpoweron(struct device *dev)
}
usleep_range(3000, 5000);
- gpio_set_value(dsi_j_720p_5_pdata.dsi_panel_rst_gpio, 1);
- msleep(20);
gpio_set_value(DSI_PANEL_EN_GPIO, 1);
- msleep(20);
+ msleep(40);
return 0;
fail:
@@ -501,6 +504,10 @@ static struct tegra_dsi_out dsi_j_720p_5_pdata = {
static int dsi_j_720p_5_disable(void)
{
+ gpio_direction_output(dsi_j_720p_5_pdata.dsi_panel_rst_gpio, 0);
+ gpio_direction_output(DSI_PANEL_EN_GPIO, 0);
+ usleep_range(5000, 8000);
+
if (vdd_lcd_bl)
regulator_disable(vdd_lcd_bl);