1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/* Copyright (c) 2019, Jeffrey Hugo. All rights reserved. */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun/* 5*4882a593Smuzhiyun * Common include for MSM8998 clamshell devices, ie the Lenovo Miix 630, 6*4882a593Smuzhiyun * Asus NovaGo TP370QL, and HP Envy x2. All three devices are basically the 7*4882a593Smuzhiyun * same, with differences in peripherals. 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun#include "msm8998.dtsi" 11*4882a593Smuzhiyun#include "pm8998.dtsi" 12*4882a593Smuzhiyun#include "pm8005.dtsi" 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun/ { 15*4882a593Smuzhiyun chosen { 16*4882a593Smuzhiyun }; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun vph_pwr: vph-pwr-regulator { 19*4882a593Smuzhiyun compatible = "regulator-fixed"; 20*4882a593Smuzhiyun regulator-name = "vph_pwr"; 21*4882a593Smuzhiyun regulator-always-on; 22*4882a593Smuzhiyun regulator-boot-on; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun}; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun&blsp1_uart3 { 27*4882a593Smuzhiyun status = "okay"; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun bluetooth { 30*4882a593Smuzhiyun compatible = "qcom,wcn3990-bt"; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun vddio-supply = <&vreg_s4a_1p8>; 33*4882a593Smuzhiyun vddxo-supply = <&vreg_l7a_1p8>; 34*4882a593Smuzhiyun vddrf-supply = <&vreg_l17a_1p3>; 35*4882a593Smuzhiyun vddch0-supply = <&vreg_l25a_3p3>; 36*4882a593Smuzhiyun max-speed = <3200000>; 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun}; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun/* 41*4882a593Smuzhiyun * The laptop FW does not appear to support the retention state as it is 42*4882a593Smuzhiyun * not advertised as enabled in ACPI, and enabling it in DT can cause boot 43*4882a593Smuzhiyun * hangs. 44*4882a593Smuzhiyun */ 45*4882a593Smuzhiyun&CPU0 { 46*4882a593Smuzhiyun cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; 47*4882a593Smuzhiyun}; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun&CPU1 { 50*4882a593Smuzhiyun cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; 51*4882a593Smuzhiyun}; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun&CPU2 { 54*4882a593Smuzhiyun cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; 55*4882a593Smuzhiyun}; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun&CPU3 { 58*4882a593Smuzhiyun cpu-idle-states = <&LITTLE_CPU_SLEEP_1>; 59*4882a593Smuzhiyun}; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun&CPU4 { 62*4882a593Smuzhiyun cpu-idle-states = <&BIG_CPU_SLEEP_1>; 63*4882a593Smuzhiyun}; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun&CPU5 { 66*4882a593Smuzhiyun cpu-idle-states = <&BIG_CPU_SLEEP_1>; 67*4882a593Smuzhiyun}; 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun&CPU6 { 70*4882a593Smuzhiyun cpu-idle-states = <&BIG_CPU_SLEEP_1>; 71*4882a593Smuzhiyun}; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun&CPU7 { 74*4882a593Smuzhiyun cpu-idle-states = <&BIG_CPU_SLEEP_1>; 75*4882a593Smuzhiyun}; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun&pm8005_lsid1 { 78*4882a593Smuzhiyun pm8005-regulators { 79*4882a593Smuzhiyun compatible = "qcom,pm8005-regulators"; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun vdd_s1-supply = <&vph_pwr>; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun pm8005_s1: s1 { /* VDD_GFX supply */ 84*4882a593Smuzhiyun regulator-min-microvolt = <524000>; 85*4882a593Smuzhiyun regulator-max-microvolt = <1100000>; 86*4882a593Smuzhiyun regulator-enable-ramp-delay = <500>; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* hack until we rig up the gpu consumer */ 89*4882a593Smuzhiyun regulator-always-on; 90*4882a593Smuzhiyun }; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun}; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun&qusb2phy { 95*4882a593Smuzhiyun status = "okay"; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun vdda-pll-supply = <&vreg_l12a_1p8>; 98*4882a593Smuzhiyun vdda-phy-dpdm-supply = <&vreg_l24a_3p075>; 99*4882a593Smuzhiyun}; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun&rpm_requests { 102*4882a593Smuzhiyun pm8998-regulators { 103*4882a593Smuzhiyun compatible = "qcom,rpm-pm8998-regulators"; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun vdd_s1-supply = <&vph_pwr>; 106*4882a593Smuzhiyun vdd_s2-supply = <&vph_pwr>; 107*4882a593Smuzhiyun vdd_s3-supply = <&vph_pwr>; 108*4882a593Smuzhiyun vdd_s4-supply = <&vph_pwr>; 109*4882a593Smuzhiyun vdd_s5-supply = <&vph_pwr>; 110*4882a593Smuzhiyun vdd_s6-supply = <&vph_pwr>; 111*4882a593Smuzhiyun vdd_s7-supply = <&vph_pwr>; 112*4882a593Smuzhiyun vdd_s8-supply = <&vph_pwr>; 113*4882a593Smuzhiyun vdd_s9-supply = <&vph_pwr>; 114*4882a593Smuzhiyun vdd_s10-supply = <&vph_pwr>; 115*4882a593Smuzhiyun vdd_s11-supply = <&vph_pwr>; 116*4882a593Smuzhiyun vdd_s12-supply = <&vph_pwr>; 117*4882a593Smuzhiyun vdd_s13-supply = <&vph_pwr>; 118*4882a593Smuzhiyun vdd_l1_l27-supply = <&vreg_s7a_1p025>; 119*4882a593Smuzhiyun vdd_l2_l8_l17-supply = <&vreg_s3a_1p35>; 120*4882a593Smuzhiyun vdd_l3_l11-supply = <&vreg_s7a_1p025>; 121*4882a593Smuzhiyun vdd_l4_l5-supply = <&vreg_s7a_1p025>; 122*4882a593Smuzhiyun vdd_l6-supply = <&vreg_s5a_2p04>; 123*4882a593Smuzhiyun vdd_l7_l12_l14_l15-supply = <&vreg_s5a_2p04>; 124*4882a593Smuzhiyun vdd_l9-supply = <&vph_pwr>; 125*4882a593Smuzhiyun vdd_l10_l23_l25-supply = <&vph_pwr>; 126*4882a593Smuzhiyun vdd_l13_l19_l21-supply = <&vph_pwr>; 127*4882a593Smuzhiyun vdd_l16_l28-supply = <&vph_pwr>; 128*4882a593Smuzhiyun vdd_l18_l22-supply = <&vph_pwr>; 129*4882a593Smuzhiyun vdd_l20_l24-supply = <&vph_pwr>; 130*4882a593Smuzhiyun vdd_l26-supply = <&vreg_s3a_1p35>; 131*4882a593Smuzhiyun vdd_lvs1_lvs2-supply = <&vreg_s4a_1p8>; 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun vreg_s3a_1p35: s3 { 134*4882a593Smuzhiyun regulator-min-microvolt = <1352000>; 135*4882a593Smuzhiyun regulator-max-microvolt = <1352000>; 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun vreg_s4a_1p8: s4 { 138*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 139*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 140*4882a593Smuzhiyun regulator-allow-set-load; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun vreg_s5a_2p04: s5 { 143*4882a593Smuzhiyun regulator-min-microvolt = <1904000>; 144*4882a593Smuzhiyun regulator-max-microvolt = <2040000>; 145*4882a593Smuzhiyun }; 146*4882a593Smuzhiyun vreg_s7a_1p025: s7 { 147*4882a593Smuzhiyun regulator-min-microvolt = <900000>; 148*4882a593Smuzhiyun regulator-max-microvolt = <1028000>; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun vreg_l1a_0p875: l1 { 151*4882a593Smuzhiyun regulator-min-microvolt = <880000>; 152*4882a593Smuzhiyun regulator-max-microvolt = <880000>; 153*4882a593Smuzhiyun regulator-allow-set-load; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun vreg_l2a_1p2: l2 { 156*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 157*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 158*4882a593Smuzhiyun regulator-allow-set-load; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun vreg_l3a_1p0: l3 { 161*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 162*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun vreg_l5a_0p8: l5 { 165*4882a593Smuzhiyun regulator-min-microvolt = <800000>; 166*4882a593Smuzhiyun regulator-max-microvolt = <800000>; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun vreg_l6a_1p8: l6 { 169*4882a593Smuzhiyun regulator-min-microvolt = <1808000>; 170*4882a593Smuzhiyun regulator-max-microvolt = <1808000>; 171*4882a593Smuzhiyun }; 172*4882a593Smuzhiyun vreg_l7a_1p8: l7 { 173*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 174*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 175*4882a593Smuzhiyun regulator-allow-set-load; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun vreg_l8a_1p2: l8 { 178*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 179*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun vreg_l9a_1p8: l9 { 182*4882a593Smuzhiyun regulator-min-microvolt = <1808000>; 183*4882a593Smuzhiyun regulator-max-microvolt = <2960000>; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun vreg_l10a_1p8: l10 { 186*4882a593Smuzhiyun regulator-min-microvolt = <1808000>; 187*4882a593Smuzhiyun regulator-max-microvolt = <2960000>; 188*4882a593Smuzhiyun }; 189*4882a593Smuzhiyun vreg_l11a_1p0: l11 { 190*4882a593Smuzhiyun regulator-min-microvolt = <1000000>; 191*4882a593Smuzhiyun regulator-max-microvolt = <1000000>; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun vreg_l12a_1p8: l12 { 194*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 195*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 196*4882a593Smuzhiyun }; 197*4882a593Smuzhiyun vreg_l13a_2p95: l13 { 198*4882a593Smuzhiyun regulator-min-microvolt = <1808000>; 199*4882a593Smuzhiyun regulator-max-microvolt = <2960000>; 200*4882a593Smuzhiyun }; 201*4882a593Smuzhiyun vreg_l14a_1p88: l14 { 202*4882a593Smuzhiyun regulator-min-microvolt = <1880000>; 203*4882a593Smuzhiyun regulator-max-microvolt = <1880000>; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun vreg_l15a_1p8: l15 { 206*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 207*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun vreg_l16a_2p7: l16 { 210*4882a593Smuzhiyun regulator-min-microvolt = <2704000>; 211*4882a593Smuzhiyun regulator-max-microvolt = <2704000>; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun vreg_l17a_1p3: l17 { 214*4882a593Smuzhiyun regulator-min-microvolt = <1304000>; 215*4882a593Smuzhiyun regulator-max-microvolt = <1304000>; 216*4882a593Smuzhiyun regulator-allow-set-load; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun vreg_l18a_2p7: l18 { 219*4882a593Smuzhiyun regulator-min-microvolt = <2704000>; 220*4882a593Smuzhiyun regulator-max-microvolt = <2704000>; 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun vreg_l19a_3p0: l19 { 223*4882a593Smuzhiyun regulator-min-microvolt = <3008000>; 224*4882a593Smuzhiyun regulator-max-microvolt = <3008000>; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun vreg_l20a_2p95: l20 { 227*4882a593Smuzhiyun regulator-min-microvolt = <2960000>; 228*4882a593Smuzhiyun regulator-max-microvolt = <2960000>; 229*4882a593Smuzhiyun regulator-allow-set-load; 230*4882a593Smuzhiyun }; 231*4882a593Smuzhiyun vreg_l21a_2p95: l21 { 232*4882a593Smuzhiyun regulator-min-microvolt = <2960000>; 233*4882a593Smuzhiyun regulator-max-microvolt = <2960000>; 234*4882a593Smuzhiyun regulator-allow-set-load; 235*4882a593Smuzhiyun regulator-system-load = <800000>; 236*4882a593Smuzhiyun }; 237*4882a593Smuzhiyun vreg_l22a_2p85: l22 { 238*4882a593Smuzhiyun regulator-min-microvolt = <2864000>; 239*4882a593Smuzhiyun regulator-max-microvolt = <2864000>; 240*4882a593Smuzhiyun }; 241*4882a593Smuzhiyun vreg_l23a_3p3: l23 { 242*4882a593Smuzhiyun regulator-min-microvolt = <3312000>; 243*4882a593Smuzhiyun regulator-max-microvolt = <3312000>; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun vreg_l24a_3p075: l24 { 246*4882a593Smuzhiyun regulator-min-microvolt = <3088000>; 247*4882a593Smuzhiyun regulator-max-microvolt = <3088000>; 248*4882a593Smuzhiyun }; 249*4882a593Smuzhiyun vreg_l25a_3p3: l25 { 250*4882a593Smuzhiyun regulator-min-microvolt = <3104000>; 251*4882a593Smuzhiyun regulator-max-microvolt = <3312000>; 252*4882a593Smuzhiyun regulator-allow-set-load; 253*4882a593Smuzhiyun }; 254*4882a593Smuzhiyun vreg_l26a_1p2: l26 { 255*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 256*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 257*4882a593Smuzhiyun }; 258*4882a593Smuzhiyun vreg_l28_3p0: l28 { 259*4882a593Smuzhiyun regulator-min-microvolt = <3008000>; 260*4882a593Smuzhiyun regulator-max-microvolt = <3008000>; 261*4882a593Smuzhiyun }; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun vreg_lvs1a_1p8: lvs1 { 264*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 265*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 266*4882a593Smuzhiyun }; 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun vreg_lvs2a_1p8: lvs2 { 269*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 270*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 271*4882a593Smuzhiyun }; 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun }; 274*4882a593Smuzhiyun}; 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun&tlmm { 277*4882a593Smuzhiyun gpio-reserved-ranges = <0 4>, <81 4>; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun touchpad: touchpad { 280*4882a593Smuzhiyun config { 281*4882a593Smuzhiyun pins = "gpio123"; 282*4882a593Smuzhiyun bias-pull-up; /* pull up */ 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun}; 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun&sdhc2 { 288*4882a593Smuzhiyun status = "okay"; 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun vmmc-supply = <&vreg_l21a_2p95>; 291*4882a593Smuzhiyun vqmmc-supply = <&vreg_l13a_2p95>; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun pinctrl-names = "default", "sleep"; 294*4882a593Smuzhiyun pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; 295*4882a593Smuzhiyun pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>; 296*4882a593Smuzhiyun}; 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun&usb3 { 299*4882a593Smuzhiyun status = "okay"; 300*4882a593Smuzhiyun}; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun&usb3_dwc3 { 303*4882a593Smuzhiyun dr_mode = "host"; /* Force to host until we have Type-C hooked up */ 304*4882a593Smuzhiyun}; 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun&usb3phy { 307*4882a593Smuzhiyun status = "okay"; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun vdda-phy-supply = <&vreg_l1a_0p875>; 310*4882a593Smuzhiyun vdda-pll-supply = <&vreg_l2a_1p2>; 311*4882a593Smuzhiyun}; 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun&wifi { 314*4882a593Smuzhiyun status = "okay"; 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>; 317*4882a593Smuzhiyun vdd-1.8-xo-supply = <&vreg_l7a_1p8>; 318*4882a593Smuzhiyun vdd-1.3-rfa-supply = <&vreg_l17a_1p3>; 319*4882a593Smuzhiyun vdd-3.3-ch0-supply = <&vreg_l25a_3p3>; 320*4882a593Smuzhiyun}; 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun/* PINCTRL - board-specific pinctrl */ 323*4882a593Smuzhiyun&blsp1_uart3_on { 324*4882a593Smuzhiyun rx { 325*4882a593Smuzhiyun /delete-property/ bias-disable; 326*4882a593Smuzhiyun /* 327*4882a593Smuzhiyun * Configure a pull-up on 45 (RX). This is needed to 328*4882a593Smuzhiyun * avoid garbage data when the TX pin of the Bluetooth 329*4882a593Smuzhiyun * module is in tri-state (module powered off or not 330*4882a593Smuzhiyun * driving the signal yet). 331*4882a593Smuzhiyun */ 332*4882a593Smuzhiyun bias-pull-up; 333*4882a593Smuzhiyun }; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun cts { 336*4882a593Smuzhiyun /delete-property/ bias-disable; 337*4882a593Smuzhiyun /* 338*4882a593Smuzhiyun * Configure a pull-down on 47 (CTS) to match the pull 339*4882a593Smuzhiyun * of the Bluetooth module. 340*4882a593Smuzhiyun */ 341*4882a593Smuzhiyun bias-pull-down; 342*4882a593Smuzhiyun }; 343*4882a593Smuzhiyun}; 344