1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2021, Raffaele Tranquillini <raffaele.tranquillini@gmail.com> 4 */ 5 6/dts-v1/; 7 8#include "msm8996-xiaomi-common.dtsi" 9#include <dt-bindings/sound/qcom,q6afe.h> 10#include <dt-bindings/sound/qcom,q6asm.h> 11#include <dt-bindings/input/ti-drv260x.h> 12 13/ { 14 model = "Xiaomi Mi 5"; 15 compatible = "xiaomi,gemini", "qcom,msm8996"; 16 qcom,msm-id = <246 0x30001>; 17 qcom,pmic-id = <0x20009 0x2000a 0x00 0x00>; 18 qcom,board-id = <31 0>; 19 20 clocks { 21 divclk2_haptics: divclk2 { 22 compatible = "fixed-clock"; 23 #clock-cells = <0>; 24 clock-frequency = <32768>; 25 clock-output-names = "divclk2"; 26 27 pinctrl-names = "default"; 28 pinctrl-0 = <&divclk2_pin_a>; 29 }; 30 }; 31}; 32 33&adsp_pil { 34 firmware-name = "qcom/msm8996/gemini/adsp.mbn"; 35}; 36 37&blsp2_i2c3 { 38 haptics: drv2604@5a { 39 compatible = "ti,drv2604"; 40 reg = <0x5a>; 41 enable-gpio = <&tlmm 93 0x00>; 42 mode = <DRV260X_LRA_MODE>; 43 library-sel = <DRV260X_LIB_LRA>; 44 pinctrl-names = "default","sleep"; 45 pinctrl-0 = <&vibrator_default>; 46 pinctrl-1 = <&vibrator_sleep>; 47 }; 48 49 lp5562@30 { 50 compatible = "ti,lp5562"; 51 reg = <0x30>; 52 #address-cells = <1>; 53 #size-cells = <0>; 54 enable-gpio = <&pm8994_gpios 7 1>; 55 clock-mode = /bits/8 <2>; 56 label = "button-backlight"; 57 58 led@0 { 59 reg = <0>; 60 chan-name = "button-backlight"; 61 led-cur = /bits/ 8 <0x32>; 62 max-cur = /bits/ 8 <0xC8>; 63 }; 64 65 led@1 { 66 reg = <0>; 67 chan-name = "button-backlight1"; 68 led-cur = /bits/ 8 <0x32>; 69 max-cur = /bits/ 8 <0xC8>; 70 }; 71 }; 72}; 73 74&blsp2_i2c6 { 75 synaptics@20 { 76 compatible = "syna,rmi4-i2c"; 77 reg = <0x20>; 78 #address-cells = <1>; 79 #size-cells = <0>; 80 interrupt-parent = <&tlmm>; 81 interrupts = <125 IRQ_TYPE_LEVEL_LOW>; 82 vdda-supply = <&vreg_l6a_1p8>; 83 vdd-supply = <&vdd_3v2_tp>; 84 reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>; 85 86 pinctrl-names = "default", "sleep"; 87 pinctrl-0 = <&touchscreen_default>; 88 pinctrl-1 = <&touchscreen_sleep>; 89 }; 90 91}; 92 93&gpu { 94 zap-shader { 95 firmware-name = "qcom/msm8996/gemini/a530_zap.mbn"; 96 }; 97}; 98 99&q6asmdai { 100 dai@0 { 101 reg = <0>; 102 }; 103 104 dai@1 { 105 reg = <1>; 106 }; 107 108 dai@2 { 109 reg = <2>; 110 }; 111}; 112 113&sound { 114 compatible = "qcom,apq8096-sndcard"; 115 model = "gemini"; 116 audio-routing = "RX_BIAS", "MCLK", 117 "MM_DL1", "MultiMedia1 Playback", 118 "MM_DL2", "MultiMedia2 Playback", 119 "MultiMedia3 Capture", "MM_UL3"; 120 121 mm1-dai-link { 122 link-name = "MultiMedia1"; 123 cpu { 124 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>; 125 }; 126 }; 127 128 mm2-dai-link { 129 link-name = "MultiMedia2"; 130 cpu { 131 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>; 132 }; 133 }; 134 135 mm3-dai-link { 136 link-name = "MultiMedia3"; 137 cpu { 138 sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>; 139 }; 140 }; 141 142 slim-dai-link { 143 link-name = "SLIM Playback"; 144 cpu { 145 sound-dai = <&q6afedai SLIMBUS_6_RX>; 146 }; 147 148 platform { 149 sound-dai = <&q6routing>; 150 }; 151 152 codec { 153 sound-dai = <&wcd9335 6>; 154 }; 155 }; 156 157 slimcap-dai-link { 158 link-name = "SLIM Capture"; 159 cpu { 160 sound-dai = <&q6afedai SLIMBUS_0_TX>; 161 }; 162 163 platform { 164 sound-dai = <&q6routing>; 165 }; 166 167 codec { 168 sound-dai = <&wcd9335 1>; 169 }; 170 }; 171}; 172 173&venus { 174 firmware-name = "qcom/msm8996/gemini/venus.mbn"; 175}; 176 177&rpm_requests { 178 pm8994-regulators { 179 vreg_l17a_2p8: l17 { 180 regulator-name = "vreg_l17a_2p8"; 181 regulator-min-microvolt = <2500000>; 182 regulator-max-microvolt = <2500000>; 183 }; 184 vreg_l29a_2p7: l29 { 185 regulator-name = "vreg_l29a_2p7"; 186 regulator-min-microvolt = <2800000>; 187 regulator-max-microvolt = <2800000>; 188 }; 189 }; 190}; 191 192&pm8994_gpios { 193 gpio-line-names = 194 "NC", /* GPIO_1 */ 195 "VOL_UP_N", /* GPIO_2 */ 196 "SPKR_ID", /* GPIO_3 */ 197 "PWM_HAPTICS", /* GPIO_4 */ 198 "INFARED_DRV", /* GPIO_5 */ 199 "NC", /* GPIO_6 */ 200 "KEYPAD_LED_EN", /* GPIO_7 */ 201 "WL_EN", /* GPIO_8 */ 202 "3P3_ENABLE", /* GPIO_9 */ 203 "FP_ID", /* GPIO_10 */ 204 "NC", /* GPIO_11 */ 205 "NC", /* GPIO_12 */ 206 "NC", /* GPIO_13 */ 207 "NC", /* GPIO_14 */ 208 "DIVCLK1_CDC", /* GPIO_15 */ 209 "DIVCLK2_HAPTICS", /* GPIO_16 */ 210 "NC", /* GPIO_17 */ 211 "32KHz_CLK_IN", /* GPIO_18 */ 212 "BT_EN", /* GPIO_19 */ 213 "PMIC_SLB", /* GPIO_20 */ 214 "UIM_BATT_ALARM", /* GPIO_21 */ 215 "NC"; /* GPIO_22 */ 216 217 divclk2_pin_a: divclk2 { 218 pins = "gpio16"; 219 function = PMIC_GPIO_FUNC_FUNC2; 220 bias-disable; 221 power-source = <PM8994_GPIO_S4>; 222 }; 223}; 224 225&pm8994_mpps { 226 gpio-line-names = 227 "NC", /* MPP_1 */ 228 "CCI_TIMER1", /* MPP_2 */ 229 "PMIC_SLB", /* MPP_3 */ 230 "EXT_FET_WLED_PWR_EN_N",/* MPP_4 */ 231 "NC", /* MPP_5 */ 232 "NC", /* MPP_6 */ 233 "NC", /* MPP_7 */ 234 "NC"; /* MPP_8 */ 235}; 236 237&pmi8994_gpios { 238 gpio-line-names = 239 "NC", /* GPIO_1 */ 240 "SPKR_PA_RST", /* GPIO_2 */ 241 "NC", /* GPIO_3 */ 242 "NC", /* GPIO_4 */ 243 "NC", /* GPIO_5 */ 244 "NC", /* GPIO_6 */ 245 "NC", /* GPIO_7 */ 246 "NC", /* GPIO_8 */ 247 "NC", /* GPIO_9 */ 248 "NC"; /* GPIO_10 */ 249}; 250 251&tlmm { 252 gpio-line-names = 253 "ESE_SPI_MOSI", /* GPIO_0 */ 254 "ESE_SPI_MISO", /* GPIO_1 */ 255 "ERR_INT_N", /* GPIO_2 */ 256 "ESE_SPI_CLK", /* GPIO_3 */ 257 "MSM_UART_TX", /* GPIO_4 */ 258 "MSM_UART_RX", /* GPIO_5 */ 259 "NFC_I2C_SDA", /* GPIO_6 */ 260 "NFC_I2C_SCL", /* GPIO_7 */ 261 "LCD0_RESET_N", /* GPIO_8 */ 262 "NFC_IRQ", /* GPIO_9 */ 263 "LCD_TE", /* GPIO_10 */ 264 "LCD_ID_DET1", /* GPIO_11 */ 265 "NFC_DISABLE", /* GPIO_12 */ 266 "CAM_MCLK0", /* GPIO_13 */ 267 "NC", /* GPIO_14 */ 268 "CAM_MCLK2", /* GPIO_15 */ 269 "ESE_PWR_REQ", /* GPIO_16 */ 270 "CCI_I2C_SDA0", /* GPIO_17 */ 271 "CCI_I2C_SCL0", /* GPIO_18 */ 272 "CCI_I2C_SDA1", /* GPIO_19 */ 273 "CCI_I2C_SCL1", /* GPIO_20 */ 274 "NFC_DWL_REQ", /* GPIO_21 */ 275 "CCI_TIMER1", /* GPIO_22 */ 276 "WEBCAM1_RESET_N", /* GPIO_23 */ 277 "ESE_IRQ", /* GPIO_24 */ 278 "NC", /* GPIO_25 */ 279 "WEBCAM1_STANDBY", /* GPIO_26 */ 280 "NC", /* GPIO_27 */ 281 "NC", /* GPIO_28 */ 282 "NC", /* GPIO_29 */ 283 "CAM1_RST_N", /* GPIO_30 */ 284 "NC", /* GPIO_31 */ 285 "NC", /* GPIO_32 */ 286 "NC", /* GPIO_33 */ 287 "FP_DOME_SW", /* GPIO_34 */ 288 "PCI_E0_RST_N", /* GPIO_35 */ 289 "PCI_E0_CLKREQ_N", /* GPIO_36 */ 290 "PCI_E0_WAKE", /* GPIO_37 */ 291 "FM_INT_N", /* GPIO_38 */ 292 "FM_RESET_N", /* GPIO_39 */ 293 "NC", /* GPIO_40 */ 294 "QCA_UART_TXD", /* GPIO_41 */ 295 "QCA_UART_RXD", /* GPIO_42 */ 296 "QCA_UART_CTS", /* GPIO_43 */ 297 "QCA_UART_RTS", /* GPIO_44 */ 298 "MAWC_UART_TX", /* GPIO_45 */ 299 "MAWC_UART_RX", /* GPIO_46 */ 300 "NC", /* GPIO_47 */ 301 "NC", /* GPIO_48 */ 302 "AUDIO_SWITCH_EN", /* GPIO_49 */ 303 "FP_SPI_RST", /* GPIO_50 */ 304 "TYPEC_I2C_SDA", /* GPIO_51 */ 305 "TYPEC_I2C_SCL", /* GPIO_52 */ 306 "CODEC_INT2_N", /* GPIO_53 */ 307 "CODEC_INT1_N", /* GPIO_54 */ 308 "APPS_I2C7_SDA", /* GPIO_55 */ 309 "APPS_I2C7_SCL", /* GPIO_56 */ 310 "FORCE_USB_BOOT", /* GPIO_57 */ 311 "SPKR_I2S_BCK", /* GPIO_58 */ 312 "SPKR_I2S_WS", /* GPIO_59 */ 313 "SPKR_I2S_DOUT", /* GPIO_60 */ 314 "SPKR_I2S_DIN", /* GPIO_61 */ 315 "ESE_RSTN", /* GPIO_62 */ 316 "TYPEC_INT", /* GPIO_63 */ 317 "CODEC_RESET_N", /* GPIO_64 */ 318 "PCM_CLK", /* GPIO_65 */ 319 "PCM_SYNC", /* GPIO_66 */ 320 "PCM_DIN", /* GPIO_67 */ 321 "PCM_DOUT", /* GPIO_68 */ 322 "HIFI_CLK", /* GPIO_69 */ 323 "SLIMBUS_CLK", /* GPIO_70 */ 324 "SLIMBUS_DATA0", /* GPIO_71 */ 325 "SLIMBUS_DATA1", /* GPIO_72 */ 326 "LDO_5V_IN_EN", /* GPIO_73 */ 327 "NC", /* GPIO_74 */ 328 "FM_I2S_CLK", /* GPIO_75 */ 329 "FM_I2S_SYNC", /* GPIO_76 */ 330 "FM_I2S_DATA", /* GPIO_77 */ 331 "FM_STATUS", /* GPIO_78 */ 332 "NC", /* GPIO_79 */ 333 "SENSOR_RESET_N", /* GPIO_80 */ 334 "FP_SPI_MOSI", /* GPIO_81 */ 335 "FP_SPI_MISO", /* GPIO_82 */ 336 "FP_SPI_CS_N", /* GPIO_83 */ 337 "FP_SPI_CLK", /* GPIO_84 */ 338 "NC", /* GPIO_85 */ 339 "CAM_VDD_1P05_EN", /* GPIO_86 */ 340 "MSM_TS_I2C_SDA", /* GPIO_87 */ 341 "MSM_TS_I2C_SCL", /* GPIO_88 */ 342 "TS_RESOUT_N", /* GPIO_89 */ 343 "ESE_SPI_CS_N", /* GPIO_90 */ 344 "NC", /* GPIO_91 */ 345 "NC", /* GPIO_92 */ 346 "HAPTICS_EN", /* GPIO_93 */ 347 "NC", /* GPIO_94 */ 348 "NC", /* GPIO_95 */ 349 "NC", /* GPIO_96 */ 350 "NC", /* GPIO_97 */ 351 "GRFC_1", /* GPIO_98 */ 352 "NC", /* GPIO_99 */ 353 "GRFC_3", /* GPIO_100 */ 354 "GRFC_4", /* GPIO_101 */ 355 "NC", /* GPIO_102 */ 356 "NC", /* GPIO_103 */ 357 "GRFC_7", /* GPIO_104 */ 358 "UIM2_DATA", /* GPIO_105 */ 359 "UIM2_CLK", /* GPIO_106 */ 360 "UIM2_RESET", /* GPIO_107 */ 361 "UIM2_PRESENT", /* GPIO_108 */ 362 "UIM1_DATA", /* GPIO_109 */ 363 "UIM1_CLK", /* GPIO_110 */ 364 "UIM1_RESET", /* GPIO_111 */ 365 "UIM1_PRESENT", /* GPIO_112 */ 366 "UIM_BATT_ALARM", /* GPIO_113 */ 367 "GRFC_8", /* GPIO_114 */ 368 "GRFC_9", /* GPIO_115 */ 369 "TX_GTR_THRES", /* GPIO_116 */ 370 "ACCEL_INT", /* GPIO_117 */ 371 "GYRO_INT", /* GPIO_118 */ 372 "COMPASS_INT", /* GPIO_119 */ 373 "PROXIMITY_INT_N", /* GPIO_120 */ 374 "FP_IRQ", /* GPIO_121 */ 375 "NC", /* GPIO_122 */ 376 "HALL_INTR2", /* GPIO_123 */ 377 "HALL_INTR1", /* GPIO_124 */ 378 "TS_INT_N", /* GPIO_125 */ 379 "NC", /* GPIO_126 */ 380 "GRFC_11", /* GPIO_127 */ 381 "NC", /* GPIO_128 */ 382 "EXT_GPS_LNA_EN", /* GPIO_129 */ 383 "NC", /* GPIO_130 */ 384 "NC", /* GPIO_131 */ 385 "NC", /* GPIO_132 */ 386 "GRFC_14", /* GPIO_133 */ 387 "GSM_TX2_PHASE_D", /* GPIO_134 */ 388 "NC", /* GPIO_135 */ 389 "NC", /* GPIO_136 */ 390 "RFFE3_DATA", /* GPIO_137 */ 391 "RFFE3_CLK", /* GPIO_138 */ 392 "NC", /* GPIO_139 */ 393 "NC", /* GPIO_140 */ 394 "RFFE5_DATA", /* GPIO_141 */ 395 "RFFE5_CLK", /* GPIO_142 */ 396 "NC", /* GPIO_143 */ 397 "COEX_UART_TX", /* GPIO_144 */ 398 "COEX_UART_RX", /* GPIO_145 */ 399 "RFFE2_DATA", /* GPIO_146 */ 400 "RFFE2_CLK", /* GPIO_147 */ 401 "RFFE1_DATA", /* GPIO_148 */ 402 "RFFE1_CLK"; /* GPIO_149 */ 403 404 touchscreen_default: touchscreen_default { 405 pins = "gpio89", "gpio125"; 406 function = "gpio"; 407 drive-strength = <10>; 408 bias-pull-up; 409 }; 410 411 touchscreen_sleep: touchscreen_sleep { 412 pins = "gpio89", "gpio125"; 413 function = "gpio"; 414 drive-strength = <2>; 415 bias-disable; 416 }; 417 418 vibrator_default: vibrator_default { 419 pins = "gpio93"; 420 function = "gpio"; 421 drive-strength = <8>; 422 bias-pull-up; 423 }; 424 425 vibrator_sleep: vibrator_sleep { 426 pins = "gpio93"; 427 function = "gpio"; 428 drive-strength = <2>; 429 bias-disable; 430 }; 431}; 432