1 // SPDX-License-Identifier: BSD-3-Clause
3 * Copyright (c) 2022, 2023 Jianhua Lu <lujianhua000@gmail.com>
6 #include <dt-bindings/arm/qcom,ids.h>
7 #include <dt-bindings/phy/phy.h>
8 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10 #include "pm8150.dtsi"
11 #include "pm8150b.dtsi"
12 #include "pm8150l.dtsi"
13 #include "pm8009.dtsi"
16 * Delete following upstream (sm8250.dtsi) reserved
17 * memory mappings which are different on this device.
19 /delete-node/ &adsp_mem;
20 /delete-node/ &cdsp_secure_heap;
21 /delete-node/ &slpi_mem;
22 /delete-node/ &spss_mem;
23 /delete-node/ &xbl_aop_mem;
26 classis-type = "tablet";
28 /* required for bootloader to select correct board */
29 qcom,msm-id = <QCOM_ID_SM8250 0x20001>; /* SM8250 v2.1 */
30 qcom,board-id = <0x10008 0>;
37 framebuffer: framebuffer@9c000000 {
38 compatible = "simple-framebuffer";
39 reg = <0x0 0x9c000000 0x0 0x2300000>;
42 stride = <(1600 * 4)>;
47 battery_l: battery-l {
48 compatible = "simple-battery";
49 voltage-min-design-microvolt = <3870000>;
50 energy-full-design-microwatt-hours = <16600000>;
51 charge-full-design-microamp-hours = <4300000>;
54 battery_r: battery-r {
55 compatible = "simple-battery";
56 voltage-min-design-microvolt = <3870000>;
57 energy-full-design-microwatt-hours = <16600000>;
58 charge-full-design-microamp-hours = <4300000>;
61 bl_vddpos_5p5: bl-vddpos-regulator {
62 compatible = "regulator-fixed";
63 regulator-name = "bl_vddpos_5p5";
64 regulator-min-microvolt = <5500000>;
65 regulator-max-microvolt = <5500000>;
66 regulator-enable-ramp-delay = <233>;
67 gpio = <&tlmm 130 GPIO_ACTIVE_HIGH>;
72 bl_vddneg_5p5: bl-vddneg-regulator {
73 compatible = "regulator-fixed";
74 regulator-name = "bl_vddneg_5p5";
75 regulator-min-microvolt = <5500000>;
76 regulator-max-microvolt = <5500000>;
77 regulator-enable-ramp-delay = <233>;
78 gpio = <&tlmm 131 GPIO_ACTIVE_HIGH>;
83 gpio_keys: gpio-keys {
84 compatible = "gpio-keys";
86 pinctrl-names = "default";
87 pinctrl-0 = <&vol_up_n>;
91 gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
92 linux,code = <KEY_VOLUMEUP>;
93 debounce-interval = <15>;
99 vph_pwr: vph-pwr-regulator {
100 compatible = "regulator-fixed";
101 regulator-name = "vph_pwr";
102 regulator-min-microvolt = <3700000>;
103 regulator-max-microvolt = <3700000>;
106 /* S6c is really ebi.lvl but it's there for supply map completeness sake. */
107 vreg_s6c_0p88: smpc6-regulator {
108 compatible = "regulator-fixed";
109 regulator-name = "vreg_s6c_0p88";
110 regulator-min-microvolt = <880000>;
111 regulator-max-microvolt = <880000>;
113 vin-supply = <&vph_pwr>;
117 xbl_aop_mem: xbl-aop@80700000 {
118 reg = <0x0 0x80600000 0x0 0x260000>;
122 slpi_mem: slpi@88c00000 {
123 reg = <0x0 0x88c00000 0x0 0x2f00000>;
127 adsp_mem: adsp@8bb00000 {
128 reg = <0x0 0x8bb00000 0x0 0x2500000>;
132 spss_mem: spss@8e000000 {
133 reg = <0x0 0x8e000000 0x0 0x100000>;
137 cdsp_secure_heap: cdsp-secure-heap@8e100000 {
138 reg = <0x0 0x8e100000 0x0 0x4600000>;
142 cont_splash_mem: cont-splash@9c000000 {
143 reg = <0x0 0x9c000000 0x0 0x2300000>;
148 compatible = "ramoops";
149 reg = <0x0 0xb0000000 0x0 0x400000>;
150 record-size = <0x1000>;
151 console-size = <0x200000>;
159 firmware-name = "qcom/sm8250/xiaomi/elish/adsp.mbn";
165 compatible = "qcom,pm8150-rpmh-regulators";
168 vdd-s1-supply = <&vph_pwr>;
169 vdd-s2-supply = <&vph_pwr>;
170 vdd-s3-supply = <&vph_pwr>;
171 vdd-s4-supply = <&vph_pwr>;
172 vdd-s5-supply = <&vph_pwr>;
173 vdd-s6-supply = <&vph_pwr>;
174 vdd-s7-supply = <&vph_pwr>;
175 vdd-s8-supply = <&vph_pwr>;
176 vdd-s9-supply = <&vph_pwr>;
177 vdd-s10-supply = <&vph_pwr>;
178 vdd-l1-l8-l11-supply = <&vreg_s6c_0p88>;
179 vdd-l2-l10-supply = <&vreg_bob>;
180 vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p95>;
181 vdd-l6-l9-supply = <&vreg_s8c_1p35>;
182 vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
183 vdd-l13-l16-l17-supply = <&vreg_bob>;
185 /* (S1+S2+S3) - cx.lvl (ARC) */
187 vreg_s4a_1p8: smps4 {
188 regulator-name = "vreg_s4a_1p8";
189 regulator-min-microvolt = <1800000>;
190 regulator-max-microvolt = <1920000>;
191 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
192 regulator-allow-set-load;
193 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
194 RPMH_REGULATOR_MODE_HPM>;
197 vreg_s5a_1p9: smps5 {
198 regulator-name = "vreg_s5a_1p9";
199 regulator-min-microvolt = <1900000>;
200 regulator-max-microvolt = <2040000>;
201 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
204 vreg_s6a_0p95: smps6 {
205 regulator-name = "vreg_s6a_0p95";
206 regulator-min-microvolt = <950000>;
207 regulator-max-microvolt = <1128000>;
208 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
212 regulator-name = "vreg_l2a_3p1";
213 regulator-min-microvolt = <3072000>;
214 regulator-max-microvolt = <3072000>;
215 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
219 regulator-name = "vreg_l3a_0p9";
220 regulator-min-microvolt = <928000>;
221 regulator-max-microvolt = <932000>;
222 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
225 /* L4 - lmx.lvl (ARC) */
227 vreg_l5a_0p88: ldo5 {
228 regulator-name = "vreg_l5a_0p88";
229 regulator-min-microvolt = <880000>;
230 regulator-max-microvolt = <880000>;
231 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
235 regulator-name = "vreg_l6a_1p2";
236 regulator-min-microvolt = <1200000>;
237 regulator-max-microvolt = <1200000>;
238 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
239 regulator-allow-set-load;
240 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
241 RPMH_REGULATOR_MODE_HPM>;
247 regulator-name = "vreg_l9a_1p2";
248 regulator-min-microvolt = <1200000>;
249 regulator-max-microvolt = <1200000>;
250 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
253 /* L10 is unused, L11 - lcx.lvl (ARC) */
255 vreg_l12a_1p8: ldo12 {
256 regulator-name = "vreg_l12a_1p8";
257 regulator-min-microvolt = <1800000>;
258 regulator-max-microvolt = <1800000>;
259 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
264 vreg_l14a_1p88: ldo14 {
265 regulator-name = "vreg_l14a_1p88";
266 regulator-min-microvolt = <1880000>;
267 regulator-max-microvolt = <1880000>;
268 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
271 /* L15 & L16 are unused. */
273 vreg_l17a_3p0: ldo17 {
274 regulator-name = "vreg_l17a_3p0";
275 regulator-min-microvolt = <2496000>;
276 regulator-max-microvolt = <3008000>;
277 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
278 regulator-allow-set-load;
279 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
280 RPMH_REGULATOR_MODE_HPM>;
283 vreg_l18a_0p9: ldo18 {
284 regulator-name = "vreg_l18a_0p9";
285 regulator-min-microvolt = <800000>;
286 regulator-max-microvolt = <920000>;
287 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
292 * Remaining regulators that are not yet supported:
293 * OLEDB: 4925000-8100000
294 * ab: 4600000-6100000
295 * ibb: 800000-5400000
298 compatible = "qcom,pm8150l-rpmh-regulators";
301 vdd-s1-supply = <&vph_pwr>;
302 vdd-s2-supply = <&vph_pwr>;
303 vdd-s3-supply = <&vph_pwr>;
304 vdd-s4-supply = <&vph_pwr>;
305 vdd-s5-supply = <&vph_pwr>;
306 vdd-s6-supply = <&vph_pwr>;
307 vdd-s7-supply = <&vph_pwr>;
308 vdd-s8-supply = <&vph_pwr>;
309 vdd-l1-l8-supply = <&vreg_s4a_1p8>;
310 vdd-l2-l3-supply = <&vreg_s8c_1p35>;
311 vdd-l4-l5-l6-supply = <&vreg_bob>;
312 vdd-l7-l11-supply = <&vreg_bob>;
313 vdd-l9-l10-supply = <&vreg_bob>;
314 vdd-bob-supply = <&vph_pwr>;
317 regulator-name = "vreg_bob";
318 regulator-min-microvolt = <3350000>;
319 regulator-max-microvolt = <3960000>;
320 regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
327 * (S4+S5) - mmcx.lvl,
331 vreg_s7c_0p35: smps7 {
332 regulator-name = "vreg_s7c_0p35";
333 regulator-min-microvolt = <348000>;
334 regulator-max-microvolt = <1000000>;
335 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
338 vreg_s8c_1p35: smps8 {
339 regulator-name = "vreg_s8c_1p35";
340 regulator-min-microvolt = <1350000>;
341 regulator-max-microvolt = <1400000>;
342 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
346 regulator-name = "vreg_l1c_1p8";
347 regulator-min-microvolt = <1800000>;
348 regulator-max-microvolt = <1800000>;
349 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
352 /* L2-4 are unused. */
355 regulator-name = "vreg_l5c_1p8";
356 regulator-min-microvolt = <1800000>;
357 regulator-max-microvolt = <2800000>;
358 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
362 regulator-name = "vreg_l6c_2p9";
363 regulator-min-microvolt = <1800000>;
364 regulator-max-microvolt = <2960000>;
365 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
366 regulator-allow-set-load;
367 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
368 RPMH_REGULATOR_MODE_HPM>;
371 vreg_l7c_2p85: ldo7 {
372 regulator-name = "vreg_l7c_2p85";
373 regulator-min-microvolt = <2856000>;
374 regulator-max-microvolt = <3104000>;
375 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
379 regulator-name = "vreg_l8c_1p8";
380 regulator-min-microvolt = <1800000>;
381 regulator-max-microvolt = <1800000>;
382 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
386 regulator-name = "vreg_l9c_2p9";
387 regulator-min-microvolt = <2704000>;
388 regulator-max-microvolt = <2960000>;
389 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
390 regulator-allow-set-load;
391 regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
392 RPMH_REGULATOR_MODE_HPM>;
395 vreg_l10c_3p3: ldo10 {
396 regulator-name = "vreg_l10c_3p3";
397 regulator-min-microvolt = <3296000>;
398 regulator-max-microvolt = <3296000>;
399 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
402 vreg_l11c_3p0: ldo11 {
403 regulator-name = "vreg_l11c_3p0";
404 regulator-min-microvolt = <3000000>;
405 regulator-max-microvolt = <3000000>;
406 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
411 compatible = "qcom,pm8009-rpmh-regulators";
414 vdd-s1-supply = <&vph_pwr>;
415 vdd-s2-supply = <&vreg_bob>;
416 vdd-l2-supply = <&vreg_s8c_1p35>;
417 vdd-l5-l6-supply = <&vreg_bob>;
418 vdd-l7-supply = <&vreg_s4a_1p8>;
420 vreg_s1f_1p2: smps1 {
421 regulator-name = "vreg_s1f_1p2";
422 regulator-min-microvolt = <1200000>;
423 regulator-max-microvolt = <1200000>;
424 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
427 vreg_s2f_0p5: smps2 {
428 regulator-name = "vreg_s2f_0p5";
429 regulator-min-microvolt = <512000>;
430 regulator-max-microvolt = <1100000>;
431 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
437 regulator-name = "vreg_l2f_1p3";
438 regulator-min-microvolt = <1304000>;
439 regulator-max-microvolt = <1304000>;
440 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
443 /* L3 & L4 are unused. */
446 regulator-name = "vreg_l5f_2p85";
447 regulator-min-microvolt = <2800000>;
448 regulator-max-microvolt = <2800000>;
449 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
453 regulator-name = "vreg_l6f_2p8";
454 regulator-min-microvolt = <2800000>;
455 regulator-max-microvolt = <2800000>;
456 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
460 regulator-name = "vreg_l7f_1p8";
461 regulator-min-microvolt = <1800000>;
462 regulator-max-microvolt = <1800000>;
463 regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
469 firmware-name = "qcom/sm8250/xiaomi/elish/cdsp.mbn";
493 memory-region = <&gpu_mem>;
494 firmware-name = "qcom/sm8250/xiaomi/elish/a650_zap.mbn";
499 clock-frequency = <400000>;
503 compatible = "ti,bq27z561";
505 monitored-battery = <&battery_r>;
510 clock-frequency = <400000>;
513 backlight: backlight@11 {
514 compatible = "kinetic,ktz8866";
516 vddpos-supply = <&bl_vddpos_5p5>;
517 vddneg-supply = <&bl_vddneg_5p5>;
518 enable-gpios = <&tlmm 139 GPIO_ACTIVE_HIGH>;
519 current-num-sinks = <5>;
520 kinetic,current-ramp-delay-ms = <128>;
521 kinetic,led-enable-ramp-delay-ms = <1>;
522 kinetic,enable-lcd-bias;
527 clock-frequency = <400000>;
531 compatible = "ti,bq27z561";
533 monitored-battery = <&battery_l>;
542 vdda-supply = <&vreg_l9a_1p2>;
548 display_panel: panel@0 {
550 vddio-supply = <&vreg_l14a_1p88>;
551 reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
552 backlight = <&backlight>;
557 #address-cells = <1>;
563 panel_in_0: endpoint {
564 remote-endpoint = <&mdss_dsi0_out>;
571 panel_in_1: endpoint {
572 remote-endpoint = <&mdss_dsi1_out>;
580 data-lanes = <0 1 2>;
581 remote-endpoint = <&panel_in_0>;
585 vdds-supply = <&vreg_l5a_0p88>;
586 phy-type = <PHY_TYPE_CPHY>;
591 vdda-supply = <&vreg_l9a_1p2>;
594 /* DSI1 is slave, so use DSI0 clocks */
595 assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
600 data-lanes = <0 1 2>;
601 remote-endpoint = <&panel_in_1>;
605 vdds-supply = <&vreg_l5a_0p88>;
606 phy-type = <PHY_TYPE_CPHY>;
615 vdda-phy-supply = <&vreg_l5a_0p88>;
616 vdda-pll-supply = <&vreg_l9a_1p2>;
621 vol_up_n: vol-up-n-state {
635 linux,code = <KEY_VOLUMEDOWN>;
652 firmware-name = "qcom/sm8250/xiaomi/elish/slpi.mbn";
657 gpio-reserved-ranges = <40 4>;
662 qcom,select-utmi-as-pipe-clk;
667 dr_mode = "peripheral";
668 maximum-speed = "high-speed";
669 /* Remove USB3 phy */
670 phys = <&usb_1_hsphy>;
671 phy-names = "usb2-phy";
675 vdda-pll-supply = <&vreg_l5a_0p88>;
676 vdda18-supply = <&vreg_l12a_1p8>;
677 vdda33-supply = <&vreg_l2a_3p1>;
682 vcc-supply = <&vreg_l17a_3p0>;
683 vcc-max-microamp = <800000>;
684 vccq-supply = <&vreg_l6a_1p2>;
685 vccq-max-microamp = <800000>;
686 vccq2-supply = <&vreg_s4a_1p8>;
687 vccq2-max-microamp = <800000>;
692 vdda-phy-supply = <&vreg_l5a_0p88>;
693 vdda-pll-supply = <&vreg_l9a_1p2>;
698 firmware-name = "qcom/sm8250/xiaomi/elish/venus.mbn";