From e5aa8b65b8b89fcf357efe2d20c3734cb017e231 Mon Sep 17 00:00:00 2001 From: Yuan Zhao Date: Mon, 24 Feb 2020 23:16:38 +0800 Subject: [PATCH] ARM: dts: msm: add other fps support for lahaina qrd Add 60hz and 120hz cmd mode support and dynamic fps switch commands. Change-Id: I9b09fa2e99844a0ed34b9366b6b822acb2505af2 --- display/dsi-panel-r66451-dsc-qhd-cmd.dtsi | 183 +++++++++++++++++++- display/dsi-panel-r66451-dsc-qhd-video.dtsi | 9 +- display/lahaina-sde-display.dtsi | 28 ++- 3 files changed, 208 insertions(+), 12 deletions(-) diff --git a/display/dsi-panel-r66451-dsc-qhd-cmd.dtsi b/display/dsi-panel-r66451-dsc-qhd-cmd.dtsi index e1c7c4d40434..1d9d3e26f7cf 100644 --- a/display/dsi-panel-r66451-dsc-qhd-cmd.dtsi +++ b/display/dsi-panel-r66451-dsc-qhd-cmd.dtsi @@ -1,5 +1,5 @@ &mdss_mdp { - dsi_r66451_amoled_cmd: qcom,mdss_dsi_r66451_qhd_cmd { + dsi_r66451_amoled_cmd: qcom,mdss_dsi_visionox_r66451_fhd_plus_cmd { qcom,mdss-dsi-panel-name = "r66451 amoled cmd mode dsi visionx panel with DSC"; qcom,mdss-dsi-panel-type = "dsi_cmd_mode"; @@ -34,12 +34,12 @@ qcom,mdss-dsi-te-using-te-pin; qcom,mdss-dsi-display-timings { timing@0 { - qcom,mdss-dsi-panel-framerate = <90>; + qcom,mdss-dsi-panel-framerate = <120>; qcom,mdss-dsi-panel-width = <1080>; qcom,mdss-dsi-panel-height = <2340>; - qcom,mdss-dsi-h-front-porch = <96>; + qcom,mdss-dsi-h-front-porch = <95>; qcom,mdss-dsi-h-back-porch = <40>; - qcom,mdss-dsi-h-pulse-width = <32>; + qcom,mdss-dsi-h-pulse-width = <1>; qcom,mdss-dsi-h-sync-skew = <0>; qcom,mdss-dsi-v-back-porch = <4>; qcom,mdss-dsi-v-front-porch = <25>; @@ -49,6 +49,111 @@ qcom,mdss-dsi-v-top-border = <0>; qcom,mdss-dsi-v-bottom-border = <0>; qcom,mdss-dsi-panel-jitter = <0x4 0x1>; + + qcom,mdss-dsi-timing-switch-command = [ + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 1a c2 09 24 0c 00 00 + 0c 00 00 00 09 3c 00 00 00 00 00 00 + 00 00 00 00 00 30 00 6c + ]; + + qcom,mdss-dsi-on-command = [ + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 0c c2 09 24 0c 00 00 + 0c 00 00 00 09 3c + 39 01 00 00 00 00 1a d7 00 b9 3c 00 40 + 04 00 a0 0a 00 40 00 00 00 00 00 00 + 19 3c 00 40 04 00 a0 0a + 39 01 00 00 00 00 02 b0 80 + 39 01 00 00 00 00 14 de 40 00 18 00 18 + 00 18 00 18 10 00 18 00 18 00 18 02 + 00 00 + 39 01 00 00 00 00 02 b0 04 + 39 01 00 00 00 00 03 e8 00 02 + 39 01 00 00 00 00 03 e4 00 08 + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 11 c4 00 00 00 00 + 00 00 00 00 00 00 00 02 00 00 00 32 + 39 01 00 00 00 00 19 cf 64 0b 00 00 00 + 00 00 00 08 00 0b 77 01 01 01 01 01 + 01 02 02 02 02 02 03 + 39 01 00 00 00 00 15 d3 45 00 00 01 13 + 15 00 15 07 0f 77 77 77 37 b2 11 00 + a0 3c 9c + 39 01 00 00 00 00 1a d7 00 b9 34 00 40 + 04 00 a0 0a 00 40 00 00 00 00 00 00 + 19 34 00 40 04 00 a0 0a + 39 01 00 00 00 00 34 d8 00 00 00 00 00 + 00 00 00 00 3a 00 3a 00 3a 00 3a 00 + 3a 05 00 00 00 00 00 00 00 00 00 0a + 00 0a 00 00 00 00 00 00 00 00 00 00 + 00 00 00 0a 00 32 00 0a 00 22 + 39 01 00 00 00 00 2b df 50 42 58 81 2d + 00 00 00 00 00 00 6b 00 00 00 00 00 + 00 00 00 01 0f ff d4 0e 00 00 00 00 + 00 00 0f 53 f1 00 00 00 00 00 00 00 + 00 + 39 01 00 00 00 00 02 f7 01 + 39 01 00 00 00 00 02 b0 80 + 39 01 00 00 00 00 0a e4 34 b4 00 00 00 + 39 04 09 34 + 39 01 00 00 00 00 02 e6 00 + 39 01 00 00 00 00 02 b0 04 + 39 01 00 00 00 00 03 df 50 40 + 39 01 00 00 00 00 06 f3 50 00 00 00 00 + 39 01 00 00 00 00 02 f2 11 + 39 01 00 00 00 00 06 f3 01 00 00 00 01 + 39 01 00 00 00 00 03 f4 00 02 + 39 01 00 00 00 00 02 f2 19 + 39 01 00 00 00 00 03 df 50 42 + 39 01 00 00 00 00 02 35 00 + 39 01 00 00 00 00 05 2a 00 00 04 37 + 39 01 00 00 00 00 05 2b 00 00 09 23 + 05 01 00 00 78 00 01 11 + 05 01 00 00 00 00 01 29 + ]; + + qcom,mdss-dsi-off-command = [ + 05 01 00 00 14 00 02 28 00 + 05 01 00 00 78 00 02 10 00]; + qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-off-command-state = "dsi_hs_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; + qcom,mdss-dsi-h-sync-pulse = <0>; + qcom,compression-mode = "dsc"; + qcom,mdss-dsc-slice-height = <20>; + qcom,mdss-dsc-slice-width = <540>; + qcom,mdss-dsc-slice-per-pkt = <1>; + qcom,mdss-dsc-bit-per-component = <8>; + qcom,mdss-dsc-bit-per-pixel = <8>; + qcom,mdss-dsc-block-prediction-enable; + }; + + timing@1 { + qcom,mdss-dsi-panel-framerate = <90>; + qcom,mdss-dsi-panel-width = <1080>; + qcom,mdss-dsi-panel-height = <2340>; + qcom,mdss-dsi-h-front-porch = <95>; + qcom,mdss-dsi-h-back-porch = <40>; + qcom,mdss-dsi-h-pulse-width = <1>; + qcom,mdss-dsi-h-sync-skew = <0>; + qcom,mdss-dsi-v-back-porch = <4>; + qcom,mdss-dsi-v-front-porch = <25>; + qcom,mdss-dsi-v-pulse-width = <1>; + qcom,mdss-dsi-h-left-border = <0>; + qcom,mdss-dsi-h-right-border = <0>; + qcom,mdss-dsi-v-top-border = <0>; + qcom,mdss-dsi-v-bottom-border = <0>; + qcom,mdss-dsi-panel-jitter = <0x4 0x1>; + + qcom,mdss-dsi-timing-switch-command = [ + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 1a c2 09 24 0c 00 00 + 0c 03 14 00 09 3c 00 00 00 00 00 00 + 00 00 00 00 00 30 00 6c + ]; + qcom,mdss-dsi-on-command = [ 39 01 00 00 00 00 02 b0 80 39 01 00 00 00 00 02 e6 00 @@ -71,12 +176,80 @@ 05 01 00 00 78 00 01 11 05 01 00 00 00 00 01 29 ]; - qcom,mdss-dsi-off-command = [ 05 01 00 00 14 00 02 28 00 05 01 00 00 78 00 02 10 00]; qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; qcom,mdss-dsi-off-command-state = "dsi_hs_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; + qcom,mdss-dsi-h-sync-pulse = <0>; + qcom,compression-mode = "dsc"; + qcom,mdss-dsc-slice-height = <20>; + qcom,mdss-dsc-slice-width = <540>; + qcom,mdss-dsc-slice-per-pkt = <1>; + qcom,mdss-dsc-bit-per-component = <8>; + qcom,mdss-dsc-bit-per-pixel = <8>; + qcom,mdss-dsc-block-prediction-enable; + }; + + timing@2 { + qcom,mdss-dsi-panel-framerate = <60>; + qcom,mdss-dsi-panel-width = <1080>; + qcom,mdss-dsi-panel-height = <2340>; + qcom,mdss-dsi-h-front-porch = <95>; + qcom,mdss-dsi-h-back-porch = <40>; + qcom,mdss-dsi-h-pulse-width = <1>; + qcom,mdss-dsi-h-sync-skew = <0>; + qcom,mdss-dsi-v-back-porch = <4>; + qcom,mdss-dsi-v-front-porch = <25>; + qcom,mdss-dsi-v-pulse-width = <1>; + qcom,mdss-dsi-h-left-border = <0>; + qcom,mdss-dsi-h-right-border = <0>; + qcom,mdss-dsi-v-top-border = <0>; + qcom,mdss-dsi-v-bottom-border = <0>; + qcom,mdss-dsi-panel-jitter = <0x4 0x1>; + + qcom,mdss-dsi-timing-switch-command = [ + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 1a c2 09 24 0c 00 00 + 0c 09 3c 00 09 3c 00 00 00 00 00 00 + 00 00 00 00 00 30 00 6c + ]; + + qcom,mdss-dsi-on-command = [ + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 13 d8 00 00 00 00 00 + 00 00 00 00 5b 00 5b 00 5b 00 5b 00 + 5b + 39 01 00 00 00 00 02 b0 80 + 39 01 00 00 00 00 02 e6 00 + 39 01 00 00 00 00 02 b0 00 + 39 01 00 00 00 00 19 cf 64 0b 00 00 00 + 00 00 00 08 00 0b 77 01 01 01 01 01 + 01 04 04 04 04 04 05 + 39 01 00 00 00 00 02 b0 04 + 39 01 00 00 00 00 02 f7 01 + 39 01 00 00 00 00 03 df 50 40 + 39 01 00 00 00 00 06 f3 50 00 00 00 00 + 39 01 00 00 00 00 02 f2 11 + 39 01 00 00 00 00 06 f3 01 00 00 00 01 + 39 01 00 00 00 00 03 f4 00 02 + 39 01 00 00 00 00 02 f2 19 + 39 01 00 00 00 00 03 df 50 42 + 39 01 00 00 00 00 02 35 00 + 39 01 00 00 00 00 05 2a 00 00 04 37 + 39 01 00 00 00 00 05 2b 00 00 09 23 + 05 01 00 00 78 00 01 11 + 05 01 00 00 00 00 01 29 + ]; + qcom,mdss-dsi-off-command = [ + 05 01 00 00 14 00 02 28 00 + 05 01 00 00 78 00 02 10 00]; + qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-off-command-state = "dsi_hs_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; qcom,mdss-dsi-h-sync-pulse = <0>; qcom,compression-mode = "dsc"; qcom,mdss-dsc-slice-height = <20>; diff --git a/display/dsi-panel-r66451-dsc-qhd-video.dtsi b/display/dsi-panel-r66451-dsc-qhd-video.dtsi index 44229ba0208f..9b86cfa0323c 100644 --- a/display/dsi-panel-r66451-dsc-qhd-video.dtsi +++ b/display/dsi-panel-r66451-dsc-qhd-video.dtsi @@ -1,7 +1,7 @@ &mdss_mdp { - dsi_r66451_amoled_video: qcom,mdss_dsi_r66451_qhd_video { + dsi_r66451_amoled_video: qcom,mdss_dsi_visionox_r66451_fhd_plus_video { qcom,mdss-dsi-panel-name = - "r66451 amoled cmd mode dsi visionx panel with DSC"; + "r66451 amoled video mode dsi visionx panel with DSC"; qcom,mdss-dsi-panel-type = "dsi_video_mode"; qcom,mdss-dsi-panel-physical-type = "oled"; qcom,dsi-ctrl-num = <0>; @@ -26,9 +26,9 @@ timing@0 { qcom,mdss-dsi-panel-width = <1080>; qcom,mdss-dsi-panel-height = <2340>; - qcom,mdss-dsi-h-front-porch = <96>; + qcom,mdss-dsi-h-front-porch = <95>; qcom,mdss-dsi-h-back-porch = <40>; - qcom,mdss-dsi-h-pulse-width = <32>; + qcom,mdss-dsi-h-pulse-width = <1>; qcom,mdss-dsi-h-sync-skew = <0>; qcom,mdss-dsi-v-back-porch = <4>; qcom,mdss-dsi-v-front-porch = <25>; @@ -52,7 +52,6 @@ 39 01 00 00 00 00 03 f4 00 02 39 01 00 00 00 00 02 f2 19 39 01 00 00 00 00 03 df 50 42 - 39 01 00 00 00 00 02 35 00 39 01 00 00 00 00 05 2a 00 00 04 37 39 01 00 00 00 00 05 2b 00 00 09 23 05 01 00 00 78 00 01 11 diff --git a/display/lahaina-sde-display.dtsi b/display/lahaina-sde-display.dtsi index 7eba4ee35223..007cfb84b90f 100644 --- a/display/lahaina-sde-display.dtsi +++ b/display/lahaina-sde-display.dtsi @@ -194,6 +194,13 @@ &dsi_r66451_amoled_video { qcom,dsi-select-clocks = "mux_byte_clk0", "mux_pixel_clk0"; qcom,mdss-dsi-display-timings { + /* + * CDP could not display using the old HFP(96) and HSYNC(32). + * Modified HFP to 95 and HSYNC to 1, but using the new porch + * to caculator the PHY timing based on version YB, 90hz could + * not display, need to keep the PHY timing(which based on + * HFP=96, HSYNC=32). + */ timing@0 { qcom,mdss-dsi-panel-phy-timings = [00 15 06 06 0a 09 06 06 04 02 04 00 12 0b]; @@ -208,8 +215,25 @@ qcom,dsi-select-clocks = "mux_byte_clk0", "mux_pixel_clk0"; qcom,mdss-dsi-display-timings { timing@0 { - qcom,mdss-dsi-panel-phy-timings = [00 15 06 06 0a 09 06 - 06 04 02 04 00 12 0b]; + qcom,mdss-dsi-panel-phy-timings = [00 19 08 07 0c 0b 07 + 07 05 02 04 00 16 0c]; + qcom,display-topology = <2 2 1>; + qcom,default-topology-index = <0>; + }; + + timing@1 { + qcom,mdss-dsi-panel-phy-timings = [00 13 06 05 09 1f 06 + 06 03 02 04 00 11 0a]; + qcom,display-topology = <2 2 1>; + qcom,default-topology-index = <0>; + }; + /* + * Using PHY Timings version YB 60hz could not display, + * refer to version W, changed T_HS_ZERO from 0x06 to 0x1e. + */ + timing@2 { + qcom,mdss-dsi-panel-phy-timings = [00 0d 04 04 07 1e 04 + 04 02 02 04 00 0c 09]; qcom,display-topology = <2 2 1>; qcom,default-topology-index = <0>; };