linux-loongson/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
Dmitry Baryshkov 55cc39c70d arm64: dts: qcom: sdm670: move board clocks to sdm670.dtsi file
The SDM670 devices define XO and clocks completely in the
board files, despite sdm670.dtsi file referencing them directly. Follow
the example of other platforms and move clock definitions to the
sdm670.dtsi file.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20241224-fix-board-clocks-v3-20-e9b08fbeadd3@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
2024-12-26 21:51:11 -06:00

605 lines
12 KiB
Plaintext

// 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/leds/common.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";
};
};
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";
};
&gpu {
status = "okay";
zap-shader {
memory-region = <&gpu_mem>;
firmware-name = "qcom/sdm670/sargo/a615_zap.mbn";
};
};
&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>;
};
};
};
&mdss {
status = "okay";
};
&mdss_dsi0 {
vdda-supply = <&vreg_l1a_1p225>;
status = "okay";
panel@0 {
compatible = "samsung,s6e3fa7-ams559nk06";
reg = <0>;
reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&panel_default>;
power-supply = <&vreg_l6b_3p3>;
port {
panel_in: endpoint {
remote-endpoint = <&mdss_dsi0_out>;
};
};
};
};
&mdss_dsi0_out {
remote-endpoint = <&panel_in>;
data-lanes = <0 1 2 3>;
};
&mdss_dsi0_phy {
vdds-supply = <&vreg_l1b_0p925>;
status = "okay";
};
&mdss_mdp {
status = "okay";
};
&pm660l_flash {
status = "okay";
led-0 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_WHITE>;
led-sources = <1>, <2>;
led-max-microamp = <500000>;
flash-max-microamp = <1500000>;
flash-max-timeout-us = <1280000>;
};
};
&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>;
panel_default: panel-default-state {
te-pins {
pins = "gpio10";
function = "mdp_vsync";
drive-strength = <2>;
bias-pull-down;
};
reset-pins {
pins = "gpio75";
function = "gpio";
drive-strength = <8>;
bias-disable;
};
mode-pins {
pins = "gpio76";
function = "gpio";
drive-strength = <8>;
bias-disable;
};
};
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";
};