Loading Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +15 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,20 @@ Optional properties: 60 = 60 frames per second (default) - qcom,mdss-dsi-panel-clockrate: A 64 bit value specifies the panel clock speed in Hz. 0 = default value. - qcom,mdss-mdp-transfer-time-us: Specifies the dsi transfer time for command mode panels in microseconds. Driver uses this number to adjust the clock rate according to the expected transfer time. Increasing this value would slow down the mdp processing and can result in slower performance. Decreasing this value can speed up the mdp processing, but this can also impact power consumption. As a rule this time should not be higher than the time that would be expected with the processing at the dsi link rate since anyways this would be the maximum transfer time that could be achieved. If ping pong split enabled, this time should not be higher than two times the dsi link rate time. 14000 = default value. - qcom,mdss-dsi-on-command-state: String that specifies the ctrl state for sending ON commands. "dsi_lp_mode" = DSI low power mode (default) "dsi_hs_mode" = DSI high speed mode Loading Loading @@ -489,6 +503,7 @@ Example: qcom,mdss-dsi-dma-trigger = <0>; qcom,mdss-dsi-panel-framerate = <60>; qcom,mdss-dsi-panel-clockrate = <424000000>; qcom,mdss-mdp-transfer-time-us = <12500>; qcom,mdss-dsi-panel-timings = [7d 25 1d 00 37 33 22 27 1e 03 04 00]; qcom,mdss-dsi-panel-timings-8996 = [23 20 06 09 05 03 04 a0 Loading drivers/video/msm/mdss/mdss_dsi_panel.c +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define DT_CMD_HDR 6 #define MIN_REFRESH_RATE 30 #define DEFAULT_MDP_TRANSFER_TIME 14000 #define CEIL(x, y) (((x) + ((y)-1)) / (y)) Loading Loading @@ -2021,9 +2022,14 @@ static int mdss_panel_parse_dt(struct device_node *np, rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-framerate", &tmp); pinfo->mipi.frame_rate = (!rc ? tmp : 60); pinfo->clk_rate = 0; of_property_read_u64(np, "qcom,mdss-dsi-panel-clockrate", &pinfo->clk_rate); rc = of_property_read_u32(np, "qcom,mdss-mdp-transfer-time-us", &tmp); pinfo->mdp_transfer_time_us = (!rc ? tmp : DEFAULT_MDP_TRANSFER_TIME); data = of_get_property(np, "qcom,mdss-dsi-panel-timings", &len); if ((!data) || (len != 12)) { pr_err("%s:%d, Unable to read Phy timing settings", Loading drivers/video/msm/mdss/mdss_mdp_ctl.c +6 −6 Original line number Diff line number Diff line Loading @@ -903,14 +903,14 @@ static void mdss_mdp_perf_calc_mixer(struct mdss_mdp_mixer *mixer, &mixer->ctl->dst_comp_ratio); } else if (pinfo->type == MIPI_CMD_PANEL) { /* for cmd mode, run as fast as the link allows us */ u32 dsi_pclk_rate = pinfo->mipi.dsi_pclk_rate; u32 dsi_transfer_rate = mixer->width * v_total; if (is_pingpong_split(mixer->ctl->mfd)) dsi_pclk_rate *= 2; /* adjust transfer time from micro seconds */ dsi_transfer_rate = mult_frac(dsi_transfer_rate, 1000000, pinfo->mdp_transfer_time_us); if (dsi_pclk_rate > perf->mdp_clk_rate) perf->mdp_clk_rate = dsi_pclk_rate; if (dsi_transfer_rate > perf->mdp_clk_rate) perf->mdp_clk_rate = dsi_transfer_rate; } } Loading drivers/video/msm/mdss/mdss_panel.h +1 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,7 @@ struct mdss_panel_info { u64 clk_rate; u32 clk_min; u64 clk_max; u32 mdp_transfer_time_us; u32 frame_count; u32 is_3d_panel; u32 out_format; Loading Loading
Documentation/devicetree/bindings/fb/mdss-dsi-panel.txt +15 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,20 @@ Optional properties: 60 = 60 frames per second (default) - qcom,mdss-dsi-panel-clockrate: A 64 bit value specifies the panel clock speed in Hz. 0 = default value. - qcom,mdss-mdp-transfer-time-us: Specifies the dsi transfer time for command mode panels in microseconds. Driver uses this number to adjust the clock rate according to the expected transfer time. Increasing this value would slow down the mdp processing and can result in slower performance. Decreasing this value can speed up the mdp processing, but this can also impact power consumption. As a rule this time should not be higher than the time that would be expected with the processing at the dsi link rate since anyways this would be the maximum transfer time that could be achieved. If ping pong split enabled, this time should not be higher than two times the dsi link rate time. 14000 = default value. - qcom,mdss-dsi-on-command-state: String that specifies the ctrl state for sending ON commands. "dsi_lp_mode" = DSI low power mode (default) "dsi_hs_mode" = DSI high speed mode Loading Loading @@ -489,6 +503,7 @@ Example: qcom,mdss-dsi-dma-trigger = <0>; qcom,mdss-dsi-panel-framerate = <60>; qcom,mdss-dsi-panel-clockrate = <424000000>; qcom,mdss-mdp-transfer-time-us = <12500>; qcom,mdss-dsi-panel-timings = [7d 25 1d 00 37 33 22 27 1e 03 04 00]; qcom,mdss-dsi-panel-timings-8996 = [23 20 06 09 05 03 04 a0 Loading
drivers/video/msm/mdss/mdss_dsi_panel.c +6 −0 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define DT_CMD_HDR 6 #define MIN_REFRESH_RATE 30 #define DEFAULT_MDP_TRANSFER_TIME 14000 #define CEIL(x, y) (((x) + ((y)-1)) / (y)) Loading Loading @@ -2021,9 +2022,14 @@ static int mdss_panel_parse_dt(struct device_node *np, rc = of_property_read_u32(np, "qcom,mdss-dsi-panel-framerate", &tmp); pinfo->mipi.frame_rate = (!rc ? tmp : 60); pinfo->clk_rate = 0; of_property_read_u64(np, "qcom,mdss-dsi-panel-clockrate", &pinfo->clk_rate); rc = of_property_read_u32(np, "qcom,mdss-mdp-transfer-time-us", &tmp); pinfo->mdp_transfer_time_us = (!rc ? tmp : DEFAULT_MDP_TRANSFER_TIME); data = of_get_property(np, "qcom,mdss-dsi-panel-timings", &len); if ((!data) || (len != 12)) { pr_err("%s:%d, Unable to read Phy timing settings", Loading
drivers/video/msm/mdss/mdss_mdp_ctl.c +6 −6 Original line number Diff line number Diff line Loading @@ -903,14 +903,14 @@ static void mdss_mdp_perf_calc_mixer(struct mdss_mdp_mixer *mixer, &mixer->ctl->dst_comp_ratio); } else if (pinfo->type == MIPI_CMD_PANEL) { /* for cmd mode, run as fast as the link allows us */ u32 dsi_pclk_rate = pinfo->mipi.dsi_pclk_rate; u32 dsi_transfer_rate = mixer->width * v_total; if (is_pingpong_split(mixer->ctl->mfd)) dsi_pclk_rate *= 2; /* adjust transfer time from micro seconds */ dsi_transfer_rate = mult_frac(dsi_transfer_rate, 1000000, pinfo->mdp_transfer_time_us); if (dsi_pclk_rate > perf->mdp_clk_rate) perf->mdp_clk_rate = dsi_pclk_rate; if (dsi_transfer_rate > perf->mdp_clk_rate) perf->mdp_clk_rate = dsi_transfer_rate; } } Loading
drivers/video/msm/mdss/mdss_panel.h +1 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,7 @@ struct mdss_panel_info { u64 clk_rate; u32 clk_min; u64 clk_max; u32 mdp_transfer_time_us; u32 frame_count; u32 is_3d_panel; u32 out_format; Loading