// SPDX-License-Identifier: GPL-2.0 /* * Device tree for Google Pixel 3a, adapted from google-blueline device tree, * xiaomi-lavender device tree, and oneplus-common device tree. * * Copyright (c) 2022, Richard Acayan. All rights reserved. */ /dts-v1/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> #include <dt-bindings/power/qcom-rpmpd.h> #include "sdm670.dtsi" #include "pm660.dtsi" #include "pm660l.dtsi" /delete-node/ &mpss_region; /delete-node/ &venus_mem; /delete-node/ &wlan_msa_mem; /delete-node/ &cdsp_mem; /delete-node/ &mba_region; /delete-node/ &adsp_mem; /delete-node/ &ipa_fw_mem; /delete-node/ &ipa_gsi_mem; /delete-node/ &gpu_mem; / { model = "Google Pixel 3a"; compatible = "google,sargo", "qcom,sdm670"; aliases { }; chosen { stdout-path = "serial0:115200n8"; #address-cells = <2>; #size-cells = <2>; ranges; framebuffer@9c000000 { compatible = "simple-framebuffer"; reg = <0 0x9c000000 0 (1080 * 2220 * 4)>; width = <1080>; height = <2220>; stride = <(1080 * 4)>; format = "a8r8g8b8"; }; }; clocks { sleep_clk: sleep-clk { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <32764>; }; xo_board: xo-board { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <38400000>; }; }; gpio-keys { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&vol_up_pin>; key-vol-up { label = "Volume Up"; linux,code = <KEY_VOLUMEUP>; gpios = <&pm660l_gpios 7 GPIO_ACTIVE_LOW>; }; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; mpss_region: mpss@8b000000 { reg = <0 0x8b000000 0 0x9800000>; no-map; }; venus_mem: venus@94800000 { reg = <0 0x94800000 0 0x500000>; no-map; }; wlan_msa_mem: wlan-msa@94d00000 { reg = <0 0x94d00000 0 0x100000>; no-map; }; cdsp_mem: cdsp@94e00000 { reg = <0 0x94e00000 0 0x800000>; no-map; }; mba_region: mba@95600000 { reg = <0 0x95600000 0 0x200000>; no-map; }; adsp_mem: adsp@95800000 { reg = <0 0x95800000 0 0x2200000>; no-map; }; ipa_fw_mem: ipa-fw@97a00000 { reg = <0 0x97a00000 0 0x10000>; no-map; }; ipa_gsi_mem: ipa-gsi@97a10000 { reg = <0 0x97a10000 0 0x5000>; no-map; }; gpu_mem: gpu@97a15000 { reg = <0 0x97a15000 0 0x2000>; no-map; }; framebuffer-region@9c000000 { reg = <0 0x9c000000 0 0x2400000>; no-map; }; /* Also includes ramoops regions */ debug_info_mem: debug-info@a1800000 { reg = <0 0xa1800000 0 0x411000>; no-map; }; }; /* * The touchscreen regulator seems to be controlled somehow by a gpio. * Model it as a fixed regulator and keep it on. Without schematics we * don't know how this is actually wired up... */ ts_1p8_supply: ts-1p8-regulator { compatible = "regulator-fixed"; regulator-name = "ts_1p8_supply"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&pm660_gpios 12 GPIO_ACTIVE_HIGH>; enable-active-high; }; vph_pwr: vph-pwr-regulator { compatible = "regulator-fixed"; regulator-name = "vph_pwr"; regulator-min-microvolt = <3312000>; regulator-max-microvolt = <3312000>; regulator-always-on; regulator-boot-on; }; /* * Supply map from xiaomi-lavender specifies this as the supply for * ldob1, ldob9, ldob10, ldoa2, and ldoa3, while downstream specifies * this as a power domain. Set this as a fixed regulator with the same * voltage as lavender until display is needed to avoid unneccessarily * using a deprecated binding (regulator-fixed-domain). */ vreg_s2b_1p05: vreg-s2b-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_s2b"; regulator-min-microvolt = <1050000>; regulator-max-microvolt = <1050000>; }; }; &apps_rsc { regulators-0 { compatible = "qcom,pm660-rpmh-regulators"; qcom,pmic-id = "a"; vdd-s1-supply = <&vph_pwr>; vdd-s2-supply = <&vph_pwr>; vdd-s3-supply = <&vph_pwr>; vdd-s4-supply = <&vph_pwr>; vdd-s5-supply = <&vph_pwr>; vdd-s6-supply = <&vph_pwr>; vdd-l1-l6-l7-supply = <&vreg_s6a_0p87>; vdd-l2-l3-supply = <&vreg_s2b_1p05>; vdd-l5-supply = <&vreg_s2b_1p05>; vdd-l8-l9-l10-l11-l12-l13-l14-supply = <&vreg_s4a_2p04>; vdd-l15-l16-l17-l18-l19-supply = <&vreg_bob>; /* * S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed * by the Core Power Reduction hardened (CPRh) and the * Operating State Manager (OSM) HW automatically. */ vreg_s4a_2p04: smps4 { regulator-min-microvolt = <1808000>; regulator-max-microvolt = <2040000>; regulator-enable-ramp-delay = <200>; }; vreg_s6a_0p87: smps6 { regulator-min-microvolt = <1224000>; regulator-max-microvolt = <1352000>; regulator-enable-ramp-delay = <150>; }; /* LDOs */ vreg_l1a_1p225: ldo1 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1250000>; regulator-enable-ramp-delay = <250>; }; vreg_l2a_1p0: ldo2 { regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-enable-ramp-delay = <250>; }; vreg_l3a_1p0: ldo3 { regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-enable-ramp-delay = <250>; }; vreg_l5a_0p848: ldo5 { regulator-min-microvolt = <800000>; regulator-max-microvolt = <800000>; regulator-enable-ramp-delay = <250>; }; vreg_l6a_1p3: ldo6 { regulator-min-microvolt = <1248000>; regulator-max-microvolt = <1304000>; regulator-enable-ramp-delay = <250>; }; vreg_l7a_1p2: ldo7 { regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-enable-ramp-delay = <250>; }; vreg_l8a_1p8: ldo8 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; regulator-always-on; }; vreg_l9a_1p8: ldo9 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l10a_1p8: ldo10 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l11a_1p8: ldo11 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l12a_1p8: ldo12 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l13a_1p8: ldo13 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l14a_1p8: ldo14 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-enable-ramp-delay = <250>; }; vreg_l15a_1p8: ldo15 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <2950000>; regulator-enable-ramp-delay = <250>; }; vreg_l16a_2p7: ldo16 { regulator-min-microvolt = <2696000>; regulator-max-microvolt = <2696000>; regulator-enable-ramp-delay = <250>; }; vreg_l17a_1p8: ldo17 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <2950000>; regulator-enable-ramp-delay = <250>; }; vreg_l19a_3p3: ldo19 { regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3312000>; regulator-enable-ramp-delay = <250>; }; }; regulators-1 { compatible = "qcom,pm660l-rpmh-regulators"; qcom,pmic-id = "b"; vdd-s1-supply = <&vph_pwr>; vdd-s2-supply = <&vph_pwr>; vdd-s3-s4-supply = <&vph_pwr>; vdd-s5-supply = <&vph_pwr>; vdd-l1-l9-l10-supply = <&vreg_s2b_1p05>; vdd-l2-supply = <&vreg_bob>; vdd-l3-l5-l7-l8-supply = <&vreg_bob>; vdd-l4-l6-supply = <&vreg_bob>; vdd-bob-supply = <&vph_pwr>; /* LDOs */ vreg_l1b_0p925: ldo1 { regulator-min-microvolt = <880000>; regulator-max-microvolt = <900000>; regulator-enable-ramp-delay = <250>; }; vreg_l2b_2p95: ldo2 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <2960000>; regulator-enable-ramp-delay = <250>; }; vreg_l3b_3p0: ldo3 { regulator-min-microvolt = <2850000>; regulator-max-microvolt = <3008000>; regulator-enable-ramp-delay = <250>; }; vreg_l4b_2p95: ldo4 { regulator-min-microvolt = <2960000>; regulator-max-microvolt = <2960000>; regulator-enable-ramp-delay = <250>; }; vreg_l5b_2p95: ldo5 { regulator-min-microvolt = <2960000>; regulator-max-microvolt = <2960000>; regulator-enable-ramp-delay = <250>; }; vreg_l6b_3p3: ldo6 { regulator-min-microvolt = <3008000>; regulator-max-microvolt = <3300000>; regulator-enable-ramp-delay = <250>; }; vreg_l7b_3p125: ldo7 { regulator-min-microvolt = <3088000>; regulator-max-microvolt = <3100000>; regulator-enable-ramp-delay = <250>; }; vreg_l8b_3p3: ldo8 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3312000>; regulator-enable-ramp-delay = <250>; }; /* * Downstream specifies a fixed voltage of 3.312 V, but the * PMIC4 BOB ranges don't support that. Widen the range a * little to avoid adding a new BOB regulator type. */ vreg_bob: bob { regulator-min-microvolt = <3296000>; regulator-max-microvolt = <3328000>; regulator-enable-ramp-delay = <500>; }; }; }; &gcc { protected-clocks = <GCC_QSPI_CORE_CLK>, <GCC_QSPI_CORE_CLK_SRC>, <GCC_QSPI_CNOC_PERIPH_AHB_CLK>; }; &gpi_dma1 { status = "okay"; }; &i2c9 { clock-frequency = <100000>; status = "okay"; synaptics-rmi4-i2c@20 { compatible = "syna,rmi4-i2c"; reg = <0x20>; interrupts-extended = <&tlmm 125 IRQ_TYPE_EDGE_FALLING>; pinctrl-names = "default"; pinctrl-0 = <&touchscreen_default>; vio-supply = <&ts_1p8_supply>; syna,reset-delay-ms = <200>; syna,startup-delay-ms = <200>; #address-cells = <1>; #size-cells = <0>; rmi4-f01@1 { reg = <0x01>; syna,nosleep-mode = <1>; }; rmi4-f12@12 { reg = <0x12>; touchscreen-x-mm = <62>; touchscreen-y-mm = <127>; syna,sensor-type = <1>; }; }; }; &pm660l_gpios { vol_up_pin: vol-up-state { pins = "gpio7"; function = "normal"; qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>; input-enable; bias-pull-up; }; }; &pon_pwrkey { status = "okay"; }; &pon_resin { linux,code = <KEY_VOLUMEDOWN>; status = "okay"; }; &qupv3_id_1 { status = "okay"; }; &sdhc_1 { supports-cqe; mmc-hs200-1_8v; mmc-hs400-1_8v; mmc-ddr-1_8v; qcom,ddr-config = <0xc3040873>; vmmc-supply = <&vreg_l4b_2p95>; vqmmc-supply = <&vreg_l8a_1p8>; status = "okay"; }; &tlmm { gpio-reserved-ranges = <0 4>, <81 4>; touchscreen_default: ts-default-state { ts-reset-pins { pins = "gpio99"; function = "gpio"; drive-strength = <2>; bias-pull-up; output-high; }; ts-irq-pins { pins = "gpio125"; function = "gpio"; drive-strength = <2>; bias-disable; }; ts-switch-pins { pins = "gpio135"; function = "gpio"; drive-strength = <2>; bias-disable; output-low; }; }; }; &usb_1_hsphy { vdd-supply = <&vreg_l1b_0p925>; vdda-pll-supply = <&vreg_l10a_1p8>; vdda-phy-dpdm-supply = <&vreg_l7b_3p125>; status = "okay"; }; &usb_1 { qcom,select-utmi-as-pipe-clk; status = "okay"; }; &usb_1_dwc3 { /* Only peripheral works for now */ dr_mode = "peripheral"; /* Do not assume that sdm670.dtsi will never support USB 3.0 */ phys = <&usb_1_hsphy>; phy-names = "usb2-phy"; maximum-speed = "high-speed"; };