video: tegra: dsi: Fix EOT packet length
Animesh Kishore [Fri, 12 Oct 2012 01:43:17 +0000 (18:43 -0700)]
Bug 1156912

Change-Id: I1e368aa49cba911c8a7ada0c7e861bd9301891b0
Signed-off-by: Animesh Kishore <ankishore@nvidia.com>
Reviewed-on: http://git-master/r/143955
(cherry picked from commit dd5d7c774850b634f5e6f6e851d7e277e04e8368)
Signed-off-by: Gaurav Batra <gbatra@nvidia.com>
Reviewed-on: http://git-master/r/146700
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>

arch/arm/mach-tegra/include/mach/dc.h
drivers/video/tegra/dc/dsi.c

index 9760c16..de5ad83 100644 (file)
@@ -97,6 +97,7 @@ struct tegra_dsi_cmd {
 };
 
 #define DSI_GENERIC_LONG_WRITE                 0x29
+#define DSI_GENERIC_SHORT_WRITE_1_PARAMS       0x13
 #define DSI_GENERIC_SHORT_WRITE_2_PARAMS       0x23
 #define DSI_DCS_WRITE_0_PARAM                  0x05
 #define DSI_DCS_WRITE_1_PARAM                  0x15
@@ -104,6 +105,9 @@ struct tegra_dsi_cmd {
 #define DSI_DCS_SET_ADDR_MODE                  0x36
 #define DSI_DCS_EXIT_SLEEP_MODE                        0x11
 #define DSI_DCS_SET_DISPLAY_ON                 0x29
+#define DSI_DCS_SET_TEARING_EFFECT_OFF         0x34
+#define DSI_DCS_SET_TEARING_EFFECT_ON          0x35
+#define DSI_DCS_NO_OP                          0x0
 
 #define DSI_CMD_SHORT(di, p0, p1)      { \
                                        .cmd_type = TEGRA_DSI_PACKET_CMD, \
index 665369d..8864a9d 100644 (file)
@@ -113,17 +113,17 @@ const u32 dsi_pkt_seq_reg[NUMOF_PKT_SEQ] = {
 };
 
 const u32 dsi_pkt_seq_video_non_burst_syne[NUMOF_PKT_SEQ] = {
-       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
-       PKT_ID0(CMD_VE) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_VE) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(1) |
        PKT_ID2(CMD_HE) | PKT_LEN2(0),
        PKT_ID3(CMD_BLNK) | PKT_LEN3(2) | PKT_ID4(CMD_RGB) | PKT_LEN4(3) |
        PKT_ID5(CMD_BLNK) | PKT_LEN5(4),
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(1) |
        PKT_ID2(CMD_HE) | PKT_LEN2(0),
@@ -132,16 +132,16 @@ const u32 dsi_pkt_seq_video_non_burst_syne[NUMOF_PKT_SEQ] = {
 };
 
 const u32 dsi_pkt_seq_video_non_burst[NUMOF_PKT_SEQ] = {
-       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(2) |
        PKT_ID2(CMD_RGB) | PKT_LEN2(3),
        PKT_ID3(CMD_BLNK) | PKT_LEN3(4),
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(2) |
        PKT_ID2(CMD_RGB) | PKT_LEN2(3),
@@ -183,20 +183,20 @@ static const u32 dsi_pkt_seq_video_burst[NUMOF_PKT_SEQ] = {
 };
 
 static const u32 dsi_pkt_seq_video_burst_no_eot[NUMOF_PKT_SEQ] = {
-       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_LP,
        0,
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_LP,
        0,
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(2)|
        PKT_ID2(CMD_RGB) | PKT_LEN2(3) | PKT_LP,
-       PKT_ID0(CMD_EOT) | PKT_LEN0(0),
-       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(0) | PKT_LP,
+       0,
+       PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_LP,
        0,
        PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_BLNK) | PKT_LEN1(2)|
        PKT_ID2(CMD_RGB) | PKT_LEN2(3) | PKT_LP,
-       PKT_ID0(CMD_EOT) | PKT_LEN0(0),
+       0,
 };
 
 /* TODO: verify with hw about this format */
@@ -1387,7 +1387,7 @@ static void tegra_dsi_setup_video_mode_pkt_length(struct tegra_dc *dc,
                        DSI_PKT_LEN_4_5_LENGTH_5(0);
        tegra_dsi_writel(dsi, val, DSI_PKT_LEN_4_5);
 
-       val = DSI_PKT_LEN_6_7_LENGTH_6(0) | DSI_PKT_LEN_6_7_LENGTH_7(0);
+       val = DSI_PKT_LEN_6_7_LENGTH_6(0) | DSI_PKT_LEN_6_7_LENGTH_7(0x0f0f);
        tegra_dsi_writel(dsi, val, DSI_PKT_LEN_6_7);
 }