[PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support
Aneesh Pradhan <[email protected]>
| Newsgroups | org.kernel.vger.linux-clk,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: "Catherine Frederick (coolguy)" <[email protected]> Add MSM8917 and MSM8920 board files for the Motorola Moto E4 (perry) sharing a common dtsi, shaped against in-tree msm8917-xiaomi-wingtech / msm8937-xiaomi-land so every referenced label exists on mainline. Initial subset: regulators, eMMC/SD, USB OTG (gpio extcon), gpio-keys, Synaptics RMI4 touchscreen, BMA253 via i2c-gpio, WCNSS Wi-Fi (qcom,wcn3660b), and PMI8950 WLED. Deferred (missing mainline SoC/PMIC nodes or drivers): DSI panel/MDSS, IPA, QDSP6/WCD audio, PMI8950 FG/smbcharger, modem/ADSP/Venus remoteprocs. Validated on XT1765 under postmarketOS with a fuller fork DT carry; this is the trimmed upstream-first subset. Signed-off-by: Catherine Frederick (coolguy) <[email protected]> [aneesh: rewrite against mainline msm8917/pm8937/pmi8950; drop fork-only nodes; keep Makefile DTB entries alphabetically sorted] Signed-off-by: Aneesh Pradhan <[email protected]> --- arch/arm64/boot/dts/qcom/Makefile | 2 + .../qcom/msm8917-motorola-perry-common.dtsi | 412 ++++++++++++++++++ .../boot/dts/qcom/msm8917-motorola-perry.dts | 20 + .../boot/dts/qcom/msm8920-motorola-perry.dts | 20 + 4 files changed, 454 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/msm8917-motorola-perry-common.dtsi create mode 100644 arch/arm64/boot/dts/qcom/msm8917-motorola-perry.dts create mode 100644 arch/arm64/boot/dts/qcom/msm8920-motorola-perry.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index e05414290d8e..5bf8cdc12ff9 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -106,9 +106,11 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86518.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt86528.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.dtb +dtb-$(CONFIG_ARCH_QCOM) += msm8917-motorola-perry.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8917-xiaomi-riva.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8917-xiaomi-rolex.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8917-xiaomi-tiare.dtb +dtb-$(CONFIG_ARCH_QCOM) += msm8920-motorola-perry.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8929-wingtech-wt82918hd.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8937-xiaomi-land.dtb dtb-$(CONFIG_ARCH_QCOM) += msm8939-asus-z00t.dtb diff --git a/arch/arm64/boot/dts/qcom/msm8917-motorola-perry-common.dtsi b/arch/arm64/boot/dts/qcom/msm8917-motorola-perry-common.dtsi new file mode 100644 index 000000000000..1870958976fb --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8917-motorola-perry-common.dtsi @@ -0,0 +1,412 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2025, Catherine Frederick <[email protected]> + * Copyright (c) 2026, Aneesh Pradhan <[email protected]> + */ + +#include <dt-bindings/arm/qcom,ids.h> +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include "pm8937.dtsi" +#include "pmi8950.dtsi" + +/delete-node/ &qseecom_mem; + +/ { + aliases { + mmc0 = &sdhc_1; + mmc1 = &sdhc_2; + }; + + battery: battery { + compatible = "simple-battery"; + + charge-full-design-microamp-hours = <4000000>; + constant-charge-current-max-microamp = <1000000>; + voltage-min-design-microvolt = <3400000>; + voltage-max-design-microvolt = <4400000>; + }; + + chosen { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* Early console deferred with MDSS; panel driver not upstream yet. */ + stdout-path = "framebuffer0"; + + framebuffer0: framebuffer@90001000 { + compatible = "simple-framebuffer"; + reg = <0x0 0x90001000 0x0 (720 * 1280 * 3)>; + width = <720>; + height = <1280>; + stride = <(720 * 3)>; + format = "r8g8b8"; + + clocks = <&gcc GCC_MDSS_AHB_CLK>, + <&gcc GCC_MDSS_AXI_CLK>, + <&gcc GCC_MDSS_VSYNC_CLK>, + <&gcc GCC_MDSS_MDP_CLK>, + <&gcc GCC_MDSS_BYTE0_CLK>, + <&gcc GCC_MDSS_PCLK0_CLK>, + <&gcc GCC_MDSS_ESC0_CLK>; + power-domains = <&gcc MDSS_GDSC>; + status = "disabled"; + }; + }; + + gpio-keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&gpio_keys_default>; + pinctrl-names = "default"; + + key-volup { + label = "Volume Up"; + linux,code = <KEY_VOLUMEUP>; + gpios = <&tlmm 91 GPIO_ACTIVE_LOW>; + debounce-interval = <15>; + }; + }; + + /* + * Bitbang on TLMM because BLSP is TZ-protected; sensors are normally + * proxied via ADSP firmware. + */ + i2c-sensors { + compatible = "i2c-gpio"; + sda-gpios = <&tlmm 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios = <&tlmm 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + i2c-gpio,delay-us = <2>; /* ~100 kHz */ + #address-cells = <1>; + #size-cells = <0>; + + imu@18 { + compatible = "bosch,bma253"; + reg = <0x18>; + + interrupts-extended = <&tlmm 41 IRQ_TYPE_EDGE_RISING>; + + vdd-supply = <&pm8937_l10>; + vddio-supply = <&pm8937_l6>; + + mount-matrix = "-1", "0", "0", + "0", "-1", "0", + "0", "0", "-1"; + }; + }; + + reserved-memory { + qseecom_mem: qseecom@84300000 { + reg = <0x0 0x84300000 0x0 0x2000000>; + no-map; + }; + + framebuffer_mem: memory@90001000 { + reg = <0x0 0x90001000 0x0 (720 * 1280 * 3)>; + no-map; + }; + }; + + vph_pwr: vph-pwr-regulator { + compatible = "regulator-fixed"; + regulator-name = "vph_pwr"; + regulator-min-microvolt = <3700000>; + regulator-max-microvolt = <3700000>; + regulator-always-on; + regulator-boot-on; + }; + + usb_id: usb-id { + compatible = "linux,extcon-usb-gpio"; + id-gpios = <&tlmm 97 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&usb_id_default>; + pinctrl-names = "default"; + }; + + vdda_touch_vreg: vdda-touch-regulator { + compatible = "regulator-fixed"; + regulator-name = "vdda_touch"; + gpio = <&tlmm 59 0>; + startup-delay-us = <300>; + enable-active-high; + }; +}; + +&blsp1_i2c3 { + status = "okay"; + + touchscreen@20 { + compatible = "syna,rmi4-i2c"; + reg = <0x20>; + interrupt-parent = <&tlmm>; + interrupts = <65 IRQ_TYPE_EDGE_FALLING>; + pinctrl-0 = <&ts_default>; + pinctrl-names = "default"; + + reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>; + + vdd-supply = <&vdda_touch_vreg>; + vio-supply = <&pm8937_l6>; + }; +}; + +&gpu { + status = "okay"; +}; + +/* Panel / MDSS DSI deferred until the panel driver is upstream. */ +&mdss { + status = "disabled"; +}; + +&pm8937_resin { + linux,code = <KEY_VOLUMEDOWN>; + + status = "okay"; +}; + +&pm8937_spmi_regulators { + /* PM8937 S5 = VDD_APC (same pattern as in-tree msm8917 nora/wingtech family). */ + pm8937_s5: s5 { + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + regulator-boot-on; + }; +}; + +&pmi8950_wled { + qcom,current-limit-microamp = <25000>; + qcom,num-strings = <2>; + qcom,ovp-millivolt = <29500>; + qcom,switching-freq = <800>; + qcom,cabc; + qcom,external-pfet; + + status = "okay"; +}; + +&rpm_requests { + regulators-0 { + compatible = "qcom,rpm-pm8937-regulators"; + + vdd_s1-supply = <&vph_pwr>; + vdd_s2-supply = <&vph_pwr>; + vdd_s3-supply = <&vph_pwr>; + vdd_s4-supply = <&vph_pwr>; + + vdd_l1_l19-supply = <&pm8937_s3>; + vdd_l2_l23-supply = <&pm8937_s3>; + vdd_l3-supply = <&pm8937_s3>; + vdd_l4_l5_l6_l7_l16-supply = <&pm8937_s4>; + vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>; + vdd_l9_l10_l13_l14_l15_l18-supply = <&vph_pwr>; + + pm8937_s1: s1 { + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1225000>; + }; + + pm8937_s3: s3 { + regulator-min-microvolt = <1300000>; + regulator-max-microvolt = <1300000>; + }; + + pm8937_s4: s4 { + regulator-min-microvolt = <2050000>; + regulator-max-microvolt = <2050000>; + }; + + pm8937_l2: l2 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + pm8937_l5: l5 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + pm8937_l6: l6 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + }; + + pm8937_l7: l7 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + pm8937_l8: l8 { + regulator-min-microvolt = <2850000>; + regulator-max-microvolt = <2900000>; + }; + + pm8937_l9: l9 { + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3300000>; + }; + + pm8937_l10: l10 { + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + regulator-boot-on; + }; + + pm8937_l11: l11 { + regulator-min-microvolt = <2950000>; + regulator-max-microvolt = <2950000>; + regulator-allow-set-load; + regulator-system-load = <200000>; + }; + + pm8937_l12: l12 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2950000>; + }; + + pm8937_l13: l13 { + regulator-min-microvolt = <3075000>; + regulator-max-microvolt = <3075000>; + }; + + pm8937_l14: l14 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + pm8937_l15: l15 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + }; + + pm8937_l16: l16 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + pm8937_l17: l17 { + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2900000>; + regulator-always-on; + }; + + pm8937_l18: l18 { + regulator-min-microvolt = <2700000>; + regulator-max-microvolt = <2700000>; + }; + + pm8937_l19: l19 { + regulator-min-microvolt = <1225000>; + regulator-max-microvolt = <1350000>; + }; + + pm8937_l22: l22 { + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + pm8937_l23: l23 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; +}; + +&sdhc_1 { + vmmc-supply = <&pm8937_l8>; + vqmmc-supply = <&pm8937_l5>; + + status = "okay"; +}; + +&sdhc_2 { + cd-gpios = <&tlmm 67 GPIO_ACTIVE_HIGH>; + vmmc-supply = <&pm8937_l11>; + vqmmc-supply = <&pm8937_l12>; + pinctrl-0 = <&sdc2_default &sdc2_cd_default>; + pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>; + pinctrl-names = "default", "sleep"; + + status = "okay"; +}; + +&sleep_clk { + clock-frequency = <32768>; +}; + +&tlmm { + gpio-reserved-ranges = <20 4>; + + gpio_keys_default: gpio-keys-default-state { + pins = "gpio91"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + + sdc2_cd_default: sdc2-cd-default-state { + pins = "gpio67"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + usb_id_default: usb-id-default-state { + pins = "gpio97"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + + ts_default: ts-default-state { + pins = "gpio64"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; +}; + +&usb { + extcon = <&usb_id>, <&usb_id>; + dr_mode = "otg"; + status = "okay"; +}; + +&usb_hs_phy { + extcon = <&usb_id>; + vdd-supply = <&pm8937_l2>; + vdda1p8-supply = <&pm8937_l7>; + vdda3p3-supply = <&pm8937_l13>; + status = "okay"; +}; + +&wcnss { + vddpx-supply = <&pm8937_l5>; + + status = "okay"; +}; + +&wcnss_ctrl { + firmware-name = "qcom/msm8917/motorola/perry/WCNSS_qcom_wlan_nv.bin"; +}; + +&wcnss_iris { + compatible = "qcom,wcn3660b"; + vddxo-supply = <&pm8937_l7>; + vddrfa-supply = <&pm8937_l19>; + vddpa-supply = <&pm8937_l9>; + vdddig-supply = <&pm8937_l5>; +}; + +&wcnss_mem { + status = "okay"; +}; + +&xo_board { + clock-frequency = <19200000>; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8917-motorola-perry.dts b/arch/arm64/boot/dts/qcom/msm8917-motorola-perry.dts new file mode 100644 index 000000000000..190602908a3e --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8917-motorola-perry.dts @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2025 Val Packett + * Copyright (c) 2026, Aneesh Pradhan <[email protected]> + */ + +/dts-v1/; + +#include "msm8917.dtsi" +#include "msm8917-motorola-perry-common.dtsi" + +/ { + model = "Motorola Moto E4 (perry)"; + compatible = "motorola,perry", "qcom,msm8917"; + qcom,msm-id = <QCOM_ID_MSM8917 0>; + qcom,board-id = <0x48 0x8100>, + <0x48 0x80b0>, + <0x48 0x80a0>; + chassis-type = "handset"; +}; diff --git a/arch/arm64/boot/dts/qcom/msm8920-motorola-perry.dts b/arch/arm64/boot/dts/qcom/msm8920-motorola-perry.dts new file mode 100644 index 000000000000..4b78cf76149a --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8920-motorola-perry.dts @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2025 Val Packett + * Copyright (c) 2026, Aneesh Pradhan <[email protected]> + */ + +/dts-v1/; + +#include "msm8920.dtsi" +#include "msm8917-motorola-perry-common.dtsi" + +/ { + model = "Motorola Moto E4 (perry)"; + compatible = "motorola,perry", "qcom,msm8920"; + qcom,msm-id = <QCOM_ID_MSM8920 0>; + qcom,board-id = <0x48 0x8100>, + <0x48 0x80b0>, + <0x48 0x80a0>; + chassis-type = "handset"; +}; -- 2.53.0