1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz> 4 */ 5 6/dts-v1/; 7 8#include <dt-bindings/gpio/gpio.h> 9#include <dt-bindings/input/input.h> 10#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> 11#include <dt-bindings/regulator/qcom,rpmh-regulator.h> 12#include "sm7225.dtsi" 13#include "pm6150l.dtsi" 14#include "pm6350.dtsi" 15 16/ { 17 model = "Fairphone 4"; 18 compatible = "fairphone,fp4", "qcom,sm7225"; 19 chassis-type = "handset"; 20 21 /* required for bootloader to select correct board */ 22 qcom,msm-id = <434 0x10000>, <459 0x10000>; 23 qcom,board-id = <8 32>; 24 25 aliases { 26 serial0 = &uart9; 27 }; 28 29 chosen { 30 #address-cells = <2>; 31 #size-cells = <2>; 32 ranges; 33 34 stdout-path = "serial0:115200n8"; 35 36 framebuffer0: framebuffer@a000000 { 37 compatible = "simple-framebuffer"; 38 reg = <0 0xa0000000 0 (2340 * 1080 * 4)>; 39 width = <1080>; 40 height = <2340>; 41 stride = <(1080 * 4)>; 42 format = "a8r8g8b8"; 43 }; 44 }; 45 46 gpio-keys { 47 compatible = "gpio-keys"; 48 pinctrl-names = "default"; 49 pinctrl-0 = <&gpio_keys_pin>; 50 51 key-volume-up { 52 label = "volume_up"; 53 linux,code = <KEY_VOLUMEUP>; 54 gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>; 55 }; 56 }; 57 58 reserved-memory { 59 /* 60 * The rmtfs memory region in downstream is 'dynamically allocated' 61 * but given the same address every time. Hard code it as this address is 62 * where the modem firmware expects it to be. 63 */ 64 memory@efe01000 { 65 compatible = "qcom,rmtfs-mem"; 66 reg = <0 0xefe01000 0 0x600000>; 67 no-map; 68 69 qcom,client-id = <1>; 70 qcom,vmid = <15>; 71 }; 72 }; 73}; 74 75&adsp { 76 status = "okay"; 77 firmware-name = "qcom/sm7225/fairphone4/adsp.mdt"; 78}; 79 80&apps_rsc { 81 pm6350-rpmh-regulators { 82 compatible = "qcom,pm6350-rpmh-regulators"; 83 qcom,pmic-id = "a"; 84 85 vreg_s1a: smps1 { 86 regulator-min-microvolt = <1000000>; 87 regulator-max-microvolt = <1200000>; 88 }; 89 90 vreg_s2a: smps2 { 91 regulator-min-microvolt = <1503000>; 92 regulator-max-microvolt = <2048000>; 93 }; 94 95 vreg_l2a: ldo2 { 96 regulator-min-microvolt = <1503000>; 97 regulator-max-microvolt = <1980000>; 98 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 99 }; 100 101 vreg_l3a: ldo3 { 102 regulator-min-microvolt = <2700000>; 103 regulator-max-microvolt = <3300000>; 104 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 105 }; 106 107 vreg_l4a: ldo4 { 108 regulator-min-microvolt = <352000>; 109 regulator-max-microvolt = <801000>; 110 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 111 }; 112 113 vreg_l5a: ldo5 { 114 regulator-min-microvolt = <1503000>; 115 regulator-max-microvolt = <1980000>; 116 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 117 }; 118 119 vreg_l6a: ldo6 { 120 regulator-min-microvolt = <1710000>; 121 regulator-max-microvolt = <3544000>; 122 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 123 }; 124 125 vreg_l7a: ldo7 { 126 regulator-min-microvolt = <1620000>; 127 regulator-max-microvolt = <1980000>; 128 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 129 }; 130 131 vreg_l8a: ldo8 { 132 regulator-min-microvolt = <2800000>; 133 regulator-max-microvolt = <2800000>; 134 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 135 }; 136 137 vreg_l9a: ldo9 { 138 regulator-min-microvolt = <1650000>; 139 regulator-max-microvolt = <3401000>; 140 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 141 }; 142 143 vreg_l11a: ldo11 { 144 regulator-min-microvolt = <1800000>; 145 regulator-max-microvolt = <2000000>; 146 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 147 }; 148 149 vreg_l12a: ldo12 { 150 regulator-min-microvolt = <1620000>; 151 regulator-max-microvolt = <1980000>; 152 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 153 }; 154 155 vreg_l13a: ldo13 { 156 regulator-min-microvolt = <570000>; 157 regulator-max-microvolt = <650000>; 158 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 159 }; 160 161 vreg_l14a: ldo14 { 162 regulator-min-microvolt = <1700000>; 163 regulator-max-microvolt = <1900000>; 164 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 165 }; 166 167 vreg_l15a: ldo15 { 168 regulator-min-microvolt = <1100000>; 169 regulator-max-microvolt = <1305000>; 170 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 171 }; 172 173 vreg_l16a: ldo16 { 174 regulator-min-microvolt = <830000>; 175 regulator-max-microvolt = <921000>; 176 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 177 }; 178 179 vreg_l18a: ldo18 { 180 regulator-min-microvolt = <788000>; 181 regulator-max-microvolt = <1049000>; 182 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 183 }; 184 185 vreg_l19a: ldo19 { 186 regulator-min-microvolt = <1080000>; 187 regulator-max-microvolt = <1305000>; 188 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 189 }; 190 191 vreg_l20a: ldo20 { 192 regulator-min-microvolt = <530000>; 193 regulator-max-microvolt = <801000>; 194 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 195 }; 196 197 vreg_l21a: ldo21 { 198 regulator-min-microvolt = <751000>; 199 regulator-max-microvolt = <825000>; 200 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 201 }; 202 203 vreg_l22a: ldo22 { 204 regulator-min-microvolt = <1080000>; 205 regulator-max-microvolt = <1305000>; 206 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 207 }; 208 }; 209 210 pm6150l-rpmh-regulators { 211 compatible = "qcom,pm6150l-rpmh-regulators"; 212 qcom,pmic-id = "e"; 213 214 vreg_s8e: smps8 { 215 regulator-min-microvolt = <313000>; 216 regulator-max-microvolt = <1395000>; 217 }; 218 219 vreg_l1e: ldo1 { 220 regulator-min-microvolt = <1620000>; 221 regulator-max-microvolt = <1980000>; 222 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 223 }; 224 225 vreg_l2e: ldo2 { 226 regulator-min-microvolt = <1170000>; 227 regulator-max-microvolt = <1305000>; 228 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 229 }; 230 231 vreg_l3e: ldo3 { 232 regulator-min-microvolt = <1100000>; 233 regulator-max-microvolt = <1299000>; 234 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 235 }; 236 237 vreg_l4e: ldo4 { 238 regulator-min-microvolt = <1620000>; 239 regulator-max-microvolt = <3300000>; 240 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 241 }; 242 243 vreg_l5e: ldo5 { 244 regulator-min-microvolt = <1620000>; 245 regulator-max-microvolt = <3300000>; 246 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 247 }; 248 249 vreg_l6e: ldo6 { 250 regulator-min-microvolt = <1700000>; 251 regulator-max-microvolt = <3544000>; 252 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 253 }; 254 255 vreg_l7e: ldo7 { 256 regulator-min-microvolt = <2700000>; 257 regulator-max-microvolt = <3544000>; 258 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 259 }; 260 261 vreg_l8e: ldo8 { 262 regulator-min-microvolt = <1620000>; 263 regulator-max-microvolt = <2000000>; 264 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 265 }; 266 267 vreg_l9e: ldo9 { 268 regulator-min-microvolt = <2700000>; 269 regulator-max-microvolt = <3544000>; 270 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 271 }; 272 273 vreg_l10e: ldo10 { 274 regulator-min-microvolt = <3000000>; 275 regulator-max-microvolt = <3401000>; 276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 277 }; 278 279 vreg_l11e: ldo11 { 280 regulator-min-microvolt = <3000000>; 281 regulator-max-microvolt = <3401000>; 282 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 283 }; 284 285 vreg_bob: bob { 286 regulator-min-microvolt = <1620000>; 287 regulator-max-microvolt = <5492000>; 288 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 289 regulator-allow-bypass; 290 }; 291 }; 292}; 293 294&cdsp { 295 status = "okay"; 296 firmware-name = "qcom/sm7225/fairphone4/cdsp.mdt"; 297}; 298 299&i2c10 { 300 status = "okay"; 301 clock-frequency = <400000>; 302 303 haptics@5a { 304 compatible = "awinic,aw8695"; 305 reg = <0x5a>; 306 interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>; 307 reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>; 308 309 awinic,f0-preset = <2350>; 310 awinic,f0-coefficient = <260>; 311 awinic,f0-calibration-percent = <7>; 312 awinic,drive-level = <125>; 313 314 awinic,f0-detection-play-time = <5>; 315 awinic,f0-detection-wait-time = <3>; 316 awinic,f0-detection-repeat = <2>; 317 awinic,f0-detection-trace = <15>; 318 319 awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>; 320 awinic,tset = /bits/ 8 <0x12>; 321 awinic,r-spare = /bits/ 8 <0x68>; 322 323 awinic,bemf-upper-threshold = <4104>; 324 awinic,bemf-lower-threshold = <1016>; 325 }; 326}; 327 328&mpss { 329 status = "okay"; 330 firmware-name = "qcom/sm7225/fairphone4/modem.mdt"; 331}; 332 333&pm6150l_wled { 334 status = "okay"; 335 336 qcom,switching-freq = <800>; 337 qcom,current-limit-microamp = <20000>; 338 qcom,num-strings = <2>; 339}; 340 341&pm6350_gpios { 342 gpio_keys_pin: gpio-keys-state { 343 pins = "gpio2"; 344 function = PMIC_GPIO_FUNC_NORMAL; 345 bias-pull-up; 346 input-enable; 347 power-source = <0>; 348 }; 349}; 350 351&pm6350_resin { 352 status = "okay"; 353 linux,code = <KEY_VOLUMEDOWN>; 354}; 355 356&qupv3_id_1 { 357 status = "okay"; 358}; 359 360&tlmm { 361 gpio-reserved-ranges = <13 4>, <56 2>; 362}; 363 364&uart9 { 365 status = "okay"; 366}; 367 368&ufs_mem_hc { 369 status = "okay"; 370 371 reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>; 372 373 vcc-supply = <&vreg_l7e>; 374 vcc-max-microamp = <800000>; 375 vccq2-supply = <&vreg_l12a>; 376 vccq2-max-microamp = <800000>; 377}; 378 379&ufs_mem_phy { 380 status = "okay"; 381 382 vdda-phy-supply = <&vreg_l18a>; 383 vdda-pll-supply = <&vreg_l22a>; 384}; 385 386&usb_1 { 387 status = "okay"; 388}; 389 390&usb_1_dwc3 { 391 maximum-speed = "super-speed"; 392 dr_mode = "peripheral"; 393}; 394 395&usb_1_hsphy { 396 status = "okay"; 397 398 vdd-supply = <&vreg_l18a>; 399 vdda-pll-supply = <&vreg_l2a>; 400 vdda-phy-dpdm-supply = <&vreg_l3a>; 401}; 402 403&usb_1_qmpphy { 404 status = "okay"; 405 406 vdda-phy-supply = <&vreg_l22a>; 407 vdda-pll-supply = <&vreg_l16a>; 408}; 409 410&wifi { 411 status = "okay"; 412 413 vdd-0.8-cx-mx-supply = <&vreg_l4a>; 414 vdd-1.8-xo-supply = <&vreg_l7a>; 415 vdd-1.3-rfa-supply = <&vreg_l2e>; 416 vdd-3.3-ch0-supply = <&vreg_l10e>; 417 vdd-3.3-ch1-supply = <&vreg_l11e>; 418}; 419