* [PATCH 0/2] clk: qcom: add MSM8920 RPM clock controller support
@ 2026-07-23 1:24 Aneesh Pradhan
2026-07-23 1:24 ` [PATCH 1/2] dt-bindings: clock: qcom,rpmcc: add MSM8920 Aneesh Pradhan
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd
Cc: Brian Masney, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-arm-msm, linux-clk, devicetree, linux-kernel,
Catherine Frederick, Aneesh Pradhan
Add MSM8920 support to the SMD RPM clock controller.
MSM8920 is essentially MSM8917 with MSM8953's modem stack, which adds
an IPA block. The new rpmcc table is MSM8917's clocks plus
RPM_SMD_IPA_{,A_}CLK (same IPA IDs already used by MSM8940; no new
dt-bindings/clock/qcom,rpmcc.h entries needed).
This series is split binding-then-driver so the shared clk-smd-rpm
changes can land via linux-arm-msm independently of the MSM8920 /
perry device trees (requested in msm89x7-mainline/linux#48 review).
Based on qcom/for-next (d36de2e50966). Applies cleanly there; also
applies to torvalds/master with a trivial yaml-schema context shift
(flat items vs oneOf) if preferred.
Hardware context: needed for initial MSM8920 + Motorola Moto E4 (perry)
upstream DTS follow-up. Fork PR tracking: msm89x7-mainline/linux#48.
Catherine Frederick authored the original fork series; this re-roll
keeps her From:/SoB and adds an [aneesh:] note + SoB for the split /
rebase onto the current for-next binding schema.
Catherine Frederick (coolguy) (2):
dt-bindings: clock: qcom,rpmcc: add MSM8920
clk: qcom: smd-rpm: add MSM8920 support
.../devicetree/bindings/clock/qcom,rpmcc.yaml | 2 ++
drivers/clk/qcom/clk-smd-rpm.c | 31 +++++++++++++++++++
2 files changed, 33 insertions(+)
base-commit: d36de2e50966f3dd9ef3482f1faf649b3d697714
--
2.53.0
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/2] dt-bindings: clock: qcom,rpmcc: add MSM8920 2026-07-23 1:24 [PATCH 0/2] clk: qcom: add MSM8920 RPM clock controller support Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/2] clk: qcom: smd-rpm: add MSM8920 support Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Michael Turquette, Stephen Boyd Cc: Brian Masney, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-clk, devicetree, linux-kernel, Catherine Frederick, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> Document the "qcom,rpmcc-msm8920" compatible for the RPM clock controller found on MSM8920. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: split the binding into its own patch per submitting-patches; rebased onto qcom/for-next oneOf compatible schema] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml index af9fc5b14a81..49c00e219ada 100644 --- a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml +++ b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml @@ -33,6 +33,7 @@ properties: - qcom,rpmcc-msm8909 - qcom,rpmcc-msm8916 - qcom,rpmcc-msm8917 + - qcom,rpmcc-msm8920 - qcom,rpmcc-msm8936 - qcom,rpmcc-msm8937 - qcom,rpmcc-msm8940 @@ -118,6 +119,7 @@ allOf: - qcom,rpmcc-msm8226 - qcom,rpmcc-msm8916 - qcom,rpmcc-msm8917 + - qcom,rpmcc-msm8920 - qcom,rpmcc-msm8936 - qcom,rpmcc-msm8937 - qcom,rpmcc-msm8940 -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/2] clk: qcom: smd-rpm: add MSM8920 support 2026-07-23 1:24 [PATCH 0/2] clk: qcom: add MSM8920 RPM clock controller support Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/2] dt-bindings: clock: qcom,rpmcc: add MSM8920 Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Michael Turquette, Stephen Boyd Cc: Brian Masney, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, linux-clk, devicetree, linux-kernel, Catherine Frederick, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> MSM8920 is essentially MSM8917 with MSM8953's modem stack, which adds an IPA (IP Accelerator) block. Add an msm8920 RPM clock table mirroring msm8917's plus the IPA and IPA_A clocks, and register the "qcom,rpmcc-msm8920" compatible. Split out from the combined MSM8920 change so the shared clk-smd-rpm driver can be reviewed and land via linux-arm-msm independently of the device tree, as requested in review. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: split rpmcc out of the SoC dtsi commit for upstream-first review] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- drivers/clk/qcom/clk-smd-rpm.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 0b624ed4715c..587d288b8f9e 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -667,6 +667,36 @@ static const struct rpm_smd_clk_desc rpm_clk_msm8917 = { .num_icc_clks = ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), }; +static struct clk_smd_rpm *msm8920_clks[] = { + [RPM_SMD_XO_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo, + [RPM_SMD_XO_A_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo_a, + [RPM_SMD_BIMC_GPU_CLK] = &clk_smd_rpm_bimc_gpu_clk, + [RPM_SMD_BIMC_GPU_A_CLK] = &clk_smd_rpm_bimc_gpu_a_clk, + [RPM_SMD_IPA_CLK] = &clk_smd_rpm_ipa_clk, + [RPM_SMD_IPA_A_CLK] = &clk_smd_rpm_ipa_a_clk, + [RPM_SMD_QDSS_CLK] = &clk_smd_rpm_qdss_clk, + [RPM_SMD_QDSS_A_CLK] = &clk_smd_rpm_qdss_a_clk, + [RPM_SMD_BB_CLK1] = &clk_smd_rpm_bb_clk1, + [RPM_SMD_BB_CLK1_A] = &clk_smd_rpm_bb_clk1_a, + [RPM_SMD_BB_CLK2] = &clk_smd_rpm_bb_clk2, + [RPM_SMD_BB_CLK2_A] = &clk_smd_rpm_bb_clk2_a, + [RPM_SMD_RF_CLK2] = &clk_smd_rpm_rf_clk2, + [RPM_SMD_RF_CLK2_A] = &clk_smd_rpm_rf_clk2_a, + [RPM_SMD_DIV_CLK2] = &clk_smd_rpm_div_clk2, + [RPM_SMD_DIV_A_CLK2] = &clk_smd_rpm_div_clk2_a, + [RPM_SMD_BB_CLK1_PIN] = &clk_smd_rpm_bb_clk1_pin, + [RPM_SMD_BB_CLK1_A_PIN] = &clk_smd_rpm_bb_clk1_a_pin, + [RPM_SMD_BB_CLK2_PIN] = &clk_smd_rpm_bb_clk2_pin, + [RPM_SMD_BB_CLK2_A_PIN] = &clk_smd_rpm_bb_clk2_a_pin, +}; + +static const struct rpm_smd_clk_desc rpm_clk_msm8920 = { + .clks = msm8920_clks, + .num_clks = ARRAY_SIZE(msm8920_clks), + .icc_clks = bimc_pcnoc_snoc_smmnoc_icc_clks, + .num_icc_clks = ARRAY_SIZE(bimc_pcnoc_snoc_smmnoc_icc_clks), +}; + static struct clk_smd_rpm *msm8936_clks[] = { [RPM_SMD_XO_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo, [RPM_SMD_XO_A_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo_a, @@ -1300,6 +1330,7 @@ static const struct of_device_id rpm_smd_clk_match_table[] = { { .compatible = "qcom,rpmcc-msm8909", .data = &rpm_clk_msm8909 }, { .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 }, { .compatible = "qcom,rpmcc-msm8917", .data = &rpm_clk_msm8917 }, + { .compatible = "qcom,rpmcc-msm8920", .data = &rpm_clk_msm8920 }, { .compatible = "qcom,rpmcc-msm8936", .data = &rpm_clk_msm8936 }, { .compatible = "qcom,rpmcc-msm8937", .data = &rpm_clk_msm8937 }, { .compatible = "qcom,rpmcc-msm8940", .data = &rpm_clk_msm8940 }, -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) 2026-07-23 1:24 [PATCH 0/2] clk: qcom: add MSM8920 RPM clock controller support Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/2] dt-bindings: clock: qcom,rpmcc: add MSM8920 Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/2] clk: qcom: smd-rpm: add MSM8920 support Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan ` (3 more replies) 2 siblings, 4 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan Initial upstream support for MSM8920 and the Motorola Moto E4 (perry). Depends on the separate qcom,rpmcc-msm8920 clk series (binding + clk-smd-rpm) for the MSM8920 rpmcc compatible used by msm8920.dtsi. This is a trimmed mainline-first subset of msm89x7-mainline/linux#48, rewritten so every phandle exists on qcom/for-next's msm8917 / pm8937 / pmi8950 (the fork DT assumed richer SoC/PMIC nodes that are not upstream yet). Included: regulators, eMMC/SD, USB OTG (gpio-id extcon), keys, RMI4 touch + reset-gpios, BMA253 (i2c-gpio), WCNSS (wcn3660b), PMI8950 WLED. Deferred follow-ups: DSI panel, IPA, QDSP6 audio, FG/smbcharger, modem. DTB build verified: msm8917-motorola-perry.dtb + msm8920-motorola-perry.dtb. Catherine Frederick (coolguy) (3): dt-bindings: arm: qcom: add MSM8920 and Motorola Moto E4 (perry) arm64: dts: qcom: add initial MSM8920 device tree arm64: dts: qcom: add initial Motorola Moto E4 (perry) support .../devicetree/bindings/arm/qcom.yaml | 7 + 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 + arch/arm64/boot/dts/qcom/msm8920.dtsi | 12 + 6 files changed, 473 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 create mode 100644 arch/arm64/boot/dts/qcom/msm8920.dtsi base-commit: a27464b0b99874d22b04a92186ab7ea9252c3847 -- 2.53.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/3] dt-bindings: arm: qcom: add MSM8920 and Motorola Moto E4 (perry) 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan ` (2 subsequent siblings) 3 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> Document the Motorola Moto E4 (perry) board compatible for MSM8917 and MSM8920, and add qcom,msm8920 to the SoC compatible list. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: split bindings into their own patch; add msm8920 SoC enum] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index f8c37096df46..5556f81c0af5 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -261,11 +261,17 @@ properties: - items: - enum: + - motorola,perry - xiaomi,riva - xiaomi,rolex - xiaomi,tiare - const: qcom,msm8917 + - items: + - enum: + - motorola,perry + - const: qcom,msm8920 + - items: - enum: - wingtech,wt82918hd @@ -1323,6 +1329,7 @@ allOf: - qcom,apq8094 - qcom,apq8096 - qcom,msm8917 + - qcom,msm8920 - qcom,msm8937 - qcom,msm8939 - qcom,msm8953 -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/3] arm64: dts: qcom: add initial MSM8920 device tree 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 3 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> MSM8920 is MSM8917 with a different RPM clock compatible (IPA clocks present in rpmcc-msm8920). Start with the minimal SoC dtsi: include msm8917.dtsi and override &rpmcc. IPA and other 8920-only peripherals are deferred until their drivers/bindings are upstream. Depends on the qcom,rpmcc-msm8920 binding/driver series. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: strip IPA node for initial upstream; rpmcc override only] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- arch/arm64/boot/dts/qcom/msm8920.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/msm8920.dtsi diff --git a/arch/arm64/boot/dts/qcom/msm8920.dtsi b/arch/arm64/boot/dts/qcom/msm8920.dtsi new file mode 100644 index 000000000000..f2747e5133f5 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8920.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2023, Dang Huynh <danct12@riseup.net> + * Copyright (c) 2026, Aneesh Pradhan <aneeshpradhan@acm.org> + */ + +#include "msm8917.dtsi" + +/* MSM8920 uses the MSM8917 RPM clock set plus IPA clocks (see rpmcc-msm8920). */ +&rpmcc { + compatible = "qcom,rpmcc-msm8920", "qcom,rpmcc"; +}; -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan @ 2026-07-23 1:24 ` Aneesh Pradhan 2026-07-23 1:34 ` sashiko-bot 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 3 siblings, 1 reply; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:24 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> 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), 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) <serenity@floorchan.org> [aneesh: rewrite against mainline msm8917/pm8937/pmi8950; drop fork-only nodes] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- 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..d92bd2863ef2 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -109,6 +109,8 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.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) += msm8917-motorola-perry.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 <serenity@floorchan.org> + * Copyright (c) 2026, Aneesh Pradhan <aneeshpradhan@acm.org> + */ + +#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 <aneeshpradhan@acm.org> + */ + +/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 <aneeshpradhan@acm.org> + */ + +/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 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support 2026-07-23 1:24 ` [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan @ 2026-07-23 1:34 ` sashiko-bot 0 siblings, 0 replies; 13+ messages in thread From: sashiko-bot @ 2026-07-23 1:34 UTC (permalink / raw) To: Aneesh Pradhan; +Cc: devicetree, robh, conor+dt Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Device Tree blob entries in the Makefile are not sorted alphabetically. -- --- Patch [3]: [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support --- commit f1e9e7f386e094ca8238575174ce1d5dde0b3f6c Author: Catherine Frederick (coolguy) <serenity@floorchan.org> arm64: dts: qcom: add initial Motorola Moto E4 (perry) support This commit adds MSM8917 and MSM8920 board files for the Motorola Moto E4 (perry) sharing a common dtsi. It includes an initial subset of peripherals such as regulators, eMMC/SD, USB OTG, and touchscreen, while deferring peripherals lacking mainline drivers. > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index e05414290d8e5..d92bd2863ef23 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -109,6 +109,8 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-yiming-uz801v3.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) += msm8917-motorola-perry.dtb > +dtb-$(CONFIG_ARCH_QCOM) += msm8920-motorola-perry.dtb [Severity: Low] This isn't a bug, but shouldn't these new device tree blobs be sorted alphabetically within the Makefile? It looks like msm8917-motorola-perry.dtb is being inserted after the msm8917-xiaomi-* entries. Placing it before msm8917-xiaomi-riva.dtb would follow the existing sorting convention and help minimize merge conflicts. -- Sashiko AI review · https://sashiko.dev/#/patchset/20260723012431.48499-1-aneeshpradhan@acm.org?part=3 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan ` (2 preceding siblings ...) 2026-07-23 1:24 ` [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan @ 2026-07-23 1:46 ` Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan ` (2 more replies) 3 siblings, 3 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:46 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan Initial upstream support for MSM8920 and the Motorola Moto E4 (perry). Depends on the separate qcom,rpmcc-msm8920 clk series (binding + clk-smd-rpm) for the MSM8920 rpmcc compatible used by msm8920.dtsi. This is a trimmed mainline-first subset of msm89x7-mainline/linux#48, rewritten so every phandle exists on qcom/for-next's msm8917 / pm8937 / pmi8950 (the fork DT assumed richer SoC/PMIC nodes that are not upstream yet). Included: regulators, eMMC/SD, USB OTG (gpio-id extcon), keys, RMI4 touch + reset-gpios, BMA253 (i2c-gpio), WCNSS (wcn3660b), PMI8950 WLED. Deferred follow-ups: DSI panel, IPA, QDSP6 audio, FG/smbcharger, modem. DTB build verified: msm8917-motorola-perry.dtb + msm8920-motorola-perry.dtb. Changes since v1: - Sort Makefile DTB entries alphabetically: place msm8917-motorola-perry.dtb before msm8917-xiaomi-*, keeping msm8920-motorola-perry.dtb after the msm8917 block (Sashiko review on v1 patch 3/3). Catherine Frederick (coolguy) (3): dt-bindings: arm: qcom: add MSM8920 and Motorola Moto E4 (perry) arm64: dts: qcom: add initial MSM8920 device tree arm64: dts: qcom: add initial Motorola Moto E4 (perry) support .../devicetree/bindings/arm/qcom.yaml | 7 + 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 + arch/arm64/boot/dts/qcom/msm8920.dtsi | 12 + 6 files changed, 473 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 create mode 100644 arch/arm64/boot/dts/qcom/msm8920.dtsi base-commit: a27464b0b99874d22b04a92186ab7ea9252c3847 -- 2.53.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/3] dt-bindings: arm: qcom: add MSM8920 and Motorola Moto E4 (perry) 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan @ 2026-07-23 1:46 ` Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan 2 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:46 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> Document the Motorola Moto E4 (perry) board compatible for MSM8917 and MSM8920, and add qcom,msm8920 to the SoC compatible list. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: split bindings into their own patch; add msm8920 SoC enum] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index f8c37096df46..5556f81c0af5 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -261,11 +261,17 @@ properties: - items: - enum: + - motorola,perry - xiaomi,riva - xiaomi,rolex - xiaomi,tiare - const: qcom,msm8917 + - items: + - enum: + - motorola,perry + - const: qcom,msm8920 + - items: - enum: - wingtech,wt82918hd @@ -1323,6 +1329,7 @@ allOf: - qcom,apq8094 - qcom,apq8096 - qcom,msm8917 + - qcom,msm8920 - qcom,msm8937 - qcom,msm8939 - qcom,msm8953 -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 2/3] arm64: dts: qcom: add initial MSM8920 device tree 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan @ 2026-07-23 1:46 ` Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan 2 siblings, 0 replies; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:46 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> MSM8920 is MSM8917 with a different RPM clock compatible (IPA clocks present in rpmcc-msm8920). Start with the minimal SoC dtsi: include msm8917.dtsi and override &rpmcc. IPA and other 8920-only peripherals are deferred until their drivers/bindings are upstream. Depends on the qcom,rpmcc-msm8920 binding/driver series. Signed-off-by: Catherine Frederick (coolguy) <serenity@floorchan.org> [aneesh: strip IPA node for initial upstream; rpmcc override only] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- arch/arm64/boot/dts/qcom/msm8920.dtsi | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/msm8920.dtsi diff --git a/arch/arm64/boot/dts/qcom/msm8920.dtsi b/arch/arm64/boot/dts/qcom/msm8920.dtsi new file mode 100644 index 000000000000..f2747e5133f5 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8920.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2023, Dang Huynh <danct12@riseup.net> + * Copyright (c) 2026, Aneesh Pradhan <aneeshpradhan@acm.org> + */ + +#include "msm8917.dtsi" + +/* MSM8920 uses the MSM8917 RPM clock set plus IPA clocks (see rpmcc-msm8920). */ +&rpmcc { + compatible = "qcom,rpmcc-msm8920", "qcom,rpmcc"; +}; -- 2.53.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan @ 2026-07-23 1:46 ` Aneesh Pradhan 2026-07-23 2:12 ` sashiko-bot 2 siblings, 1 reply; 13+ messages in thread From: Aneesh Pradhan @ 2026-07-23 1:46 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Catherine Frederick, linux-clk, Aneesh Pradhan From: "Catherine Frederick (coolguy)" <serenity@floorchan.org> 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) <serenity@floorchan.org> [aneesh: rewrite against mainline msm8917/pm8937/pmi8950; drop fork-only nodes; keep Makefile DTB entries alphabetically sorted] Signed-off-by: Aneesh Pradhan <aneeshpradhan@acm.org> --- 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 <serenity@floorchan.org> + * Copyright (c) 2026, Aneesh Pradhan <aneeshpradhan@acm.org> + */ + +#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 <aneeshpradhan@acm.org> + */ + +/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 <aneeshpradhan@acm.org> + */ + +/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 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support 2026-07-23 1:46 ` [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan @ 2026-07-23 2:12 ` sashiko-bot 0 siblings, 0 replies; 13+ messages in thread From: sashiko-bot @ 2026-07-23 2:12 UTC (permalink / raw) To: Aneesh Pradhan; +Cc: robh, devicetree, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] Critical pins for the touchscreen interrupt, sensor I2C bus, sensor interrupt, and regulator enable lack pinctrl configurations. - [Medium] Battery design capacity is incorrectly specified for the hardware. -- --- Patch [3]: [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support --- commit 456da8a21ca3d3b4649cf6cd9b340f36af9edbf2 Author: Catherine Frederick (coolguy) <serenity@floorchan.org> arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Adds MSM8917 and MSM8920 board files for the Motorola Moto E4 (perry) sharing a common dtsi. Includes regulators, eMMC/SD, USB OTG, gpio-keys, touchscreen, IMU, Wi-Fi, and WLED. > 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 0000000000000..1870958976fbe > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/msm8917-motorola-perry-common.dtsi > @@ -0,0 +1,412 @@ > +// SPDX-License-Identifier: GPL-2.0-only [ ... ] > + battery: battery { > + compatible = "simple-battery"; > + > + charge-full-design-microamp-hours = <4000000>; [Severity: Medium] Does the Moto E4 have a 4000 mAh battery? The design capacity here specifies 4000 mAh, but this device usually ships with a 2800 mAh battery. Could this incorrect capacity confuse the fuel gauge algorithms and lead to inaccurate state-of-charge calculations? > + constant-charge-current-max-microamp = <1000000>; > + voltage-min-design-microvolt = <3400000>; > + voltage-max-design-microvolt = <4400000>; > + }; [ ... ] > + 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)>; [Severity: Medium] Are we missing pinctrl configurations for the I2C bitbanging pins (gpio14, gpio15) and the IMU interrupt pin (gpio41) below? Relying on bootloader state for these pins could lead to initialization failures if they are left floating or improperly muxed. > + 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>; [ ... ] > + ts_default: ts-default-state { > + pins = "gpio64"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; [Severity: Medium] Should the touchscreen interrupt pin (gpio65) be configured in this state as well? The touchscreen node explicitly uses it: &blsp1_i2c3 { touchscreen@20 { interrupts = <65 IRQ_TYPE_EDGE_FALLING>; pinctrl-0 = <&ts_default>; reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>; } } Missing pinctrl on this falling-edge interrupt could result in an interrupt storm if the bootloader doesn't set the correct pin bias. > +}; -- Sashiko AI review · https://sashiko.dev/#/patchset/20260723014627.63310-1-aneeshpradhan@acm.org?part=3 ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-07-23 2:12 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-07-23 1:24 [PATCH 0/2] clk: qcom: add MSM8920 RPM clock controller support Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/2] dt-bindings: clock: qcom,rpmcc: add MSM8920 Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/2] clk: qcom: smd-rpm: add MSM8920 support Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan 2026-07-23 1:24 ` [PATCH 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan 2026-07-23 1:34 ` sashiko-bot 2026-07-23 1:46 ` [PATCH v2 0/3] arm64: dts: qcom: initial MSM8920 and Motorola Moto E4 (perry) Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 1/3] dt-bindings: arm: qcom: add " Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 2/3] arm64: dts: qcom: add initial MSM8920 device tree Aneesh Pradhan 2026-07-23 1:46 ` [PATCH v2 3/3] arm64: dts: qcom: add initial Motorola Moto E4 (perry) support Aneesh Pradhan 2026-07-23 2:12 ` sashiko-bot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox