summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev/msm
diff options
context:
space:
mode:
authorChandan Uddaraju <chandanu@codeaurora.org>2016-11-08 12:36:09 -0800
committerChandan Uddaraju <chandanu@codeaurora.org>2016-11-08 17:01:40 -0800
commit720d736d5beea1cae7b0eac77366079e419309f0 (patch)
tree85e814417305de15fb21a3a9cc3f43c92c0d34ac /drivers/video/fbdev/msm
parentfa8b3ea588393dd1e40fdd29c4bd3cd1c33fbc55 (diff)
mdss: display-port: fix link rate calculation
The current generated link rate in software doesn't consider fractional values. As a result, for few of the boundary cases, the calculated link rate is not correct. Fix this by checking for any fractional values. Change-Id: I3366b70c7e5bfa2a240aa24f1e0c70b54d686721 Signed-off-by: Chandan Uddaraju <chandanu@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev/msm')
-rw-r--r--drivers/video/fbdev/msm/mdss_dp_aux.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dp_aux.c b/drivers/video/fbdev/msm/mdss_dp_aux.c
index 86cd9cada381..2884d212ffe6 100644
--- a/drivers/video/fbdev/msm/mdss_dp_aux.c
+++ b/drivers/video/fbdev/msm/mdss_dp_aux.c
@@ -514,7 +514,7 @@ char mdss_dp_gen_link_clk(struct mdss_panel_info *pinfo, char lane_cnt)
{
const u32 encoding_factx10 = 8;
const u32 ln_to_link_ratio = 10;
- u32 min_link_rate;
+ u32 min_link_rate, reminder = 0;
char calc_link_rate = 0;
pr_debug("clk_rate=%llu, bpp= %d, lane_cnt=%d\n",
@@ -531,9 +531,15 @@ char mdss_dp_gen_link_clk(struct mdss_panel_info *pinfo, char lane_cnt)
/ (lane_cnt * encoding_factx10);
min_link_rate /= ln_to_link_ratio;
min_link_rate = (min_link_rate * pinfo->bpp);
- min_link_rate = (u32)div_u64(min_link_rate * 10,
- DP_LINK_RATE_MULTIPLIER);
+ min_link_rate = (u32)div_u64_rem(min_link_rate * 10,
+ DP_LINK_RATE_MULTIPLIER, &reminder);
+ /*
+ * To avoid any fractional values,
+ * increment the min_link_rate
+ */
+ if (reminder)
+ min_link_rate += 1;
pr_debug("min_link_rate = %d\n", min_link_rate);
if (min_link_rate <= DP_LINK_RATE_162)