mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/2] dt-bindings: arm: qcom: Add Motorola Moto G10
  2026-10-22 21:18 [PATCH 0/2] arm64: dts: qcom: Add initial Motorola Moto G10 support Michael McAllister
@ 2026-10-22 20:39 ` Michael McAllister
  2026-10-22 20:40 ` [PATCH 2/2] arm64: dts: " Michael McAllister
  1 sibling, 0 replies; 3+ messages in thread
From: Michael McAllister @ 2026-10-22 20:39 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel

Document the Motorola Moto G10 (capri), a smartphone based on the
Qualcomm Snapdragon 460 (SM4250).

Signed-off-by: Michael McAllister <me@michaelmcallister.org>
---
 Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 121ca557ce..963fd482be 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -1051,6 +1051,7 @@ properties:
 
       - items:
           - enum:
+              - motorola,capri
               - oneplus,billie2
           - const: qcom,sm4250
 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/2] arm64: dts: qcom: Add Motorola Moto G10
  2026-10-22 21:18 [PATCH 0/2] arm64: dts: qcom: Add initial Motorola Moto G10 support Michael McAllister
  2026-10-22 20:39 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Motorola Moto G10 Michael McAllister
@ 2026-10-22 20:40 ` Michael McAllister
  1 sibling, 0 replies; 3+ messages in thread
From: Michael McAllister @ 2026-10-22 20:40 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel

Add an initial board description for the SM4250-based Motorola Moto G10
(codenamed capri), including eMMC, USB-C, buttons, GPU, Wi-Fi and
Bluetooth. Use the firmware framebuffer until native panel support is
available.

Describe the board-specific firmware carveouts and PSCI state IDs, and
use the shared PM6125 and PMI632 definitions. Put the modem, ADSP and
GPU firmware paths under qcom/motorola/capri/.

Panel, touchscreen, amplifier, sound-card and battery-monitor support
still depend on local drivers and are left for separate submissions.

Signed-off-by: Michael McAllister <me@michaelmcallister.org>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/sm4250-motorola-capri.dts   | 452 ++++++++++++++++++
 2 files changed, 453 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sm4250-motorola-capri.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 88230c4e00..6f2dd88a14 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -383,6 +383,7 @@ shikra-iqs-evk-imx577-camera-dtbs	:= shikra-iqs-evk.dtb shikra-iqs-evk-imx577-ca
 dtb-$(CONFIG_ARCH_QCOM)	+= shikra-cqm-evk-imx577-camera.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= shikra-cqs-evk-imx577-camera.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= shikra-iqs-evk-imx577-camera.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= sm4250-motorola-capri.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm4250-oneplus-billie2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm4450-qrd.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sm6115-fxtec-pro1x.dtb
diff --git a/arch/arm64/boot/dts/qcom/sm4250-motorola-capri.dts b/arch/arm64/boot/dts/qcom/sm4250-motorola-capri.dts
new file mode 100644
index 0000000000..b079f0cdc8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm4250-motorola-capri.dts
@@ -0,0 +1,452 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2026 Michael McAllister <me@michaelmcallister.org>
+ *
+ * PM6125 regulator definitions derived from sm4250-oneplus-billie2.dts:
+ * Copyright (c) 2021 Iskren Chernev <iskren.chernev@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "sm4250.dtsi"
+#include "pm6125.dtsi"
+#include "pmi632.dtsi"
+
+/ {
+	model = "Motorola Moto G10";
+	compatible = "motorola,capri", "qcom,sm4250";
+
+	/* Used by the bootloader to select the board. */
+	qcom,msm-id = <0x1a1 0x10000>;
+	qcom,board-id = <0 0xb200>;
+
+	aliases {
+		display0 = &framebuffer0;
+		mmc0 = &sdhc_1;
+		serial0 = &uart3;
+	};
+
+	chosen {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		stdout-path = "display0";
+
+		framebuffer0: framebuffer@5c000000 {
+			compatible = "simple-framebuffer";
+			reg = <0 0x5c000000 0 (720 * 1600 * 4)>;
+			display = <&mdss>;
+			format = "a8r8g8b8";
+			height = <1600>;
+			stride = <(720 * 4)>;
+			vddio-supply = <&vreg_l9a>;
+			width = <720>;
+		};
+	};
+
+	gpio-keys {
+		compatible = "gpio-keys";
+		pinctrl-0 = <&volume_up_default>;
+		pinctrl-names = "default";
+
+		key-volume-up {
+			debounce-interval = <15>;
+			gpios = <&pm6125_gpios 5 GPIO_ACTIVE_LOW>;
+			label = "Volume Up";
+			linux,code = <KEY_VOLUMEUP>;
+			wakeup-source;
+		};
+	};
+};
+
+/* The stock firmware uses CPU mode 3 and affinity level 1 for these states. */
+&cluster_0_sleep_0 {
+	arm,psci-suspend-param = <0x41000023>;
+};
+
+&cluster_0_sleep_1 {
+	arm,psci-suspend-param = <0x41000043>;
+};
+
+&cluster_1_sleep_0 {
+	arm,psci-suspend-param = <0x41000023>;
+};
+
+&cluster_1_sleep_1 {
+	arm,psci-suspend-param = <0x41000043>;
+};
+
+&gpu {
+	status = "okay";
+};
+
+&gpu_zap_shader {
+	firmware-name = "qcom/motorola/capri/a610_zap.mdt";
+};
+
+&pil_cdsp_mem {
+	reg = <0 0x51a00000 0 0x800000>;
+};
+
+&pm6125_gpios {
+	volume_up_default: volume-up-state {
+		pins = "gpio5";
+		function = "normal";
+		bias-pull-up;
+		input-enable;
+		power-source = <0>;
+	};
+};
+
+&pmi632_typec {
+	status = "okay";
+
+	connector {
+		compatible = "usb-c-connector";
+		data-role = "dual";
+		pd-disable;
+		power-role = "dual";
+		self-powered;
+		typec-power-opmode = "default";
+		vbus-supply = <&pmi632_vbus>;
+
+		port {
+			pmi632_hs_in: endpoint {
+				remote-endpoint = <&usb_dwc3_hs>;
+			};
+		};
+	};
+};
+
+&pmi632_vbus {
+	regulator-min-microamp = <500000>;
+	regulator-max-microamp = <500000>;
+
+	status = "okay";
+};
+
+&pon_pwrkey {
+	status = "okay";
+};
+
+&pon_resin {
+	linux,code = <KEY_VOLUMEDOWN>;
+
+	status = "okay";
+};
+
+&qupv3_id_0 {
+	status = "okay";
+};
+
+&remoteproc_adsp {
+	firmware-name = "qcom/motorola/capri/adsp2.mdt";
+
+	status = "okay";
+};
+
+&remoteproc_mpss {
+	firmware-name = "qcom/motorola/capri/modem.mdt";
+
+	status = "okay";
+};
+
+&reserved_memory {
+	/delete-node/ memory@53800000;
+	/delete-node/ memory@56100000;
+	/delete-node/ memory@56110000;
+	/delete-node/ memory@56115000;
+
+	/* The ADSP and following carveouts differ from the SM6115 defaults. */
+	pil_adsp_mem: memory@52200000 {
+		reg = <0 0x52200000 0 0x1c00000>;
+		no-map;
+	};
+
+	pil_ipa_fw_mem: memory@53e00000 {
+		reg = <0 0x53e00000 0 0x10000>;
+		no-map;
+	};
+
+	pil_ipa_gsi_mem: memory@53e10000 {
+		reg = <0 0x53e10000 0 0x5000>;
+		no-map;
+	};
+
+	pil_gpu_mem: memory@53e15000 {
+		reg = <0 0x53e15000 0 0x2000>;
+		no-map;
+	};
+
+	/* Bootloader debug data. */
+	memory@aef9d800 {
+		reg = <0 0xaef9d800 0 0x62800>;
+		no-map;
+	};
+
+	ramoops@af000000 {
+		compatible = "ramoops";
+		reg = <0 0xaf000000 0 0xbf800>;
+		console-size = <0x40000>;
+		pmsg-size = <0x40000>;
+		record-size = <0x20000>;
+	};
+};
+
+&rpm_requests {
+	regulators-0 {
+		compatible = "qcom,rpm-pm6125-regulators";
+
+		vreg_s6a: s6 {
+			regulator-min-microvolt = <320000>;
+			regulator-max-microvolt = <1456000>;
+		};
+
+		vreg_s7a: s7 {
+			regulator-min-microvolt = <1280000>;
+			regulator-max-microvolt = <2040000>;
+		};
+
+		vreg_s8a: s8 {
+			regulator-min-microvolt = <1064000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		vreg_l1a: l1 {
+			regulator-min-microvolt = <952000>;
+			regulator-max-microvolt = <1152000>;
+		};
+
+		vreg_l4a: l4 {
+			regulator-min-microvolt = <488000>;
+			regulator-max-microvolt = <1000000>;
+		};
+
+		vreg_l5a: l5 {
+			regulator-min-microvolt = <1648000>;
+			regulator-max-microvolt = <3056000>;
+		};
+
+		vreg_l6a: l6 {
+			regulator-min-microvolt = <576000>;
+			regulator-max-microvolt = <656000>;
+		};
+
+		vreg_l7a: l7 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		vreg_l8a: l8 {
+			/* Handset ICNSS DT overrides CX/MX to 640 mV. */
+			regulator-min-microvolt = <640000>;
+			regulator-max-microvolt = <640000>;
+		};
+
+		vreg_l9a: l9 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			/* Display and touch share this rail with Bluetooth. */
+			regulator-boot-on;
+		};
+
+		vreg_l10a: l10 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1904000>;
+		};
+
+		vreg_l11a: l11 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1952000>;
+		};
+
+		vreg_l12a: l12 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <1984000>;
+		};
+
+		vreg_l13a: l13 {
+			regulator-min-microvolt = <1504000>;
+			regulator-max-microvolt = <1952000>;
+		};
+
+		vreg_l14a: l14 {
+			regulator-min-microvolt = <1704000>;
+			regulator-max-microvolt = <1904000>;
+		};
+
+		vreg_l15a: l15 {
+			regulator-min-microvolt = <2920000>;
+			regulator-max-microvolt = <3232000>;
+		};
+
+		vreg_l16a: l16 {
+			/* ICNSS WCN3990 XO supply setting. */
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		vreg_l17a: l17 {
+			regulator-min-microvolt = <1304000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		vreg_l18a: l18 {
+			regulator-min-microvolt = <1104000>;
+			regulator-max-microvolt = <1304000>;
+		};
+
+		vreg_l19a: l19 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		vreg_l20a: l20 {
+			regulator-min-microvolt = <1624000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		vreg_l21a: l21 {
+			regulator-min-microvolt = <2400000>;
+			regulator-max-microvolt = <3544000>;
+		};
+
+		vreg_l22a: l22 {
+			regulator-min-microvolt = <2952000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		vreg_l23a: l23 {
+			regulator-min-microvolt = <3296000>;
+			regulator-max-microvolt = <3304000>;
+		};
+
+		vreg_l24a: l24 {
+			regulator-min-microvolt = <2704000>;
+			regulator-max-microvolt = <3544000>;
+		};
+	};
+};
+
+&sdhc_1 {
+	pinctrl-0 = <&sdc1_state_on>;
+	pinctrl-1 = <&sdc1_state_off>;
+	pinctrl-names = "default", "sleep";
+	vmmc-supply = <&vreg_l24a>;
+	vqmmc-supply = <&vreg_l11a>;
+	max-frequency = <50000000>;
+	non-removable;
+
+	status = "okay";
+};
+
+&sleep_clk {
+	clock-frequency = <32764>;
+};
+
+&tlmm {
+	gpio-reserved-ranges = <14 4>;
+
+	bt_uart_default: bt-uart-default-state {
+		cts-pins {
+			pins = "gpio8";
+			function = "qup3";
+			bias-disable;
+			drive-strength = <2>;
+		};
+
+		rts-pins {
+			pins = "gpio9";
+			function = "qup3";
+			bias-pull-down;
+			drive-strength = <2>;
+		};
+
+		tx-rx-pins {
+			pins = "gpio10", "gpio11";
+			function = "qup3";
+			/* Keep RX idle high while the controller TX is tristated. */
+			bias-pull-up;
+			drive-strength = <2>;
+		};
+	};
+
+	bt_uart_sleep: bt-uart-sleep-state {
+		cts-rts-pins {
+			pins = "gpio8", "gpio9";
+			function = "gpio";
+			bias-pull-down;
+			drive-strength = <2>;
+		};
+
+		tx-rx-pins {
+			pins = "gpio10", "gpio11";
+			function = "gpio";
+			bias-pull-up;
+			drive-strength = <2>;
+		};
+	};
+};
+
+&uart3 {
+	interrupts-extended = <&intc GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+			      <&tlmm 11 IRQ_TYPE_EDGE_FALLING>;
+	pinctrl-0 = <&bt_uart_default>;
+	pinctrl-1 = <&bt_uart_sleep>;
+	pinctrl-names = "default", "sleep";
+
+	status = "okay";
+
+	bluetooth {
+		compatible = "qcom,wcn3950-bt";
+		max-speed = <3000000>;
+		vddch0-supply = <&vreg_l23a>;
+		vddio-supply = <&vreg_l9a>;
+		vddrf-supply = <&vreg_l17a>;
+		vddxo-supply = <&vreg_l16a>;
+	};
+};
+
+&usb {
+	/* The connector exposes only the USB 2.0 data pair. */
+	qcom,select-utmi-as-pipe-clk;
+
+	status = "okay";
+};
+
+&usb_dwc3 {
+	dr_mode = "otg";
+	maximum-speed = "high-speed";
+	phy-names = "usb2-phy";
+	phys = <&usb_hsphy>;
+	role-switch-default-mode = "peripheral";
+};
+
+&usb_dwc3_hs {
+	remote-endpoint = <&pmi632_hs_in>;
+};
+
+&usb_hsphy {
+	vdd-supply = <&vreg_l4a>;
+	vdda-phy-dpdm-supply = <&vreg_l15a>;
+	vdda-pll-supply = <&vreg_l12a>;
+
+	status = "okay";
+};
+
+&wifi {
+	vdd-0.8-cx-mx-supply = <&vreg_l8a>;
+	vdd-1.3-rfa-supply = <&vreg_l17a>;
+	vdd-1.8-xo-supply = <&vreg_l16a>;
+	vdd-3.3-ch0-supply = <&vreg_l23a>;
+	qcom,calibration-variant = "Motorola_Capri";
+
+	status = "okay";
+};
+
+&xo_board {
+	clock-frequency = <19200000>;
+};

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 0/2] arm64: dts: qcom: Add initial Motorola Moto G10 support
@ 2026-10-22 21:18 Michael McAllister
  2026-10-22 20:39 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Motorola Moto G10 Michael McAllister
  2026-10-22 20:40 ` [PATCH 2/2] arm64: dts: " Michael McAllister
  0 siblings, 2 replies; 3+ messages in thread
