0001 // SPDX-License-Identifier: BSD-3-Clause
0002 /*
0003 * Copyright (c) 2021, Luca Weiss <luca@z3ntu.xyz>
0004 */
0005
0006 /dts-v1/;
0007
0008 #include <dt-bindings/gpio/gpio.h>
0009 #include <dt-bindings/input/input.h>
0010 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
0011 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
0012 #include "sm7225.dtsi"
0013 #include "pm6150l.dtsi"
0014 #include "pm6350.dtsi"
0015
0016 / {
0017 model = "Fairphone 4";
0018 compatible = "fairphone,fp4", "qcom,sm7225";
0019 chassis-type = "handset";
0020
0021 /* required for bootloader to select correct board */
0022 qcom,msm-id = <434 0x10000>, <459 0x10000>;
0023 qcom,board-id = <8 32>;
0024
0025 aliases {
0026 serial0 = &uart9;
0027 };
0028
0029 chosen {
0030 #address-cells = <2>;
0031 #size-cells = <2>;
0032 ranges;
0033
0034 stdout-path = "serial0:115200n8";
0035
0036 framebuffer0: framebuffer@a000000 {
0037 compatible = "simple-framebuffer";
0038 reg = <0 0xa0000000 0 (2340 * 1080 * 4)>;
0039 width = <1080>;
0040 height = <2340>;
0041 stride = <(1080 * 4)>;
0042 format = "a8r8g8b8";
0043 };
0044 };
0045
0046 gpio-keys {
0047 compatible = "gpio-keys";
0048 pinctrl-names = "default";
0049 pinctrl-0 = <&gpio_keys_pin>;
0050
0051 key-volume-up {
0052 label = "volume_up";
0053 linux,code = <KEY_VOLUMEUP>;
0054 gpios = <&pm6350_gpios 2 GPIO_ACTIVE_LOW>;
0055 };
0056 };
0057
0058 reserved-memory {
0059 /*
0060 * The rmtfs memory region in downstream is 'dynamically allocated'
0061 * but given the same address every time. Hard code it as this address is
0062 * where the modem firmware expects it to be.
0063 */
0064 memory@efe01000 {
0065 compatible = "qcom,rmtfs-mem";
0066 reg = <0 0xefe01000 0 0x600000>;
0067 no-map;
0068
0069 qcom,client-id = <1>;
0070 qcom,vmid = <15>;
0071 };
0072 };
0073 };
0074
0075 &adsp {
0076 status = "okay";
0077 firmware-name = "qcom/sm7225/fairphone4/adsp.mdt";
0078 };
0079
0080 &apps_rsc {
0081 pm6350-rpmh-regulators {
0082 compatible = "qcom,pm6350-rpmh-regulators";
0083 qcom,pmic-id = "a";
0084
0085 vreg_s1a: smps1 {
0086 regulator-min-microvolt = <1000000>;
0087 regulator-max-microvolt = <1200000>;
0088 };
0089
0090 vreg_s2a: smps2 {
0091 regulator-min-microvolt = <1503000>;
0092 regulator-max-microvolt = <2048000>;
0093 };
0094
0095 vreg_l2a: ldo2 {
0096 regulator-min-microvolt = <1503000>;
0097 regulator-max-microvolt = <1980000>;
0098 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0099 };
0100
0101 vreg_l3a: ldo3 {
0102 regulator-min-microvolt = <2700000>;
0103 regulator-max-microvolt = <3300000>;
0104 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0105 };
0106
0107 vreg_l4a: ldo4 {
0108 regulator-min-microvolt = <352000>;
0109 regulator-max-microvolt = <801000>;
0110 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0111 };
0112
0113 vreg_l5a: ldo5 {
0114 regulator-min-microvolt = <1503000>;
0115 regulator-max-microvolt = <1980000>;
0116 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0117 };
0118
0119 vreg_l6a: ldo6 {
0120 regulator-min-microvolt = <1710000>;
0121 regulator-max-microvolt = <3544000>;
0122 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0123 };
0124
0125 vreg_l7a: ldo7 {
0126 regulator-min-microvolt = <1620000>;
0127 regulator-max-microvolt = <1980000>;
0128 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0129 };
0130
0131 vreg_l8a: ldo8 {
0132 regulator-min-microvolt = <2800000>;
0133 regulator-max-microvolt = <2800000>;
0134 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0135 };
0136
0137 vreg_l9a: ldo9 {
0138 regulator-min-microvolt = <1650000>;
0139 regulator-max-microvolt = <3401000>;
0140 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0141 };
0142
0143 vreg_l11a: ldo11 {
0144 regulator-min-microvolt = <1800000>;
0145 regulator-max-microvolt = <2000000>;
0146 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0147 };
0148
0149 vreg_l12a: ldo12 {
0150 regulator-min-microvolt = <1620000>;
0151 regulator-max-microvolt = <1980000>;
0152 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0153 };
0154
0155 vreg_l13a: ldo13 {
0156 regulator-min-microvolt = <570000>;
0157 regulator-max-microvolt = <650000>;
0158 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0159 };
0160
0161 vreg_l14a: ldo14 {
0162 regulator-min-microvolt = <1700000>;
0163 regulator-max-microvolt = <1900000>;
0164 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0165 };
0166
0167 vreg_l15a: ldo15 {
0168 regulator-min-microvolt = <1100000>;
0169 regulator-max-microvolt = <1305000>;
0170 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0171 };
0172
0173 vreg_l16a: ldo16 {
0174 regulator-min-microvolt = <830000>;
0175 regulator-max-microvolt = <921000>;
0176 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0177 };
0178
0179 vreg_l18a: ldo18 {
0180 regulator-min-microvolt = <788000>;
0181 regulator-max-microvolt = <1049000>;
0182 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0183 };
0184
0185 vreg_l19a: ldo19 {
0186 regulator-min-microvolt = <1080000>;
0187 regulator-max-microvolt = <1305000>;
0188 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0189 };
0190
0191 vreg_l20a: ldo20 {
0192 regulator-min-microvolt = <530000>;
0193 regulator-max-microvolt = <801000>;
0194 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0195 };
0196
0197 vreg_l21a: ldo21 {
0198 regulator-min-microvolt = <751000>;
0199 regulator-max-microvolt = <825000>;
0200 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0201 };
0202
0203 vreg_l22a: ldo22 {
0204 regulator-min-microvolt = <1080000>;
0205 regulator-max-microvolt = <1305000>;
0206 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0207 };
0208 };
0209
0210 pm6150l-rpmh-regulators {
0211 compatible = "qcom,pm6150l-rpmh-regulators";
0212 qcom,pmic-id = "e";
0213
0214 vreg_s8e: smps8 {
0215 regulator-min-microvolt = <313000>;
0216 regulator-max-microvolt = <1395000>;
0217 };
0218
0219 vreg_l1e: ldo1 {
0220 regulator-min-microvolt = <1620000>;
0221 regulator-max-microvolt = <1980000>;
0222 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0223 };
0224
0225 vreg_l2e: ldo2 {
0226 regulator-min-microvolt = <1170000>;
0227 regulator-max-microvolt = <1305000>;
0228 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0229 };
0230
0231 vreg_l3e: ldo3 {
0232 regulator-min-microvolt = <1100000>;
0233 regulator-max-microvolt = <1299000>;
0234 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0235 };
0236
0237 vreg_l4e: ldo4 {
0238 regulator-min-microvolt = <1620000>;
0239 regulator-max-microvolt = <3300000>;
0240 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0241 };
0242
0243 vreg_l5e: ldo5 {
0244 regulator-min-microvolt = <1620000>;
0245 regulator-max-microvolt = <3300000>;
0246 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0247 };
0248
0249 vreg_l6e: ldo6 {
0250 regulator-min-microvolt = <1700000>;
0251 regulator-max-microvolt = <3544000>;
0252 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0253 };
0254
0255 vreg_l7e: ldo7 {
0256 regulator-min-microvolt = <2700000>;
0257 regulator-max-microvolt = <3544000>;
0258 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0259 };
0260
0261 vreg_l8e: ldo8 {
0262 regulator-min-microvolt = <1620000>;
0263 regulator-max-microvolt = <2000000>;
0264 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0265 };
0266
0267 vreg_l9e: ldo9 {
0268 regulator-min-microvolt = <2700000>;
0269 regulator-max-microvolt = <3544000>;
0270 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0271 };
0272
0273 vreg_l10e: ldo10 {
0274 regulator-min-microvolt = <3000000>;
0275 regulator-max-microvolt = <3401000>;
0276 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0277 };
0278
0279 vreg_l11e: ldo11 {
0280 regulator-min-microvolt = <3000000>;
0281 regulator-max-microvolt = <3401000>;
0282 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
0283 };
0284
0285 vreg_bob: bob {
0286 regulator-min-microvolt = <1620000>;
0287 regulator-max-microvolt = <5492000>;
0288 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
0289 regulator-allow-bypass;
0290 };
0291 };
0292 };
0293
0294 &cdsp {
0295 status = "okay";
0296 firmware-name = "qcom/sm7225/fairphone4/cdsp.mdt";
0297 };
0298
0299 &i2c10 {
0300 status = "okay";
0301 clock-frequency = <400000>;
0302
0303 haptics@5a {
0304 compatible = "awinic,aw8695";
0305 reg = <0x5a>;
0306 interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_FALLING>;
0307 reset-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>;
0308
0309 awinic,f0-preset = <2350>;
0310 awinic,f0-coefficient = <260>;
0311 awinic,f0-calibration-percent = <7>;
0312 awinic,drive-level = <125>;
0313
0314 awinic,f0-detection-play-time = <5>;
0315 awinic,f0-detection-wait-time = <3>;
0316 awinic,f0-detection-repeat = <2>;
0317 awinic,f0-detection-trace = <15>;
0318
0319 awinic,boost-debug = /bits/ 8 <0x30 0xeb 0xd4>;
0320 awinic,tset = /bits/ 8 <0x12>;
0321 awinic,r-spare = /bits/ 8 <0x68>;
0322
0323 awinic,bemf-upper-threshold = <4104>;
0324 awinic,bemf-lower-threshold = <1016>;
0325 };
0326 };
0327
0328 &mpss {
0329 status = "okay";
0330 firmware-name = "qcom/sm7225/fairphone4/modem.mdt";
0331 };
0332
0333 &pm6150l_wled {
0334 status = "okay";
0335
0336 qcom,switching-freq = <800>;
0337 qcom,current-limit-microamp = <20000>;
0338 qcom,num-strings = <2>;
0339 };
0340
0341 &pm6350_gpios {
0342 gpio_keys_pin: gpio-keys-state {
0343 pins = "gpio2";
0344 function = PMIC_GPIO_FUNC_NORMAL;
0345 bias-pull-up;
0346 input-enable;
0347 power-source = <0>;
0348 };
0349 };
0350
0351 &pm6350_resin {
0352 status = "okay";
0353 linux,code = <KEY_VOLUMEDOWN>;
0354 };
0355
0356 &qupv3_id_1 {
0357 status = "okay";
0358 };
0359
0360 &tlmm {
0361 gpio-reserved-ranges = <13 4>, <56 2>;
0362 };
0363
0364 &uart9 {
0365 status = "okay";
0366 };
0367
0368 &ufs_mem_hc {
0369 status = "okay";
0370
0371 reset-gpios = <&tlmm 156 GPIO_ACTIVE_LOW>;
0372
0373 vcc-supply = <&vreg_l7e>;
0374 vcc-max-microamp = <800000>;
0375 vccq2-supply = <&vreg_l12a>;
0376 vccq2-max-microamp = <800000>;
0377 };
0378
0379 &ufs_mem_phy {
0380 status = "okay";
0381
0382 vdda-phy-supply = <&vreg_l18a>;
0383 vdda-pll-supply = <&vreg_l22a>;
0384 };
0385
0386 &usb_1 {
0387 status = "okay";
0388 };
0389
0390 &usb_1_dwc3 {
0391 maximum-speed = "super-speed";
0392 dr_mode = "peripheral";
0393 };
0394
0395 &usb_1_hsphy {
0396 status = "okay";
0397
0398 vdd-supply = <&vreg_l18a>;
0399 vdda-pll-supply = <&vreg_l2a>;
0400 vdda-phy-dpdm-supply = <&vreg_l3a>;
0401 };
0402
0403 &usb_1_qmpphy {
0404 status = "okay";
0405
0406 vdda-phy-supply = <&vreg_l22a>;
0407 vdda-pll-supply = <&vreg_l16a>;
0408 };
0409
0410 &wifi {
0411 status = "okay";
0412
0413 vdd-0.8-cx-mx-supply = <&vreg_l4a>;
0414 vdd-1.8-xo-supply = <&vreg_l7a>;
0415 vdd-1.3-rfa-supply = <&vreg_l2e>;
0416 vdd-3.3-ch0-supply = <&vreg_l10e>;
0417 vdd-3.3-ch1-supply = <&vreg_l11e>;
0418 };