summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorNaveen Kumar S <nkumars@nvidia.com>2015-08-27 01:26:21 -0400
committerNaveen Kumar S <nkumars@nvidia.com>2015-08-31 07:14:41 -0400
commit2fdf2abb3ad3be5ccb7c6524a37bf15de22cde71 (patch)
tree5402fa094fd0618124a3e3e53baf8a510dc8cbf9 /drivers
parentb57d5756dcad0d5ac39f17351e9844b241aabde5 (diff)
video: tegra: dsi: setup packet only when needed
Put a check to verify if ganged mode or split link has been initialized before setting up DSI packet length bug 1679057 Change-Id: Id79d0652f926390312cb181c8ff694390d98df3c Signed-off-by: Naveen Kumar S <nkumars@nvidia.com> Reviewed-on: http://git-master/r/790144 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Venu Byravarasu <vbyravarasu@nvidia.com> Reviewed-by: Animesh Kishore <ankishore@nvidia.com> Reviewed-by: Mitch Luban <mluban@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/dsi.c59
1 files changed, 34 insertions, 25 deletions
diff --git a/drivers/video/tegra/dc/dsi.c b/drivers/video/tegra/dc/dsi.c
index 6b20833f1..16e76cb68 100644
--- a/drivers/video/tegra/dc/dsi.c
+++ b/drivers/video/tegra/dc/dsi.c
@@ -1488,33 +1488,42 @@ static void tegra_dsi_setup_ganged_split_link_mode_pkt_length(
1488 DSI_PKT_LEN_0_1_LENGTH_1(0); 1488 DSI_PKT_LEN_0_1_LENGTH_1(0);
1489 tegra_dsi_writel(dsi, val, DSI_PKT_LEN_0_1); 1489 tegra_dsi_writel(dsi, val, DSI_PKT_LEN_0_1);
1490 1490
1491 switch (dsi->info.ganged_type) { 1491 if (dsi->info.ganged_type) {
1492 case TEGRA_DSI_GANGED_SYMMETRIC_LEFT_RIGHT: /* fall through */ 1492 switch (dsi->info.ganged_type) {
1493 case TEGRA_DSI_GANGED_SYMMETRIC_EVEN_ODD: /* fall through */ 1493 case TEGRA_DSI_GANGED_SYMMETRIC_LEFT_RIGHT: /* fall through */
1494 hact_pkt_len_pix = DIV_ROUND_UP(hact_pkt_len_pix_orig, 2); 1494 case TEGRA_DSI_GANGED_SYMMETRIC_EVEN_ODD: /* fall through */
1495 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2); 1495 hact_pkt_len_pix =
1496 break; 1496 DIV_ROUND_UP(hact_pkt_len_pix_orig, 2);
1497 case TEGRA_DSI_GANGED_SYMMETRIC_LEFT_RIGHT_OVERLAP: 1497 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2);
1498 hact_pkt_len_pix = DIV_ROUND_UP(hact_pkt_len_pix_orig, 2) + 1498 break;
1499 dsi->info.ganged_overlap; 1499 case TEGRA_DSI_GANGED_SYMMETRIC_LEFT_RIGHT_OVERLAP:
1500 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2); 1500 hact_pkt_len_pix =
1501 break; 1501 DIV_ROUND_UP(hact_pkt_len_pix_orig, 2) +
1502 default: 1502 dsi->info.ganged_overlap;
1503 dev_err(&dc->ndev->dev, "dsi: invalid ganged type\n"); 1503 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2);
1504 break;
1505 default:
1506 dev_err(&dc->ndev->dev, "dsi: invalid ganged type\n");
1507 }
1504 } 1508 }
1505 1509
1506 switch (dsi->info.split_link_type) { 1510 if (dsi->info.split_link_type) {
1507 case TEGRA_DSI_SPLIT_LINK_A_B: /* fall through */ 1511 switch (dsi->info.split_link_type) {
1508 case TEGRA_DSI_SPLIT_LINK_C_D: 1512 case TEGRA_DSI_SPLIT_LINK_A_B: /* fall through */
1509 hact_pkt_len_pix = DIV_ROUND_UP(hact_pkt_len_pix_orig, 2); 1513 case TEGRA_DSI_SPLIT_LINK_C_D:
1510 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2); 1514 hact_pkt_len_pix =
1511 break; 1515 DIV_ROUND_UP(hact_pkt_len_pix_orig, 2);
1512 case TEGRA_DSI_SPLIT_LINK_A_B_C_D: 1516 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 2);
1513 hact_pkt_len_pix = DIV_ROUND_UP(hact_pkt_len_pix_orig, 4); 1517 break;
1514 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 4); 1518 case TEGRA_DSI_SPLIT_LINK_A_B_C_D:
1515 break; 1519 hact_pkt_len_pix =
1516 default: 1520 DIV_ROUND_UP(hact_pkt_len_pix_orig, 4);
1517 dev_err(&dc->ndev->dev, "dsi: invalid split link type\n"); 1521 pix_per_line = DIV_ROUND_UP(pix_per_line_orig, 4);
1522 break;
1523 default:
1524 dev_err(&dc->ndev->dev,
1525 "dsi: invalid split link type\n");
1526 }
1518 } 1527 }
1519 1528
1520 for (i = 0; i < dsi->max_instances; i++) { 1529 for (i = 0; i < dsi->max_instances; i++) {