From bbeeadcd82367979e646d856474fbcb36580811a Mon Sep 17 00:00:00 2001 From: hqjiangy Date: Sat, 7 May 2022 17:47:45 +0800 Subject: [PATCH] arm/dts: display: add panel dtsi for rhode add panel dtsi for rhode: 1.visionox rm692e5 6.55 inch v0 panel Change-Id: I4177b8725fdcaec1e168ecb2a01159de4d24571c Reviewed-on: https://gerrit.mot.com/2262795 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Hua Tan Reviewed-by: Submit-Approved: Jira Key --- ...692e5-655-1080x2400-dsc-cmd-common-v0.dtsi | 340 ++++++++++++++++++ qcom/khaje-rhode-display.dtsi | 44 +++ qcom/khaje-rhode-touchscreen-overlay.dtsi | 3 +- 3 files changed, 386 insertions(+), 1 deletion(-) create mode 100644 qcom/dsi-panel-mot-visionox-rm692e5-655-1080x2400-dsc-cmd-common-v0.dtsi diff --git a/qcom/dsi-panel-mot-visionox-rm692e5-655-1080x2400-dsc-cmd-common-v0.dtsi b/qcom/dsi-panel-mot-visionox-rm692e5-655-1080x2400-dsc-cmd-common-v0.dtsi new file mode 100644 index 000000000000..8f5f3775fb1d --- /dev/null +++ b/qcom/dsi-panel-mot-visionox-rm692e5-655-1080x2400-dsc-cmd-common-v0.dtsi @@ -0,0 +1,340 @@ +/* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ +&mdss_mdp { + mot_visionox_rm692e5_655_1080x2400_dsc_cmd_v0: qcom,mdss_dsi_mot_visionox_rm692e5_655_1080x2400_dsc_cmd_v0 { + compatible = "qcom,mdss-dsi-panel"; + qcom,mdss-dsi-panel-name = "mipi_mot_cmd_visionox_1080p_dsc_655"; + qcom,mdss-dsi-panel-supplier = "visionox"; + qcom,mdss-dsi-panel-type = "dsi_cmd_mode"; + qcom,mdss-dsi-virtual-channel-id = <0>; + qcom,mdss-dsi-stream = <0>; + qcom,mdss-pan-physical-width-dimension = <68>; + qcom,mdss-pan-physical-height-dimension = <152>; + qcom,mdss-dsi-bpp = <30>; + qcom,mdss-dsi-underflow-color = <0xff>; + qcom,mdss-dsi-border-color = <0>; + qcom,mdss-dsi-panel-param-verision = <121201>; + qcom,mdss-dsi-panel-param-num = <5>; + + qcom,dsi-ctrl-num = <0>; + qcom,dsi-phy-num = <0>; + + qcom,mdss-dsi-traffic-mode = "burst_mode"; + qcom,mdss-dsi-bllp-eof-power-mode; + qcom,mdss-dsi-bllp-power-mode; + qcom,mdss-dsi-lane-0-state; + qcom,mdss-dsi-lane-1-state; + qcom,mdss-dsi-lane-2-state; + qcom,mdss-dsi-lane-3-state; + + qcom,mdss-dsi-dma-trigger = "trigger_sw"; + qcom,mdss-dsi-mdp-trigger = "none"; + qcom,mdss-dsi-reset-sequence = <0 11>, <1 1>, <0 1>, <1 32>; + qcom,mdss-dsi-lp11-init; + qcom,mdss-dsi-tx-eot-append; + qcom,mdss-dsi-te-pin-select = <1>; + qcom,mdss-dsi-te-dcs-command = <1>; + + qcom,mdss-dsi-te-using-te-pin; + + qcom,bklt-dcs-2bytes-enabled; + qcom,mdss-dsi-bl-min-level = <3>; + qcom,mdss-dsi-bl-max-level = <4095>; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + + /*qcom,mdss-dsi-panel-hdr-enabled; + qcom,mdss-dsi-panel-hdr-color-primaries = <14500 15500 32000 + 17000 15500 30000 8000 3000>; + qcom,mdss-dsi-panel-peak-brightness = <4200000>; + + qcom,mdss-dsi-panel-blackness-level = <3230>;*/ + + qcom,mdss-dsi-hbm-on-command = [ + 39 01 00 00 00 00 03 51 0F FF]; + qcom,mdss-dsi-hbm-off-command = [ + 39 01 00 00 00 00 03 51 0D BA]; + + qcom,mdss-dsi-hbm-fod; + qcom,mdss-dsi-hbm-fod-on-command = [ + 39 01 00 00 00 00 03 51 0F FF]; + + //qcom,mdss-dsi-acl-on-command = [ + // 39 01 00 00 00 00 06 F0 55 AA 52 08 00 + // 15 00 00 00 00 00 02 B0 0C + // 15 01 00 00 00 00 02 55 05]; + //qcom,mdss-dsi-acl-off-command = [ + // 15 01 00 00 00 00 02 55 00]; + + qcom,mdss-dsi-dc-off-command = [ + 15 00 00 00 00 00 02 FE 40 + 15 00 00 00 00 00 02 BD 00 + 15 01 00 00 00 00 02 FE 00]; + qcom,mdss-dsi-dc-off-command-state = "dsi_lp_mode"; + + qcom,mdss-dsi-dc-on-command = [ + 15 00 00 00 00 00 02 FE 40 + 15 00 00 00 00 00 02 BD 06 + 15 01 00 00 00 00 02 FE 00]; + qcom,mdss-dsi-dc-on-command-state = "dsi_lp_mode"; + + qcom,mdss-dsi-display-timings { + timing@0{ + qcom,mdss-dsi-cmd-mode; + qcom,mdss-dsi-panel-framerate = <48>; + qcom,mdss-dsi-panel-width = <1080>; + qcom,mdss-dsi-panel-height = <2400>; + qcom,mdss-dsi-h-front-porch = <28>; + qcom,mdss-dsi-h-back-porch = <36>; + qcom,mdss-dsi-h-pulse-width = <40>; + qcom,mdss-dsi-h-sync-skew = <0>; + qcom,mdss-dsi-h-sync-pulse = <0>; + qcom,mdss-dsi-v-back-porch = <14>; + qcom,mdss-dsi-v-front-porch = <16>; + qcom,mdss-dsi-v-pulse-width = <18>; + 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 = <0x20 0xa>; /* 90fps +/- 2 */ + qcom,mdss-dsi-timing-switch-command = [ + 15 01 00 00 00 00 02 FE 00 + 05 01 00 00 00 00 01 39 /*Aod on*/ + ]; + + qcom,mdss-dsi-on-command = [ + 39 01 00 00 00 00 02 FE 40 + 39 01 00 00 00 00 02 BD 00 + 15 01 00 00 00 00 02 FE A1 + 15 01 00 00 00 00 02 CD 6B + 15 01 00 00 00 00 02 CE BB + 15 01 00 00 00 00 02 FE 38 + 15 01 00 00 00 00 02 17 0F + 15 01 00 00 00 00 02 18 0F + 15 01 00 00 00 00 02 FE D1 + 15 01 00 00 00 00 02 B4 01 + 15 01 00 00 00 00 02 FE FD + 15 01 00 00 00 00 02 80 F6 + 39 01 00 00 00 00 02 FE F2 + 39 01 00 00 00 00 02 00 9E + 39 01 00 00 00 00 02 05 54 + 39 01 00 00 00 00 02 11 04 + 39 01 00 00 00 00 02 13 5A + 39 01 00 00 00 00 02 14 B3 + 39 01 00 00 00 00 02 15 DF + 39 01 00 00 00 00 02 36 00 + 39 01 00 00 00 00 02 37 00 + 39 01 00 00 00 00 02 1A 02 + 39 01 00 00 00 00 02 1B D0 + 39 01 00 00 00 00 02 80 00 + 39 01 00 00 00 00 02 FE 14 + 39 01 00 00 00 00 02 A2 01 + 39 01 00 00 00 00 02 51 80 + 15 01 00 00 00 00 02 FE 00 + 15 01 00 00 00 00 02 FA 01 + 15 01 00 00 00 00 02 C2 08 + 15 01 00 00 00 00 02 35 00 + 39 01 00 00 00 00 03 51 00 00 + 05 01 00 00 50 00 01 11 + 05 01 00 00 00 00 01 29 + 15 01 00 00 00 00 02 FE 00 + 05 01 00 00 00 00 01 39]; /* display on */ + + qcom,mdss-dsi-off-command = [ + 05 01 00 00 C8 00 01 28 /* display_off */ + 05 01 00 00 00 00 01 10]; /* enter sleep mode */ + + qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-off-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; + qcom,compression-mode = "dsc"; + /* Why QCOM doesn't use this, even it used 2 encoder + * as for that dsi_sw43404_amoled_cmd, for ex */ + /* qcom,mdss-dsc-encoders = <2>; */ + qcom,mdss-dsc-version = <0x11>; + 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-cmd-mode; + qcom,mdss-dsi-panel-framerate = <60>; + qcom,mdss-dsi-panel-width = <1080>; + qcom,mdss-dsi-panel-height = <2400>; + qcom,mdss-dsi-h-front-porch = <28>; + qcom,mdss-dsi-h-back-porch = <36>; + qcom,mdss-dsi-h-pulse-width = <40>; + qcom,mdss-dsi-h-sync-skew = <0>; + qcom,mdss-dsi-h-sync-pulse = <0>; + qcom,mdss-dsi-v-back-porch = <14>; + qcom,mdss-dsi-v-front-porch = <16>; + qcom,mdss-dsi-v-pulse-width = <18>; + 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 = <0x20 0xa>; /* 90fps +/- 2 */ + qcom,mdss-dsi-timing-switch-command = [ + 15 01 00 00 00 00 02 FE 00 + 05 01 00 00 00 00 01 38 /*Aod off*/ + 39 01 00 00 00 00 02 FE 40 + 39 01 00 00 00 00 02 BD 00 //00:60Hz 05:90Hz + 15 01 00 00 00 00 02 FE 00 + ]; + + qcom,mdss-dsi-on-command = [ + 39 01 00 00 00 00 02 FE 40 + 39 01 00 00 00 00 02 BD 00 + 15 01 00 00 00 00 02 FE A1 + 15 01 00 00 00 00 02 CD 6B + 15 01 00 00 00 00 02 CE BB + 15 01 00 00 00 00 02 FE 38 + 15 01 00 00 00 00 02 17 0F + 15 01 00 00 00 00 02 18 0F + 15 01 00 00 00 00 02 FE D1 + 15 01 00 00 00 00 02 B4 01 + 15 01 00 00 00 00 02 FE FD + 15 01 00 00 00 00 02 80 F6 + 39 01 00 00 00 00 02 FE F2 + 39 01 00 00 00 00 02 00 9E + 39 01 00 00 00 00 02 05 54 + 39 01 00 00 00 00 02 11 04 + 39 01 00 00 00 00 02 13 5A + 39 01 00 00 00 00 02 14 B3 + 39 01 00 00 00 00 02 15 DF + 39 01 00 00 00 00 02 36 00 + 39 01 00 00 00 00 02 37 00 + 39 01 00 00 00 00 02 1A 02 + 39 01 00 00 00 00 02 1B D0 + 39 01 00 00 00 00 02 80 00 + 39 01 00 00 00 00 02 FE 14 + 39 01 00 00 00 00 02 A2 01 + 39 01 00 00 00 00 02 51 80 + 15 01 00 00 00 00 02 FE 00 + 15 01 00 00 00 00 02 FA 01 + 15 01 00 00 00 00 02 C2 08 + 15 01 00 00 00 00 02 35 00 + 39 01 00 00 00 00 03 51 00 00 + 05 01 00 00 50 00 01 11 + 05 01 00 00 00 00 01 29]; /* display on */ + + qcom,mdss-dsi-off-command = [ + 05 01 00 00 C8 00 01 28 /* display_off */ + 05 01 00 00 00 00 01 10]; /* enter sleep mode */ + + qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-off-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; + qcom,compression-mode = "dsc"; + /* Why QCOM doesn't use this, even it used 2 encoder + * as for that dsi_sw43404_amoled_cmd, for ex */ + /* qcom,mdss-dsc-encoders = <2>; */ + qcom,mdss-dsc-version = <0x11>; + 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-cmd-mode; + qcom,mdss-dsi-panel-framerate = <90>; + qcom,mdss-dsi-panel-width = <1080>; + qcom,mdss-dsi-panel-height = <2400>; + qcom,mdss-dsi-h-front-porch = <28>; + qcom,mdss-dsi-h-back-porch = <36>; + qcom,mdss-dsi-h-pulse-width = <40>; + qcom,mdss-dsi-h-sync-skew = <0>; + qcom,mdss-dsi-h-sync-pulse = <0>; + qcom,mdss-dsi-v-back-porch = <14>; + qcom,mdss-dsi-v-front-porch = <16>; + qcom,mdss-dsi-v-pulse-width = <18>; + 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 = <0x20 0xa>; /* 90fps +/- 2 */ + qcom,mdss-dsi-timing-switch-command = [ + 15 01 00 00 00 00 02 FE 00 + 05 01 00 00 00 00 01 38 /*Aod off*/ + 39 01 00 00 00 00 02 FE 40 + 39 01 00 00 00 00 02 BD 05 //00:60Hz 05:90Hz + 15 01 00 00 00 00 02 FE 00 + ]; + + qcom,mdss-dsi-on-command = [ + 39 01 00 00 00 00 02 FE 40 + 39 01 00 00 00 00 02 BD 05 + 15 01 00 00 00 00 02 FE A1 + 15 01 00 00 00 00 02 CD 6B + 15 01 00 00 00 00 02 CE BB + 15 01 00 00 00 00 02 FE 38 + 15 01 00 00 00 00 02 17 0F + 15 01 00 00 00 00 02 18 0F + 15 01 00 00 00 00 02 FE D1 + 15 01 00 00 00 00 02 B4 01 + 15 01 00 00 00 00 02 FE FD + 15 01 00 00 00 00 02 80 F6 + 39 01 00 00 00 00 02 FE F2 + 39 01 00 00 00 00 02 00 9E + 39 01 00 00 00 00 02 05 54 + 39 01 00 00 00 00 02 11 04 + 39 01 00 00 00 00 02 13 5A + 39 01 00 00 00 00 02 14 B3 + 39 01 00 00 00 00 02 15 DF + 39 01 00 00 00 00 02 36 00 + 39 01 00 00 00 00 02 37 00 + 39 01 00 00 00 00 02 1A 02 + 39 01 00 00 00 00 02 1B D0 + 39 01 00 00 00 00 02 80 00 + 39 01 00 00 00 00 02 FE 14 + 39 01 00 00 00 00 02 A2 01 + 39 01 00 00 00 00 02 51 80 + 15 01 00 00 00 00 02 FE 00 + 15 01 00 00 00 00 02 FA 01 + 15 01 00 00 00 00 02 C2 08 + 15 01 00 00 00 00 02 35 00 + 39 01 00 00 00 00 03 51 00 00 + 05 01 00 00 50 00 01 11 + 05 01 00 00 00 00 01 29]; /* display on */ + + qcom,mdss-dsi-off-command = [ + 05 01 00 00 C8 00 01 28 /* display_off */ + 05 01 00 00 00 00 01 10]; /* enter sleep mode */ + + qcom,mdss-dsi-on-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-off-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-timing-switch-command-state = + "dsi_lp_mode"; + qcom,compression-mode = "dsc"; + /* Why QCOM doesn't use this, even it used 2 encoder + * as for that dsi_sw43404_amoled_cmd, for ex */ + /* qcom,mdss-dsc-encoders = <2>; */ + qcom,mdss-dsc-version = <0x11>; + 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; + }; + + }; + + }; + +}; diff --git a/qcom/khaje-rhode-display.dtsi b/qcom/khaje-rhode-display.dtsi index ae32fce4ed1b..456dcf5996c7 100644 --- a/qcom/khaje-rhode-display.dtsi +++ b/qcom/khaje-rhode-display.dtsi @@ -3,6 +3,7 @@ #include "dsi-panel-mot-csot-nt37701-655-1080x2400-dsc-cmd-common-v1.dtsi" #include "dsi-panel-mot-csot-nt37701-655-1080x2400-dsc-cmd-common-v9.dtsi" #include "dsi-panel-mot-tianma-nt37701-655-1080x2400-dsc-cmd-common.dtsi" +#include "dsi-panel-mot-visionox-rm692e5-655-1080x2400-dsc-cmd-common-v0.dtsi" #include "dsi-panel-mot-tianma-nt37701-655-1080x2400-dsc-cmd-common-v1.dtsi" #include "dsi-panel-mot-tianma-nt37701-655-1080x2400-dsc-cmd-common-v2.dtsi" @@ -291,6 +292,49 @@ }; }; +&mot_visionox_rm692e5_655_1080x2400_dsc_cmd_v0 { + qcom,esd-check-enabled; + qcom,mdss-dsi-panel-status-check-mode = "te_chk_reg_rd"; + qcom,mdss-dsi-panel-status-command = [06 01 00 01 00 00 01 0a]; + qcom,mdss-dsi-panel-status-command-state = "dsi_lp_mode"; + qcom,mdss-dsi-panel-status-value = <0x9c>; + qcom,mdss-dsi-panel-status-read-length = <1>; + + qcom,panel-supply-entries = <&dsi_panel_pwr_supply_amoled>; + qcom,mdss-dsi-no-panel-on-read-support; + qcom,mdss-dsi-reset-force-pull-low; + qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs"; + qcom,mdss-dsi-bl-min-level = <9>; + qcom,mdss-dsi-bl-max-level = <3514>; + qcom,mdss-dsi-bl-default-level = <1757>; + qcom,mdss-brightness-max-level = <3514>; + qcom,platform-reset-gpio = <&tlmm 82 0>; + qcom,bl-dsc-cmd-state = "dsi_hs_mode"; + + qcom,dsi-select-clocks = "mux_byte_clk0", "mux_pixel_clk0"; + + qcom,mdss-dsi-display-timings { + timing@0 { + qcom,display-topology = <1 1 1>; + qcom,default-topology-index = <0>; + qcom,mdss-dsi-panel-phy-timings = [00 0E 03 03 11 1D 04 + 03 03 02 04 00 0D 08]; + }; + timing@1 { + qcom,display-topology = <1 1 1>; + qcom,default-topology-index = <0>; + qcom,mdss-dsi-panel-phy-timings = [00 11 03 04 12 1E 04 + 04 03 02 04 00 0E 09]; + }; + timing@2 { + qcom,display-topology = <1 1 1>; + qcom,default-topology-index = <0>; + qcom,mdss-dsi-panel-phy-timings = [00 16 05 05 14 1F 06 + 06 06 02 04 00 13 0B]; + }; + }; +}; + &mot_tm_nt37701_655_1080x2400_dsc_cmd_v1 { qcom,esd-check-enabled; qcom,mdss-dsi-panel-status-check-mode = "te_chk_reg_rd"; diff --git a/qcom/khaje-rhode-touchscreen-overlay.dtsi b/qcom/khaje-rhode-touchscreen-overlay.dtsi index 0f20236eef6c..357c41f26391 100644 --- a/qcom/khaje-rhode-touchscreen-overlay.dtsi +++ b/qcom/khaje-rhode-touchscreen-overlay.dtsi @@ -90,7 +90,8 @@ &mot_csot_nt37701_655_1080x2400_dsc_cmd_v1 &mot_tm_nt37701_655_1080x2400_dsc_cmd_v0 &mot_tm_nt37701_655_1080x2400_dsc_cmd_v1 - &mot_tm_nt37701_655_1080x2400_dsc_cmd_v2>; + &mot_tm_nt37701_655_1080x2400_dsc_cmd_v2 + &mot_visionox_rm692e5_655_1080x2400_dsc_cmd_v0>; pinctrl-names = "pmx_ts_active", "pmx_ts_suspend", "pmx_ts_release"; pinctrl-0 = <&ts_active>; pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;