0001 // SPDX-License-Identifier: BSD-3-Clause
0002 /*
0003 * Copyright (c) 2021, Raffaele Tranquillini <raffaele.tranquillini@gmail.com>
0004 */
0005
0006 /dts-v1/;
0007
0008 #include "msm8996-xiaomi-common.dtsi"
0009 #include <dt-bindings/sound/qcom,q6afe.h>
0010 #include <dt-bindings/sound/qcom,q6asm.h>
0011 #include <dt-bindings/input/ti-drv260x.h>
0012
0013 / {
0014 model = "Xiaomi Mi 5";
0015 compatible = "xiaomi,gemini", "qcom,msm8996";
0016 chassis-type = "handset";
0017 qcom,msm-id = <246 0x30001>;
0018 qcom,pmic-id = <0x20009 0x2000a 0x00 0x00>;
0019 qcom,board-id = <31 0>;
0020
0021 clocks {
0022 divclk2_haptics: divclk2 {
0023 compatible = "fixed-clock";
0024 #clock-cells = <0>;
0025 clock-frequency = <32768>;
0026 clock-output-names = "divclk2";
0027
0028 pinctrl-names = "default";
0029 pinctrl-0 = <&divclk2_pin_a>;
0030 };
0031 };
0032 };
0033
0034 &adsp_pil {
0035 firmware-name = "qcom/msm8996/gemini/adsp.mbn";
0036 };
0037
0038 &blsp2_i2c3 {
0039 haptics: drv2604@5a {
0040 compatible = "ti,drv2604";
0041 reg = <0x5a>;
0042 enable-gpio = <&tlmm 93 0x00>;
0043 mode = <DRV260X_LRA_MODE>;
0044 library-sel = <DRV260X_LIB_LRA>;
0045 pinctrl-names = "default","sleep";
0046 pinctrl-0 = <&vibrator_default>;
0047 pinctrl-1 = <&vibrator_sleep>;
0048 };
0049
0050 lp5562@30 {
0051 compatible = "ti,lp5562";
0052 reg = <0x30>;
0053 #address-cells = <1>;
0054 #size-cells = <0>;
0055 enable-gpio = <&pm8994_gpios 7 1>;
0056 clock-mode = /bits/8 <2>;
0057 label = "button-backlight";
0058
0059 led@0 {
0060 reg = <0>;
0061 chan-name = "button-backlight";
0062 led-cur = /bits/ 8 <0x32>;
0063 max-cur = /bits/ 8 <0xC8>;
0064 };
0065
0066 led@1 {
0067 reg = <0>;
0068 chan-name = "button-backlight1";
0069 led-cur = /bits/ 8 <0x32>;
0070 max-cur = /bits/ 8 <0xC8>;
0071 };
0072 };
0073 };
0074
0075 &blsp2_i2c6 {
0076 synaptics@20 {
0077 compatible = "syna,rmi4-i2c";
0078 reg = <0x20>;
0079 #address-cells = <1>;
0080 #size-cells = <0>;
0081 interrupt-parent = <&tlmm>;
0082 interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
0083 vdda-supply = <&vreg_l6a_1p8>;
0084 vdd-supply = <&vdd_3v2_tp>;
0085 reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
0086
0087 pinctrl-names = "default", "sleep";
0088 pinctrl-0 = <&touchscreen_default>;
0089 pinctrl-1 = <&touchscreen_sleep>;
0090 };
0091
0092 };
0093
0094 &dsi0 {
0095 status = "okay";
0096
0097 vdd-supply = <&vreg_l2a_1p25>;
0098 vdda-supply = <&vreg_l19a_3p3>;
0099 vddio-supply = <&vreg_l14a_1p8>;
0100
0101 pinctrl-names = "default", "sleep";
0102 pinctrl-0 = <&mdss_dsi_default &mdss_te_default>;
0103 pinctrl-1 = <&mdss_dsi_sleep &mdss_te_sleep>;
0104
0105 panel: panel@0 {
0106 compatible = "jdi,fhd-r63452";
0107 reg = <0>;
0108 reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>;
0109 backlight = <&pmi8994_wled>;
0110
0111 port {
0112 panel_in: endpoint {
0113 remote-endpoint = <&dsi0_out>;
0114 };
0115 };
0116 };
0117 };
0118
0119 &dsi0_out {
0120 remote-endpoint = <&panel_in>;
0121 };
0122
0123 &gpu {
0124 zap-shader {
0125 firmware-name = "qcom/msm8996/gemini/a530_zap.mbn";
0126 };
0127 };
0128
0129 &pmi8994_wled {
0130 status = "okay";
0131 };
0132
0133 &mss_pil {
0134 firmware-name = "qcom/msm8996/gemini/mba.mbn",
0135 "qcom/msm8996/gemini/modem.mbn";
0136 };
0137
0138 &q6asmdai {
0139 dai@0 {
0140 reg = <0>;
0141 };
0142
0143 dai@1 {
0144 reg = <1>;
0145 };
0146
0147 dai@2 {
0148 reg = <2>;
0149 };
0150 };
0151
0152 &slpi_pil {
0153 firmware-name = "qcom/msm8996/gemini/slpi.mbn";
0154 };
0155
0156 &sound {
0157 compatible = "qcom,apq8096-sndcard";
0158 model = "gemini";
0159 audio-routing = "RX_BIAS", "MCLK",
0160 "MM_DL1", "MultiMedia1 Playback",
0161 "MM_DL2", "MultiMedia2 Playback",
0162 "MultiMedia3 Capture", "MM_UL3";
0163
0164 mm1-dai-link {
0165 link-name = "MultiMedia1";
0166 cpu {
0167 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
0168 };
0169 };
0170
0171 mm2-dai-link {
0172 link-name = "MultiMedia2";
0173 cpu {
0174 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
0175 };
0176 };
0177
0178 mm3-dai-link {
0179 link-name = "MultiMedia3";
0180 cpu {
0181 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
0182 };
0183 };
0184
0185 slim-dai-link {
0186 link-name = "SLIM Playback";
0187 cpu {
0188 sound-dai = <&q6afedai SLIMBUS_6_RX>;
0189 };
0190
0191 platform {
0192 sound-dai = <&q6routing>;
0193 };
0194
0195 codec {
0196 sound-dai = <&wcd9335 6>;
0197 };
0198 };
0199
0200 slimcap-dai-link {
0201 link-name = "SLIM Capture";
0202 cpu {
0203 sound-dai = <&q6afedai SLIMBUS_0_TX>;
0204 };
0205
0206 platform {
0207 sound-dai = <&q6routing>;
0208 };
0209
0210 codec {
0211 sound-dai = <&wcd9335 1>;
0212 };
0213 };
0214 };
0215
0216 &venus {
0217 firmware-name = "qcom/msm8996/gemini/venus.mbn";
0218 };
0219
0220 &rpm_requests {
0221 pm8994-regulators {
0222 vreg_l17a_2p8: l17 {
0223 regulator-name = "vreg_l17a_2p8";
0224 regulator-min-microvolt = <2500000>;
0225 regulator-max-microvolt = <2500000>;
0226 };
0227 vreg_l29a_2p7: l29 {
0228 regulator-name = "vreg_l29a_2p7";
0229 regulator-min-microvolt = <2800000>;
0230 regulator-max-microvolt = <2800000>;
0231 };
0232 };
0233 };
0234
0235 &pm8994_gpios {
0236 gpio-line-names =
0237 "NC", /* GPIO_1 */
0238 "VOL_UP_N", /* GPIO_2 */
0239 "SPKR_ID", /* GPIO_3 */
0240 "PWM_HAPTICS", /* GPIO_4 */
0241 "INFARED_DRV", /* GPIO_5 */
0242 "NC", /* GPIO_6 */
0243 "KEYPAD_LED_EN", /* GPIO_7 */
0244 "WL_EN", /* GPIO_8 */
0245 "3P3_ENABLE", /* GPIO_9 */
0246 "FP_ID", /* GPIO_10 */
0247 "NC", /* GPIO_11 */
0248 "NC", /* GPIO_12 */
0249 "NC", /* GPIO_13 */
0250 "NC", /* GPIO_14 */
0251 "DIVCLK1_CDC", /* GPIO_15 */
0252 "DIVCLK2_HAPTICS", /* GPIO_16 */
0253 "NC", /* GPIO_17 */
0254 "32KHz_CLK_IN", /* GPIO_18 */
0255 "BT_EN", /* GPIO_19 */
0256 "PMIC_SLB", /* GPIO_20 */
0257 "UIM_BATT_ALARM", /* GPIO_21 */
0258 "NC"; /* GPIO_22 */
0259
0260 divclk2_pin_a: divclk2-state {
0261 pins = "gpio16";
0262 function = PMIC_GPIO_FUNC_FUNC2;
0263 bias-disable;
0264 power-source = <PM8994_GPIO_S4>;
0265 };
0266 };
0267
0268 &pm8994_mpps {
0269 gpio-line-names =
0270 "NC", /* MPP_1 */
0271 "CCI_TIMER1", /* MPP_2 */
0272 "PMIC_SLB", /* MPP_3 */
0273 "EXT_FET_WLED_PWR_EN_N",/* MPP_4 */
0274 "NC", /* MPP_5 */
0275 "NC", /* MPP_6 */
0276 "NC", /* MPP_7 */
0277 "NC"; /* MPP_8 */
0278 };
0279
0280 &pmi8994_gpios {
0281 gpio-line-names =
0282 "NC", /* GPIO_1 */
0283 "SPKR_PA_RST", /* GPIO_2 */
0284 "NC", /* GPIO_3 */
0285 "NC", /* GPIO_4 */
0286 "NC", /* GPIO_5 */
0287 "NC", /* GPIO_6 */
0288 "NC", /* GPIO_7 */
0289 "NC", /* GPIO_8 */
0290 "NC", /* GPIO_9 */
0291 "NC"; /* GPIO_10 */
0292 };
0293
0294 &tlmm {
0295 gpio-line-names =
0296 "ESE_SPI_MOSI", /* GPIO_0 */
0297 "ESE_SPI_MISO", /* GPIO_1 */
0298 "ERR_INT_N", /* GPIO_2 */
0299 "ESE_SPI_CLK", /* GPIO_3 */
0300 "MSM_UART_TX", /* GPIO_4 */
0301 "MSM_UART_RX", /* GPIO_5 */
0302 "NFC_I2C_SDA", /* GPIO_6 */
0303 "NFC_I2C_SCL", /* GPIO_7 */
0304 "LCD0_RESET_N", /* GPIO_8 */
0305 "NFC_IRQ", /* GPIO_9 */
0306 "LCD_TE", /* GPIO_10 */
0307 "LCD_ID_DET1", /* GPIO_11 */
0308 "NFC_DISABLE", /* GPIO_12 */
0309 "CAM_MCLK0", /* GPIO_13 */
0310 "NC", /* GPIO_14 */
0311 "CAM_MCLK2", /* GPIO_15 */
0312 "ESE_PWR_REQ", /* GPIO_16 */
0313 "CCI_I2C_SDA0", /* GPIO_17 */
0314 "CCI_I2C_SCL0", /* GPIO_18 */
0315 "CCI_I2C_SDA1", /* GPIO_19 */
0316 "CCI_I2C_SCL1", /* GPIO_20 */
0317 "NFC_DWL_REQ", /* GPIO_21 */
0318 "CCI_TIMER1", /* GPIO_22 */
0319 "WEBCAM1_RESET_N", /* GPIO_23 */
0320 "ESE_IRQ", /* GPIO_24 */
0321 "NC", /* GPIO_25 */
0322 "WEBCAM1_STANDBY", /* GPIO_26 */
0323 "NC", /* GPIO_27 */
0324 "NC", /* GPIO_28 */
0325 "NC", /* GPIO_29 */
0326 "CAM1_RST_N", /* GPIO_30 */
0327 "NC", /* GPIO_31 */
0328 "NC", /* GPIO_32 */
0329 "NC", /* GPIO_33 */
0330 "FP_DOME_SW", /* GPIO_34 */
0331 "PCI_E0_RST_N", /* GPIO_35 */
0332 "PCI_E0_CLKREQ_N", /* GPIO_36 */
0333 "PCI_E0_WAKE", /* GPIO_37 */
0334 "FM_INT_N", /* GPIO_38 */
0335 "FM_RESET_N", /* GPIO_39 */
0336 "NC", /* GPIO_40 */
0337 "QCA_UART_TXD", /* GPIO_41 */
0338 "QCA_UART_RXD", /* GPIO_42 */
0339 "QCA_UART_CTS", /* GPIO_43 */
0340 "QCA_UART_RTS", /* GPIO_44 */
0341 "MAWC_UART_TX", /* GPIO_45 */
0342 "MAWC_UART_RX", /* GPIO_46 */
0343 "NC", /* GPIO_47 */
0344 "NC", /* GPIO_48 */
0345 "AUDIO_SWITCH_EN", /* GPIO_49 */
0346 "FP_SPI_RST", /* GPIO_50 */
0347 "TYPEC_I2C_SDA", /* GPIO_51 */
0348 "TYPEC_I2C_SCL", /* GPIO_52 */
0349 "CODEC_INT2_N", /* GPIO_53 */
0350 "CODEC_INT1_N", /* GPIO_54 */
0351 "APPS_I2C7_SDA", /* GPIO_55 */
0352 "APPS_I2C7_SCL", /* GPIO_56 */
0353 "FORCE_USB_BOOT", /* GPIO_57 */
0354 "SPKR_I2S_BCK", /* GPIO_58 */
0355 "SPKR_I2S_WS", /* GPIO_59 */
0356 "SPKR_I2S_DOUT", /* GPIO_60 */
0357 "SPKR_I2S_DIN", /* GPIO_61 */
0358 "ESE_RSTN", /* GPIO_62 */
0359 "TYPEC_INT", /* GPIO_63 */
0360 "CODEC_RESET_N", /* GPIO_64 */
0361 "PCM_CLK", /* GPIO_65 */
0362 "PCM_SYNC", /* GPIO_66 */
0363 "PCM_DIN", /* GPIO_67 */
0364 "PCM_DOUT", /* GPIO_68 */
0365 "HIFI_CLK", /* GPIO_69 */
0366 "SLIMBUS_CLK", /* GPIO_70 */
0367 "SLIMBUS_DATA0", /* GPIO_71 */
0368 "SLIMBUS_DATA1", /* GPIO_72 */
0369 "LDO_5V_IN_EN", /* GPIO_73 */
0370 "NC", /* GPIO_74 */
0371 "FM_I2S_CLK", /* GPIO_75 */
0372 "FM_I2S_SYNC", /* GPIO_76 */
0373 "FM_I2S_DATA", /* GPIO_77 */
0374 "FM_STATUS", /* GPIO_78 */
0375 "NC", /* GPIO_79 */
0376 "SENSOR_RESET_N", /* GPIO_80 */
0377 "FP_SPI_MOSI", /* GPIO_81 */
0378 "FP_SPI_MISO", /* GPIO_82 */
0379 "FP_SPI_CS_N", /* GPIO_83 */
0380 "FP_SPI_CLK", /* GPIO_84 */
0381 "NC", /* GPIO_85 */
0382 "CAM_VDD_1P05_EN", /* GPIO_86 */
0383 "MSM_TS_I2C_SDA", /* GPIO_87 */
0384 "MSM_TS_I2C_SCL", /* GPIO_88 */
0385 "TS_RESOUT_N", /* GPIO_89 */
0386 "ESE_SPI_CS_N", /* GPIO_90 */
0387 "NC", /* GPIO_91 */
0388 "NC", /* GPIO_92 */
0389 "HAPTICS_EN", /* GPIO_93 */
0390 "NC", /* GPIO_94 */
0391 "NC", /* GPIO_95 */
0392 "NC", /* GPIO_96 */
0393 "NC", /* GPIO_97 */
0394 "GRFC_1", /* GPIO_98 */
0395 "NC", /* GPIO_99 */
0396 "GRFC_3", /* GPIO_100 */
0397 "GRFC_4", /* GPIO_101 */
0398 "NC", /* GPIO_102 */
0399 "NC", /* GPIO_103 */
0400 "GRFC_7", /* GPIO_104 */
0401 "UIM2_DATA", /* GPIO_105 */
0402 "UIM2_CLK", /* GPIO_106 */
0403 "UIM2_RESET", /* GPIO_107 */
0404 "UIM2_PRESENT", /* GPIO_108 */
0405 "UIM1_DATA", /* GPIO_109 */
0406 "UIM1_CLK", /* GPIO_110 */
0407 "UIM1_RESET", /* GPIO_111 */
0408 "UIM1_PRESENT", /* GPIO_112 */
0409 "UIM_BATT_ALARM", /* GPIO_113 */
0410 "GRFC_8", /* GPIO_114 */
0411 "GRFC_9", /* GPIO_115 */
0412 "TX_GTR_THRES", /* GPIO_116 */
0413 "ACCEL_INT", /* GPIO_117 */
0414 "GYRO_INT", /* GPIO_118 */
0415 "COMPASS_INT", /* GPIO_119 */
0416 "PROXIMITY_INT_N", /* GPIO_120 */
0417 "FP_IRQ", /* GPIO_121 */
0418 "NC", /* GPIO_122 */
0419 "HALL_INTR2", /* GPIO_123 */
0420 "HALL_INTR1", /* GPIO_124 */
0421 "TS_INT_N", /* GPIO_125 */
0422 "NC", /* GPIO_126 */
0423 "GRFC_11", /* GPIO_127 */
0424 "NC", /* GPIO_128 */
0425 "EXT_GPS_LNA_EN", /* GPIO_129 */
0426 "NC", /* GPIO_130 */
0427 "NC", /* GPIO_131 */
0428 "NC", /* GPIO_132 */
0429 "GRFC_14", /* GPIO_133 */
0430 "GSM_TX2_PHASE_D", /* GPIO_134 */
0431 "NC", /* GPIO_135 */
0432 "NC", /* GPIO_136 */
0433 "RFFE3_DATA", /* GPIO_137 */
0434 "RFFE3_CLK", /* GPIO_138 */
0435 "NC", /* GPIO_139 */
0436 "NC", /* GPIO_140 */
0437 "RFFE5_DATA", /* GPIO_141 */
0438 "RFFE5_CLK", /* GPIO_142 */
0439 "NC", /* GPIO_143 */
0440 "COEX_UART_TX", /* GPIO_144 */
0441 "COEX_UART_RX", /* GPIO_145 */
0442 "RFFE2_DATA", /* GPIO_146 */
0443 "RFFE2_CLK", /* GPIO_147 */
0444 "RFFE1_DATA", /* GPIO_148 */
0445 "RFFE1_CLK"; /* GPIO_149 */
0446
0447 touchscreen_default: touchscreen_default {
0448 pins = "gpio89", "gpio125";
0449 function = "gpio";
0450 drive-strength = <10>;
0451 bias-pull-up;
0452 };
0453
0454 touchscreen_sleep: touchscreen_sleep {
0455 pins = "gpio89", "gpio125";
0456 function = "gpio";
0457 drive-strength = <2>;
0458 bias-disable;
0459 };
0460
0461 vibrator_default: vibrator_default {
0462 pins = "gpio93";
0463 function = "gpio";
0464 drive-strength = <8>;
0465 bias-pull-up;
0466 };
0467
0468 vibrator_sleep: vibrator_sleep {
0469 pins = "gpio93";
0470 function = "gpio";
0471 drive-strength = <2>;
0472 bias-disable;
0473 };
0474 };