On 19/05/2022 09:41, Alec Su wrote: > Add the device tree for Xiaomi Mi 5s Plus (natrium). > > Signed-off-by: Alec Su <ae40515@xxxxxxxxxxxx> > Reviewed-by: Yassine Oudjana <y.oudjana@xxxxxxxxxxxxxx> This is the first patch, so the review tag is a bit unexepected. Was it really given? > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../boot/dts/qcom/msm8996-xiaomi-natrium.dts | 419 ++++++++++++++++++ > 2 files changed, 420 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/msm8996-xiaomi-natrium.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 2f8aec2cc6db..3ae7ecd369fb 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -37,6 +37,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-dora.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-kagura.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-keyaki.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8996-xiaomi-gemini.dtb > +dtb-$(CONFIG_ARCH_QCOM) += msm8996-xiaomi-natrium.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8996-xiaomi-scorpio.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8998-asus-novago-tp370ql.dtb > dtb-$(CONFIG_ARCH_QCOM) += msm8998-fxtec-pro1.dtb > diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-natrium.dts b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-natrium.dts > new file mode 100644 > index 000000000000..212ff0fbf262 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-natrium.dts > @@ -0,0 +1,419 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/*> + * Copyright (c) 2022, Alec Su <ae40515@xxxxxxxxxxxx> > + */ > + > +/dts-v1/; > + > +#include "msm8996-xiaomi-common.dtsi" > +#include "pmi8996.dtsi" > +#include <dt-bindings/sound/qcom,q6afe.h> > +#include <dt-bindings/sound/qcom,q6asm.h> > + > +/ { > + model = "Xiaomi Mi 5s Plus"; > + compatible = "xiaomi,natrium", "qcom,msm8996"; > + chassis-type = "handset"; > + qcom,msm-id = <305 0x10000>; There is no such property documented. Either add bindings, or drop. > + qcom,board-id = <47 0>; The same. > +}; > + > +&adsp_pil { > + firmware-name = "qcom/msm8996/natrium/adsp.mbn"; > +}; > + > +&blsp2_i2c6 { > + synaptics@20 { > + compatible = "syna,rmi4-i2c"; > + reg = <0x20>; > + #address-cells = <1>; > + #size-cells = <0>; Why do you have address/size cells here? > + interrupt-parent = <&tlmm>; > + interrupts = <125 IRQ_TYPE_LEVEL_LOW>; > + vdda-supply = <&vreg_l6a_1p8>; > + vdd-supply = <&vdd_3v2_tp>; > + reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>; > + > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&touchscreen_default>; > + pinctrl-1 = <&touchscreen_sleep>; > + }; > + No need for blank line. > +}; > + > +&dsi0 { > + status = "okay"; > + > + vdd-supply = <&vreg_l2a_1p25>; > + vdda-supply = <&vreg_l19a_3p3>; > + vddio-supply = <&vreg_l14a_1p8>; > + > + pinctrl-names = "default", "sleep"; > + pinctrl-0 = <&mdss_dsi_default &mdss_te_default>; > + pinctrl-1 = <&mdss_dsi_sleep &mdss_te_sleep>; > + > + panel: panel@0 { > + compatible = "jdi,fhd-r63452"; > + reg = <0>; > + reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>; > + backlight = <&pmi8994_wled>; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&dsi0_out>; > + }; > + }; > + }; > +}; > + > +&dsi0_out { > + remote-endpoint = <&panel_in>; > +}; > + > +&gpu { > + zap-shader { > + firmware-name = "qcom/msm8996/natrium/a530_zap.mbn"; > + }; > +}; > + > +&mss_pil { > + firmware-name = "qcom/msm8996/natrium/mba.mbn", > + "qcom/msm8996/natrium/modem.mbn"; > +}; > + > +&pmi8994_wled { > + status = "okay"; > + > + qcom,num-strings = <2>; > + qcom,enabled-strings = <0 1>; > + qcom,switching-freq = <600>; > +}; > + > +&q6asmdai { > + dai@0 { > + reg = <0>; > + }; > + > + dai@1 { > + reg = <1>; > + }; > + > + dai@2 { > + reg = <2>; > + }; > +}; > + > +&slpi_pil { > + firmware-name = "qcom/msm8996/natrium/slpi.mbn"; > +}; > + > +&sound { > + compatible = "qcom,apq8096-sndcard"; > + model = "natrium"; > + audio-routing = "RX_BIAS", "MCLK"; > + > + mm1-dai-link { > + link-name = "MultiMedia1"; > + cpu { > + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>; > + }; > + }; > + > + mm2-dai-link { > + link-name = "MultiMedia2"; > + cpu { > + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>; > + }; > + }; > + > + mm3-dai-link { > + link-name = "MultiMedia3"; > + cpu { > + sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>; > + }; > + }; > + > + slim-dai-link { > + link-name = "SLIM Playback"; > + cpu { > + sound-dai = <&q6afedai SLIMBUS_6_RX>; > + }; > + > + platform { > + sound-dai = <&q6routing>; > + }; > + > + codec { > + sound-dai = <&wcd9335 6>; > + }; > + }; > + > + slimcap-dai-link { > + link-name = "SLIM Capture"; > + cpu { > + sound-dai = <&q6afedai SLIMBUS_0_TX>; > + }; > + > + platform { > + sound-dai = <&q6routing>; > + }; > + > + codec { > + sound-dai = <&wcd9335 1>; > + }; > + }; > +}; > + > +&venus { > + firmware-name = "qcom/msm8996/natrium/venus.mbn"; > +}; > + > +&rpm_requests { > + pm8994-regulators { > + vreg_l3a_0p875: l3 { > + regulator-name = "vreg_l3a_0p875"; > + regulator-min-microvolt = <850000>; > + regulator-max-microvolt = <1300000>; > + }; > + vreg_l11a_1p1: l11 { > + regulator-name = "vreg_l11a_1p1"; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1100000>; > + }; > + vreg_l17a_2p8: l17 { > + regulator-name = "vreg_l17a_2p8"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + vreg_l18a_2p8: l18 { > + regulator-name = "vreg_l18a_2p8"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + vreg_l29a_2p8: l29 { > + regulator-name = "vreg_l29a_2p8"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + }; > +}; > + > +&pm8994_gpios { > + gpio-line-names = > + "NC", /* GPIO_1 */ > + "VOL_UP_N", /* GPIO_2 */ > + "SPKR_ID", /* GPIO_3 */ > + "PWM_HAPTICS", /* GPIO_4 */ > + "INFARED_DRV", /* GPIO_5 */ > + "NC", /* GPIO_6 */ > + "KEYPAD_LED_EN_A", /* GPIO_7 */ > + "WL_EN", /* GPIO_8 */ > + "3P3_ENABLE", /* GPIO_9 */ > + "NC", /* GPIO_10 */ > + "NC", /* GPIO_11 */ > + "NC", /* GPIO_12 */ > + "NC", /* GPIO_13 */ > + "NC", /* GPIO_14 */ > + "DIVCLK1_CDC", /* GPIO_15 */ > + "DIVCLK2_HAPTICS", /* GPIO_16 */ > + "NC", /* GPIO_17 */ > + "32KHz_CLK_IN", /* GPIO_18 */ > + "BT_EN", /* GPIO_19 */ > + "PMIC_SLB", /* GPIO_20 */ > + "UIM_BATT_ALARM", /* GPIO_21 */ > + "NC"; /* GPIO_22 */ > +}; > + > +&pm8994_mpps { > + gpio-line-names = > + "NC", /* MPP_1 */ > + "CCI_TIMER1", /* MPP_2 */ > + "PMIC_SLB", /* MPP_3 */ > + "EXT_FET_WLED_PWR_EN_N",/* MPP_4 */ > + "NC", /* MPP_5 */ > + "NC", /* MPP_6 */ > + "NC", /* MPP_7 */ > + "NC"; /* MPP_8 */ > +}; > + > +&pmi8994_gpios { > + gpio-line-names = > + "NC", /* GPIO_1 */ > + "SPKR_PA_EN", /* GPIO_2 */ > + "NC", /* GPIO_3 */ > + "NC", /* GPIO_4 */ > + "NC", /* GPIO_5 */ > + "NC", /* GPIO_6 */ > + "NC", /* GPIO_7 */ > + "NC", /* GPIO_8 */ > + "NC", /* GPIO_9 */ > + "NC"; /* GPIO_10 */ > +}; > + > +&tlmm { > + gpio-line-names = > + "ESE_SPI_MOSI", /* GPIO_0 */ > + "ESE_SPI_MISO", /* GPIO_1 */ > + "NC", /* GPIO_2 */ > + "ESE_SPI_CLK", /* GPIO_3 */ > + "MSM_UART_TX", /* GPIO_4 */ > + "MSM_UART_RX", /* GPIO_5 */ > + "NFC_I2C_SDA", /* GPIO_6 */ > + "NFC_I2C_SCL", /* GPIO_7 */ > + "LCD0_RESET_N", /* GPIO_8 */ > + "NFC_IRQ", /* GPIO_9 */ > + "LCD_TE", /* GPIO_10 */ > + "LCD_ID_DET1", /* GPIO_11 */ > + "NFC_DISABLE", /* GPIO_12 */ > + "CAM_MCLK0", /* GPIO_13 */ > + "CAM_MCLK1", /* GPIO_14 */ > + "CAM_MCLK2", /* GPIO_15 */ > + "ESE_PWR_REQ", /* GPIO_16 */ > + "CCI_I2C_SDA0", /* GPIO_17 */ > + "CCI_I2C_SCL0", /* GPIO_18 */ > + "CCI_I2C_SDA1", /* GPIO_19 */ > + "CCI_I2C_SCL1", /* GPIO_20 */ > + "NFC_DWL_REQ", /* GPIO_21 */ > + "CCI_TIMER1", /* GPIO_22 */ > + "WEBCAM1_RESET_N", /* GPIO_23 */ > + "ESE_IRQ", /* GPIO_24 */ > + "NC", /* GPIO_25 */ > + "WEBCAM1_STANDBY", /* GPIO_26 */ > + "NC", /* GPIO_27 */ > + "NC", /* GPIO_28 */ > + "NC", /* GPIO_29 */ > + "CAM_VDD_1P2_EN_2", /* GPIO_30 */ > + "CAM_RESET_0", /* GPIO_31 */ > + "CAM_RESET_1", /* GPIO_32 */ > + "NC", /* GPIO_33 */ > + "NC", /* GPIO_34 */ > + "PCI_E0_RST_N", /* GPIO_35 */ > + "PCI_E0_CLKREQ_N", /* GPIO_36 */ > + "PCI_E0_WAKE", /* GPIO_37 */ > + "CHARGER_INT", /* GPIO_38 */ > + "CHARGER_RESET", /* GPIO_39 */ > + "NC", /* GPIO_40 */ > + "QCA_UART_TXD", /* GPIO_41 */ > + "QCA_UART_RXD", /* GPIO_42 */ > + "QCA_UART_CTS", /* GPIO_43 */ > + "QCA_UART_RTS", /* GPIO_44 */ > + "MAWC_UART_TX", /* GPIO_45 */ > + "MAWC_UART_RX", /* GPIO_46 */ > + "NC", /* GPIO_47 */ > + "NC", /* GPIO_48 */ > + "NC", /* GPIO_49 */ > + "FP_SPI_RST", /* GPIO_50 */ > + "TYPEC_I2C_SDA", /* GPIO_51 */ > + "TYPEC_I2C_SCL", /* GPIO_52 */ > + "CODEC_INT2_N", /* GPIO_53 */ > + "CODEC_INT1_N", /* GPIO_54 */ > + "APPS_I2C7_SDA", /* GPIO_55 */ > + "APPS_I2C7_SCL", /* GPIO_56 */ > + "FORCE_USB_BOOT", /* GPIO_57 */ > + "NC", /* GPIO_58 */ > + "NC", /* GPIO_59 */ > + "NC", /* GPIO_60 */ > + "NC", /* GPIO_61 */ > + "ESE_RSTN", /* GPIO_62 */ > + "TYPEC_INT", /* GPIO_63 */ > + "CODEC_RESET_N", /* GPIO_64 */ > + "PCM_CLK", /* GPIO_65 */ > + "PCM_SYNC", /* GPIO_66 */ > + "PCM_DIN", /* GPIO_67 */ > + "PCM_DOUT", /* GPIO_68 */ > + "CDC_44K1_CLK", /* GPIO_69 */ > + "SLIMBUS_CLK", /* GPIO_70 */ > + "SLIMBUS_DATA0", /* GPIO_71 */ > + "SLIMBUS_DATA1", /* GPIO_72 */ > + "LDO_5V_IN_EN", /* GPIO_73 */ > + "TYPEC_EN_N", /* GPIO_74 */ > + "NC", /* GPIO_75 */ > + "NC", /* GPIO_76 */ > + "NC", /* GPIO_77 */ > + "NC", /* GPIO_78 */ > + "NC", /* GPIO_79 */ > + "SENSOR_RESET_N", /* GPIO_80 */ > + "FP_SPI_MOSI", /* GPIO_81 */ > + "FP_SPI_MISO", /* GPIO_82 */ > + "FP_SPI_CS_N", /* GPIO_83 */ > + "FP_SPI_CLK", /* GPIO_84 */ > + "NC", /* GPIO_85 */ > + "CAM_VDD_1P2_EN", /* GPIO_86 */ > + "MSM_TS_I2C_SDA", /* GPIO_87 */ > + "MSM_TS_I2C_SCL", /* GPIO_88 */ > + "TS_RESOUT_N", /* GPIO_89 */ > + "ESE_SPI_CS_N", /* GPIO_90 */ > + "NC", /* GPIO_91 */ > + "CAM2_AVDD_EN", /* GPIO_92 */ > + "CAM2_VCM_EN", /* GPIO_93 */ > + "NC", /* GPIO_94 */ > + "NC", /* GPIO_95 */ > + "NC", /* GPIO_96 */ > + "GRFC_0", /* GPIO_97 */ > + "GRFC_1", /* GPIO_98 */ > + "NC", /* GPIO_99 */ > + "GRFC_3", /* GPIO_100 */ > + "GRFC_4", /* GPIO_101 */ > + "GRFC_5", /* GPIO_102 */ > + "NC", /* GPIO_103 */ > + "GRFC_7", /* GPIO_104 */ > + "UIM2_DATA", /* GPIO_105 */ > + "UIM2_CLK", /* GPIO_106 */ > + "UIM2_RESET", /* GPIO_107 */ > + "UIM2_PRESENT", /* GPIO_108 */ > + "UIM1_DATA", /* GPIO_109 */ > + "UIM1_CLK", /* GPIO_110 */ > + "UIM1_RESET", /* GPIO_111 */ > + "UIM1_PRESENT", /* GPIO_112 */ > + "UIM_BATT_ALARM", /* GPIO_113 */ > + "GRFC_8", /* GPIO_114 */ > + "GRFC_9", /* GPIO_115 */ > + "TX_GTR_THRES", /* GPIO_116 */ > + "ACCEL_INT", /* GPIO_117 */ > + "GYRO_INT", /* GPIO_118 */ > + "COMPASS_INT", /* GPIO_119 */ > + "PROXIMITY_INT_N", /* GPIO_120 */ > + "FP_IRQ", /* GPIO_121 */ > + "P_SENSE", /* GPIO_122 */ > + "HALL_INTR2", /* GPIO_123 */ > + "HALL_INTR1", /* GPIO_124 */ > + "TS_INT_N", /* GPIO_125 */ > + "NC", /* GPIO_126 */ > + "GRFC_11", /* GPIO_127 */ > + "NC", /* GPIO_128 */ > + "EXT_GPS_LNA_EN", /* GPIO_129 */ > + "NC", /* GPIO_130 */ > + "LCD_ID_DET2", /* GPIO_131 */ > + "LCD_TE2", /* GPIO_132 */ > + "GRFC_14", /* GPIO_133 */ > + "GSM_TX2_PHASE_D", /* GPIO_134 */ > + "NC", /* GPIO_135 */ > + "GRFC_15", /* GPIO_136 */ > + "RFFE3_DATA", /* GPIO_137 */ > + "RFFE3_CLK", /* GPIO_138 */ > + "NC", /* GPIO_139 */ > + "NC", /* GPIO_140 */ > + "RFFE5_DATA", /* GPIO_141 */ > + "RFFE5_CLK", /* GPIO_142 */ > + "NC", /* GPIO_143 */ > + "COEX_UART_TX", /* GPIO_144 */ > + "COEX_UART_RX", /* GPIO_145 */ > + "RFFE2_DATA", /* GPIO_146 */ > + "RFFE2_CLK", /* GPIO_147 */ > + "RFFE1_DATA", /* GPIO_148 */ > + "RFFE1_CLK"; /* GPIO_149 */ > + > + touchscreen_default: touchscreen_default { No underscores in node names. > + pins = "gpio89", "gpio125"; > + function = "gpio"; > + drive-strength = <10>; > + bias-pull-up; > + }; > + > + touchscreen_sleep: touchscreen_sleep { The same. > + pins = "gpio89", "gpio125"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > +}; Best regards, Krzysztof