1// SPDX-License-Identifier: GPL-2.0-only 2// Copyright (C) 2021 Stephan Gerhold 3 4/dts-v1/; 5 6#include "msm8916-pm8916.dtsi" 7#include <dt-bindings/gpio/gpio.h> 8#include <dt-bindings/input/input.h> 9#include <dt-bindings/interrupt-controller/irq.h> 10#include <dt-bindings/leds/common.h> 11#include <dt-bindings/sound/apq8016-lpass.h> 12 13/* 14 * Note: The original firmware from Huawei can only boot 32-bit kernels. 15 * To boot this device tree using arm64 it is necessary to flash 64-bit TZ/HYP 16 * firmware (e.g. taken from the DragonBoard 410c). 17 * See https://wiki.postmarketos.org/wiki/Huawei_Ascend_G7_(huawei-g7) 18 * for suggested installation instructions. 19 */ 20 21/ { 22 model = "Huawei Ascend G7"; 23 compatible = "huawei,g7", "qcom,msm8916"; 24 chassis-type = "handset"; 25 26 aliases { 27 serial0 = &blsp1_uart2; 28 }; 29 30 chosen { 31 stdout-path = "serial0"; 32 }; 33 34 gpio-keys { 35 compatible = "gpio-keys"; 36 37 pinctrl-names = "default"; 38 pinctrl-0 = <&gpio_keys_default>; 39 40 label = "GPIO Buttons"; 41 42 volume-up { 43 label = "Volume Up"; 44 gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>; 45 linux,code = <KEY_VOLUMEUP>; 46 }; 47 }; 48 49 leds { 50 compatible = "gpio-leds"; 51 52 pinctrl-names = "default"; 53 pinctrl-0 = <&gpio_leds_default>; 54 55 led-0 { 56 gpios = <&msmgpio 8 GPIO_ACTIVE_HIGH>; 57 color = <LED_COLOR_ID_RED>; 58 default-state = "off"; 59 function = LED_FUNCTION_INDICATOR; 60 }; 61 62 led-1 { 63 gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>; 64 color = <LED_COLOR_ID_GREEN>; 65 default-state = "off"; 66 function = LED_FUNCTION_INDICATOR; 67 }; 68 69 led-2 { 70 gpios = <&msmgpio 10 GPIO_ACTIVE_HIGH>; 71 color = <LED_COLOR_ID_BLUE>; 72 default-state = "off"; 73 function = LED_FUNCTION_INDICATOR; 74 }; 75 }; 76 77 usb_id: usb-id { 78 compatible = "linux,extcon-usb-gpio"; 79 id-gpio = <&msmgpio 117 GPIO_ACTIVE_HIGH>; 80 pinctrl-names = "default"; 81 pinctrl-0 = <&usb_id_default>; 82 }; 83}; 84 85&blsp_i2c2 { 86 status = "okay"; 87 88 magnetometer@c { 89 compatible = "asahi-kasei,ak09911"; 90 reg = <0x0c>; 91 92 vdd-supply = <&pm8916_l17>; 93 vid-supply = <&pm8916_l6>; 94 95 reset-gpios = <&msmgpio 36 GPIO_ACTIVE_LOW>; 96 97 pinctrl-names = "default"; 98 pinctrl-0 = <&mag_reset_default>; 99 }; 100 101 accelerometer@1e { 102 compatible = "kionix,kx023-1025"; 103 reg = <0x1e>; 104 105 interrupt-parent = <&msmgpio>; 106 interrupts = <115 IRQ_TYPE_EDGE_RISING>; 107 108 vdd-supply = <&pm8916_l17>; 109 vddio-supply = <&pm8916_l6>; 110 111 pinctrl-names = "default"; 112 pinctrl-0 = <&accel_irq_default>; 113 114 mount-matrix = "-1", "0", "0", 115 "0", "1", "0", 116 "0", "0", "1"; 117 }; 118 119 proximity@39 { 120 compatible = "avago,apds9930"; 121 reg = <0x39>; 122 123 interrupt-parent = <&msmgpio>; 124 interrupts = <113 IRQ_TYPE_EDGE_FALLING>; 125 126 vdd-supply = <&pm8916_l17>; 127 vddio-supply = <&pm8916_l6>; 128 129 led-max-microamp = <100000>; 130 amstaos,proximity-diodes = <1>; 131 132 pinctrl-names = "default"; 133 pinctrl-0 = <&prox_irq_default>; 134 }; 135 136 regulator@3e { 137 compatible = "ti,tps65132"; 138 reg = <0x3e>; 139 140 pinctrl-names = "default"; 141 pinctrl-0 = <®_lcd_en_default>; 142 143 reg_lcd_pos: outp { 144 regulator-name = "outp"; 145 regulator-min-microvolt = <5400000>; 146 regulator-max-microvolt = <5400000>; 147 enable-gpios = <&msmgpio 97 GPIO_ACTIVE_HIGH>; 148 regulator-active-discharge = <1>; 149 }; 150 151 reg_lcd_neg: outn { 152 regulator-name = "outn"; 153 regulator-min-microvolt = <5400000>; 154 regulator-max-microvolt = <5400000>; 155 enable-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>; 156 regulator-active-discharge = <1>; 157 }; 158 }; 159}; 160 161&blsp_i2c5 { 162 status = "okay"; 163 164 rmi4@70 { 165 compatible = "syna,rmi4-i2c"; 166 reg = <0x70>; 167 #address-cells = <1>; 168 #size-cells = <0>; 169 170 interrupt-parent = <&msmgpio>; 171 interrupts = <13 IRQ_TYPE_EDGE_FALLING>; 172 173 vdd-supply = <&pm8916_l17>; 174 vio-supply = <&pm8916_l16>; 175 176 pinctrl-names = "default"; 177 pinctrl-0 = <&ts_irq_default>; 178 179 syna,startup-delay-ms = <100>; 180 181 rmi4-f01@1 { 182 reg = <0x1>; 183 syna,nosleep-mode = <1>; /* Allow sleeping */ 184 }; 185 186 rmi4-f11@11 { 187 reg = <0x11>; 188 syna,sensor-type = <1>; /* Touchscreen */ 189 }; 190 }; 191}; 192 193&blsp_i2c6 { 194 status = "okay"; 195 196 nfc@28 { 197 compatible = "nxp,pn547", "nxp,nxp-nci-i2c"; 198 reg = <0x28>; 199 200 interrupt-parent = <&msmgpio>; 201 interrupts = <21 IRQ_TYPE_EDGE_RISING>; 202 203 enable-gpios = <&msmgpio 20 GPIO_ACTIVE_HIGH>; 204 firmware-gpios = <&msmgpio 2 GPIO_ACTIVE_HIGH>; 205 206 pinctrl-names = "default"; 207 pinctrl-0 = <&nfc_default>; 208 }; 209}; 210 211&blsp1_uart2 { 212 status = "okay"; 213}; 214 215&lpass { 216 status = "okay"; 217}; 218 219&pm8916_resin { 220 status = "okay"; 221 linux,code = <KEY_VOLUMEDOWN>; 222}; 223 224&pm8916_vib { 225 status = "okay"; 226}; 227 228&pronto { 229 status = "okay"; 230}; 231 232&sdhc_1 { 233 status = "okay"; 234 235 pinctrl-names = "default", "sleep"; 236 pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; 237 pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; 238}; 239 240&sdhc_2 { 241 status = "okay"; 242 243 pinctrl-names = "default", "sleep"; 244 pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdhc2_cd_default>; 245 pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdhc2_cd_default>; 246 247 /* 248 * The Huawei device tree sets cd-gpios = <&msmgpio 38 GPIO_ACTIVE_HIGH>. 249 * However, gpio38 does not change its state when inserting/removing the 250 * SD card, it's just low all the time. The Huawei kernel seems to use 251 * polling for SD card detection instead. 252 * 253 * However, looking closer at the GPIO debug output it turns out that 254 * gpio56 switches its state when inserting/removing the SD card. 255 * It behaves just like gpio38 normally does. Usually GPIO56 is used as 256 * "UIM2_PRESENT", i.e. to check if a second SIM card is inserted. 257 * Maybe Huawei decided to replace the second SIM card slot with the 258 * SD card slot and forgot to re-route to gpio38. 259 */ 260 cd-gpios = <&msmgpio 56 GPIO_ACTIVE_LOW>; 261}; 262 263&sound { 264 status = "okay"; 265 266 model = "msm8916"; 267 audio-routing = 268 "AMIC1", "MIC BIAS External1", 269 "AMIC2", "MIC BIAS External2", 270 "AMIC3", "MIC BIAS External1"; 271 272 pinctrl-names = "default", "sleep"; 273 pinctrl-0 = <&cdc_pdm_lines_act>; 274 pinctrl-1 = <&cdc_pdm_lines_sus>; 275 276 primary-dai-link { 277 link-name = "WCD"; 278 cpu { 279 sound-dai = <&lpass MI2S_PRIMARY>; 280 }; 281 codec { 282 sound-dai = <&lpass_codec 0>, <&wcd_codec 0>; 283 }; 284 }; 285 286 tertiary-dai-link { 287 link-name = "WCD-Capture"; 288 cpu { 289 sound-dai = <&lpass MI2S_TERTIARY>; 290 }; 291 codec { 292 sound-dai = <&lpass_codec 1>, <&wcd_codec 1>; 293 }; 294 }; 295}; 296 297&usb { 298 status = "okay"; 299 extcon = <&usb_id>, <&usb_id>; 300}; 301 302&usb_hs_phy { 303 extcon = <&usb_id>; 304}; 305 306&wcd_codec { 307 qcom,micbias-lvl = <2800>; 308 qcom,mbhc-vthreshold-low = <75 150 237 450 500>; 309 qcom,mbhc-vthreshold-high = <75 150 237 450 500>; 310 qcom,hphl-jack-type-normally-open; 311}; 312 313&smd_rpm_regulators { 314 vdd_l1_l2_l3-supply = <&pm8916_s3>; 315 vdd_l4_l5_l6-supply = <&pm8916_s4>; 316 vdd_l7-supply = <&pm8916_s4>; 317 318 s3 { 319 regulator-min-microvolt = <1200000>; 320 regulator-max-microvolt = <1300000>; 321 }; 322 323 s4 { 324 regulator-min-microvolt = <1800000>; 325 regulator-max-microvolt = <2100000>; 326 }; 327 328 l1 { 329 regulator-min-microvolt = <1225000>; 330 regulator-max-microvolt = <1225000>; 331 }; 332 333 l2 { 334 regulator-min-microvolt = <1200000>; 335 regulator-max-microvolt = <1200000>; 336 }; 337 338 l4 { 339 regulator-min-microvolt = <2050000>; 340 regulator-max-microvolt = <2050000>; 341 }; 342 343 l5 { 344 regulator-min-microvolt = <1800000>; 345 regulator-max-microvolt = <1800000>; 346 }; 347 348 l6 { 349 regulator-min-microvolt = <1800000>; 350 regulator-max-microvolt = <1800000>; 351 }; 352 353 l7 { 354 regulator-min-microvolt = <1800000>; 355 regulator-max-microvolt = <1800000>; 356 }; 357 358 l8 { 359 regulator-min-microvolt = <2950000>; 360 regulator-max-microvolt = <2950000>; 361 }; 362 363 l9 { 364 regulator-min-microvolt = <3300000>; 365 regulator-max-microvolt = <3300000>; 366 }; 367 368 l10 { 369 regulator-min-microvolt = <2700000>; 370 regulator-max-microvolt = <2800000>; 371 }; 372 373 l11 { 374 regulator-min-microvolt = <1800000>; 375 regulator-max-microvolt = <2950000>; 376 regulator-allow-set-load; 377 regulator-system-load = <200000>; 378 }; 379 380 l12 { 381 regulator-min-microvolt = <1800000>; 382 regulator-max-microvolt = <2950000>; 383 }; 384 385 l13 { 386 regulator-min-microvolt = <3075000>; 387 regulator-max-microvolt = <3075000>; 388 }; 389 390 l14 { 391 regulator-min-microvolt = <1800000>; 392 regulator-max-microvolt = <3300000>; 393 }; 394 395 l15 { 396 regulator-min-microvolt = <1800000>; 397 regulator-max-microvolt = <3300000>; 398 }; 399 400 l16 { 401 regulator-min-microvolt = <1800000>; 402 regulator-max-microvolt = <1800000>; 403 }; 404 405 l17 { 406 regulator-min-microvolt = <2850000>; 407 regulator-max-microvolt = <2850000>; 408 }; 409 410 l18 { 411 regulator-min-microvolt = <2700000>; 412 regulator-max-microvolt = <2700000>; 413 }; 414}; 415 416&msmgpio { 417 accel_irq_default: accel-irq-default { 418 pins = "gpio115"; 419 function = "gpio"; 420 421 drive-strength = <2>; 422 bias-disable; 423 }; 424 425 gpio_keys_default: gpio-keys-default { 426 pins = "gpio107"; 427 function = "gpio"; 428 429 drive-strength = <2>; 430 bias-pull-up; 431 }; 432 433 gpio_leds_default: gpio-leds-default { 434 pins = "gpio8", "gpio9", "gpio10"; 435 function = "gpio"; 436 437 drive-strength = <2>; 438 bias-disable; 439 }; 440 441 nfc_default: nfc-default { 442 pins = "gpio2", "gpio20", "gpio21"; 443 function = "gpio"; 444 445 drive-strength = <2>; 446 bias-disable; 447 }; 448 449 mag_reset_default: mag-reset-default { 450 pins = "gpio36"; 451 function = "gpio"; 452 453 drive-strength = <2>; 454 bias-disable; 455 }; 456 457 prox_irq_default: prox-irq-default { 458 pins = "gpio113"; 459 function = "gpio"; 460 461 drive-strength = <2>; 462 bias-disable; 463 }; 464 465 reg_lcd_en_default: reg-lcd-en-default { 466 pins = "gpio32", "gpio97"; 467 function = "gpio"; 468 469 drive-strength = <2>; 470 bias-disable; 471 }; 472 473 sdhc2_cd_default: sdhc2-cd-default { 474 pins = "gpio56"; 475 function = "gpio"; 476 477 drive-strength = <2>; 478 bias-disable; 479 }; 480 481 ts_irq_default: ts-irq-default { 482 pins = "gpio13"; 483 function = "gpio"; 484 485 drive-strength = <2>; 486 bias-disable; 487 }; 488 489 usb_id_default: usb-id-default { 490 pins = "gpio117"; 491 function = "gpio"; 492 493 drive-strength = <8>; 494 bias-pull-up; 495 }; 496}; 497