Browse Source

Merge "disp: msm: dp: fix the dsc line buf bit depth selection for dp dsc"

qctecmdr 6 năm trước cách đây
mục cha
commit
f49f2c2153
1 tập tin đã thay đổi với 8 bổ sung3 xóa
  1. 8 3
      msm/dp/dp_panel.c

+ 8 - 3
msm/dp/dp_panel.c

@@ -1354,7 +1354,7 @@ static void dp_panel_dsc_pclk_param_calc(struct dp_panel *dp_panel,
 }
 
 static void dp_panel_dsc_populate_static_params(
-		struct msm_display_dsc_info *dsc)
+		struct msm_display_dsc_info *dsc, struct dp_panel *panel)
 {
 	int bpp, bpc;
 	int mux_words_size;
@@ -1366,6 +1366,7 @@ static void dp_panel_dsc_populate_static_params(
 	int data;
 	int final_value, final_scale;
 	int ratio_index, mod_offset;
+	int line_buf_depth_raw, line_buf_depth;
 
 	dsc->version = 0x11;
 	dsc->scr_rev = 0;
@@ -1419,7 +1420,10 @@ static void dp_panel_dsc_populate_static_params(
 		dsc->initial_xmit_delay = 341;
 	}
 
-	dsc->line_buf_depth = bpc + 1;
+	line_buf_depth_raw = panel->dsc_dpcd[5] & 0x0f;
+	line_buf_depth = (line_buf_depth_raw == 8) ? 8 :
+			(line_buf_depth_raw + 9);
+	dsc->line_buf_depth = min(line_buf_depth, dsc->bpc + 1);
 
 	if (bpc == 8) {
 		dsc->input_10_bits = 0;
@@ -2903,7 +2907,8 @@ static void dp_panel_convert_to_dp_mode(struct dp_panel *dp_panel,
 			return;
 		}
 
-		dp_panel_dsc_populate_static_params(&comp_info->dsc_info);
+		dp_panel_dsc_populate_static_params(&comp_info->dsc_info,
+				dp_panel);
 		dp_panel_dsc_pclk_param_calc(dp_panel,
 				&comp_info->dsc_info,
 				comp_info->comp_ratio,