summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Huang <kevinh@nvidia.com>2011-05-03 10:52:24 -0700
committerVarun Colbert <vcolbert@nvidia.com>2011-05-13 18:56:28 -0700
commit30582abff8f85b56bafb86d0bc05db25257bf456 (patch)
tree6b85f09a382c20262fb5bfe6226435cc133fd7f1
parent179cfb15f90962530300cfd084314354a53f4517 (diff)
video: tegra: dsi: Adjusted the values of packet sequence registers.
Changed the values of packet sequence registers for DSI burst video mode. Change-Id: I70188ed3c8fff094862a89377457751fd0d4382c Reviewed-on: http://git-master/r/31080 Reviewed-by: Kevin Huang <kevinh@nvidia.com> Tested-by: Kevin Huang <kevinh@nvidia.com> Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/include/mach/dc.h3
-rwxr-xr-xdrivers/video/tegra/dc/dsi.c49
2 files changed, 36 insertions, 16 deletions
diff --git a/arch/arm/mach-tegra/include/mach/dc.h b/arch/arm/mach-tegra/include/mach/dc.h
index 0043c9a8a3a4..55857cb5f3bd 100644
--- a/arch/arm/mach-tegra/include/mach/dc.h
+++ b/arch/arm/mach-tegra/include/mach/dc.h
@@ -140,6 +140,9 @@ struct tegra_dsi_out {
bool hs_cmd_mode_supported;
bool hs_cmd_mode_on_blank_supported;
bool enable_hs_clock_on_lp_cmd_mode;
+ bool no_pkt_seq_eot; /* 1st generation panel may not
+ * support eot. Don't set it for
+ * most panels. */
u32 max_panel_freq_khz;
u32 lp_cmd_mode_freq_khz;
diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c
index ef1d66fd54c2..070289786827 100755
--- a/drivers/video/tegra/dc/dsi.c
+++ b/drivers/video/tegra/dc/dsi.c
@@ -177,23 +177,37 @@ const u32 dsi_pkt_seq_video_non_burst[NUMOF_PKT_SEQ] = {
};
static const u32 dsi_pkt_seq_video_burst[NUMOF_PKT_SEQ] = {
- PKT_ID0(CMD_NULL) | PKT_LEN0(4) | PKT_ID1(CMD_VS) | PKT_LEN1(0) |
- PKT_ID2(CMD_EOT) | PKT_LEN2(0) | PKT_LP,
+ PKT_ID0(CMD_VS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
0,
- PKT_ID0(CMD_NULL) | PKT_LEN0(4) | PKT_ID1(CMD_HS) | PKT_LEN1(0) |
- PKT_ID2(CMD_EOT) | PKT_LEN2(0) | PKT_LP,
+ PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
0,
- PKT_ID0(CMD_NULL) | PKT_LEN0(4) | PKT_ID1(CMD_HS) | PKT_LEN1(0) |
- PKT_ID2(CMD_EOT) | PKT_LEN2(0) | PKT_LP,
- PKT_ID0(CMD_BLNK) | PKT_LEN0(4) | PKT_ID1(CMD_HS) | PKT_LEN1(0) |
- PKT_ID2(CMD_BLNK) | PKT_LEN2(2),
- PKT_ID3(CMD_RGB) | PKT_LEN3(3) | PKT_ID4(CMD_EOT) | PKT_LEN4(0),
- PKT_ID0(CMD_NULL) | PKT_LEN0(4) | PKT_ID1(CMD_HS) | PKT_LEN1(0) |
- PKT_ID2(CMD_EOT) | PKT_LEN2(0) | PKT_LP,
+ PKT_ID0(CMD_HS) | PKT_LEN0(0) | PKT_ID1(CMD_EOT) | PKT_LEN1(7) | PKT_LP,
0,
- PKT_ID0(CMD_BLNK) | PKT_LEN0(4) | PKT_ID1(CMD_HS) | PKT_LEN1(0) |
- PKT_ID2(CMD_BLNK) | PKT_LEN2(2),
- PKT_ID3(CMD_RGB) | PKT_LEN3(3) | PKT_ID4(CMD_EOT) | PKT_LEN4(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(7),
+ 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_LP,
+ PKT_ID0(CMD_EOT) | PKT_LEN0(7),
+};
+
+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,
+ 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_ID1(CMD_EOT) | PKT_LEN1(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_ID1(CMD_BLNK) | PKT_LEN1(2)|
+ PKT_ID2(CMD_RGB) | PKT_LEN2(3) | PKT_LP,
+ PKT_ID0(CMD_EOT) | PKT_LEN0(0),
};
/* TODO: verify with hw about this format */
@@ -676,8 +690,11 @@ static void tegra_dsi_set_pkt_seq(struct tegra_dc *dc,
case TEGRA_DSI_VIDEO_BURST_MODE_FAST_SPEED:
case TEGRA_DSI_VIDEO_BURST_MODE_FASTEST_SPEED:
case TEGRA_DSI_VIDEO_BURST_MODE_MANUAL:
- pkt_seq_3_5_rgb_hi = DSI_PKT_SEQ_3_HI_PKT_33_ID(rgb_info);
- pkt_seq = dsi_pkt_seq_video_burst;
+ pkt_seq_3_5_rgb_lo = DSI_PKT_SEQ_3_LO_PKT_32_ID(rgb_info);
+ if(!dsi->info.no_pkt_seq_eot)
+ pkt_seq = dsi_pkt_seq_video_burst;
+ else
+ pkt_seq = dsi_pkt_seq_video_burst_no_eot;
break;
case TEGRA_DSI_VIDEO_NONE_BURST_MODE_WITH_SYNC_END:
pkt_seq_3_5_rgb_hi = DSI_PKT_SEQ_3_HI_PKT_34_ID(rgb_info);