diff options
author | Shu Zhong <shuz@nvidia.com> | 2015-07-20 21:57:25 -0400 |
---|---|---|
committer | Mitch Luban <mluban@nvidia.com> | 2015-09-15 16:07:08 -0400 |
commit | 93faccfd17fba8596a9595292a3ae2fd6df66d69 (patch) | |
tree | b6edceb71dfa6d12b1789620de13d8111aadfbbb /drivers/video/tegra/dc/dp.c | |
parent | 0e05b9ea5ddb886773a8084714631258928dba9c (diff) |
video: tegra: dc: dp: fix max bw and lane count
Max link bandwidth and max lane count should both be limited
by the min of the settings read from the sink and DT.
Bug 200041308
Change-Id: Idef225e5022cc553497be4760408aeef86bdda45
Signed-off-by: Shu Zhong <shuz@nvidia.com>
Reviewed-on: http://git-master/r/772605
(cherry picked from commit 8cfbba5d46ec4f7e4e4e1bde7a309e8e1db9992c)
Reviewed-on: http://git-master/r/783745
Reviewed-by: Mitch Luban <mluban@nvidia.com>
Tested-by: Mitch Luban <mluban@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/dp.c')
-rw-r--r-- | drivers/video/tegra/dc/dp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/video/tegra/dc/dp.c b/drivers/video/tegra/dc/dp.c index 8ec35fa4f..05ec74157 100644 --- a/drivers/video/tegra/dc/dp.c +++ b/drivers/video/tegra/dc/dp.c | |||
@@ -1523,6 +1523,10 @@ static int tegra_dp_init_max_link_cfg(struct tegra_dc_dp_data *dp, | |||
1523 | &dpcd_data)); | 1523 | &dpcd_data)); |
1524 | 1524 | ||
1525 | cfg->max_lane_count = dpcd_data & NV_DPCD_MAX_LANE_COUNT_MASK; | 1525 | cfg->max_lane_count = dpcd_data & NV_DPCD_MAX_LANE_COUNT_MASK; |
1526 | if (dp->pdata && dp->pdata->lanes && | ||
1527 | dp->pdata->lanes < cfg->max_lane_count) | ||
1528 | cfg->max_lane_count = dp->pdata->lanes; | ||
1529 | |||
1526 | cfg->tps3_supported = | 1530 | cfg->tps3_supported = |
1527 | (dpcd_data & NV_DPCD_MAX_LANE_COUNT_TPS3_SUPPORTED_YES) ? | 1531 | (dpcd_data & NV_DPCD_MAX_LANE_COUNT_TPS3_SUPPORTED_YES) ? |
1528 | true : false; | 1532 | true : false; |
@@ -1546,6 +1550,9 @@ static int tegra_dp_init_max_link_cfg(struct tegra_dc_dp_data *dp, | |||
1546 | 1550 | ||
1547 | CHECK_RET(tegra_dc_dp_dpcd_read(dp, NV_DPCD_MAX_LINK_BANDWIDTH, | 1551 | CHECK_RET(tegra_dc_dp_dpcd_read(dp, NV_DPCD_MAX_LINK_BANDWIDTH, |
1548 | &cfg->max_link_bw)); | 1552 | &cfg->max_link_bw)); |
1553 | if (dp->pdata && dp->pdata->link_bw && | ||
1554 | dp->pdata->link_bw < cfg->max_link_bw) | ||
1555 | cfg->max_link_bw = dp->pdata->link_bw; | ||
1549 | 1556 | ||
1550 | CHECK_RET(tegra_dc_dp_dpcd_read(dp, NV_DPCD_EDP_CONFIG_CAP, | 1557 | CHECK_RET(tegra_dc_dp_dpcd_read(dp, NV_DPCD_EDP_CONFIG_CAP, |
1551 | &dpcd_data)); | 1558 | &dpcd_data)); |
@@ -1565,8 +1572,7 @@ static int tegra_dp_init_max_link_cfg(struct tegra_dc_dp_data *dp, | |||
1565 | 1572 | ||
1566 | cfg->lane_count = cfg->max_lane_count; | 1573 | cfg->lane_count = cfg->max_lane_count; |
1567 | 1574 | ||
1568 | cfg->link_bw = (dp->pdata && dp->pdata->link_bw) ? | 1575 | cfg->link_bw = cfg->max_link_bw; |
1569 | dp->pdata->link_bw : cfg->max_link_bw; | ||
1570 | 1576 | ||
1571 | cfg->enhanced_framing = cfg->support_enhanced_framing; | 1577 | cfg->enhanced_framing = cfg->support_enhanced_framing; |
1572 | 1578 | ||