From: Michael McAllister @ 2026-10-22 21:18 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
	devicetree, linux-kernel

This series adds an initial device tree for the Motorola Moto G10
(capri), based on the Qualcomm Snapdragon 460 (SM4250). It adds the board
compatible and describes eMMC, USB-C, power and volume keys, the firmware
framebuffer, regulators, GPU, Wi-Fi, Bluetooth and remote processors.

The board uses the shared PM6125 and PMI632 definitions, with its own
reserved-memory layout and firmware PSCI state IDs. Modem, ADSP and GPU
firmware paths are namespaced under qcom/motorola/capri/.

Native panel, touchscreen, speaker and battery support need separate
driver and binding submissions and are outside this series.

Based on Qualcomm arm64-for-7.4 (Linux 7.3-rc1). Binding and full DT schema
checks pass. The W=1 DTB build reports an inherited unused DSI address/size-
cells warning in sm6115.dtsi, also reproduced with OnePlus Billie2.

Runtime checks covered booting with all eight CPUs, read-only eMMC access
and USB ECM transfers. simpledrm and the power/volume input devices
registered. Thermal readings and an active watchdog were observed.
Physical button events and visible framebuffer output remain unconfirmed.
GPU, Wi-Fi, Bluetooth, remote processors and suspend were not exercised;
the minimal RAM image contained no wireless/DSP firmware or modules.

The test ran without a panic or warning backtrace. A PSCI PC-mode firmware
warning also occurs with the phone's installed kernel; suspend and deeper
idle states remain untested.

For the stock Android bootloader, testing used out-of-tree handoff code
to select this DTB while retaining the firmware RAM map, initramfs and
factory Wi-Fi address, plus an arm64 Image alignment wrapper. That code
is not included here. No other device-specific driver patches were used.

Michael McAllister (2):
  dt-bindings: arm: qcom: Add Motorola Moto G10
  arm64: dts: qcom: Add Motorola Moto G10

 .../devicetree/bindings/arm/qcom.yaml         |   1 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/sm4250-motorola-capri.dts   | 452 ++++++++++++++++++
 3 files changed, 454 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sm4250-motorola-capri.dts


base-commit: d053e38e614fb2e383b298ce8fc308a780d7f209

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-22 21:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-22 21:18 [PATCH 0/2] arm64: dts: qcom: Add initial Motorola Moto G10 support Michael McAllister
2026-10-22 20:39 ` [PATCH 1/2] dt-bindings: arm: qcom: Add Motorola Moto G10 Michael McAllister
2026-10-22 20:40 ` [PATCH 2/2] arm64: dts: " Michael McAllister

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®