From 9736e78227999bb9d48b64db12c24c1489aa7626 Mon Sep 17 00:00:00 2001 From: Gopikishan Thawre Date: Thu, 10 Sep 2026 14:44:31 +0530 Subject: [PATCH 1/4] dt-bindings: arm: qcom: Add LeMans Draco EVK compatible strings Add the compatible string for the Qualcomm LeMans Draco EVK board (SA8775P/QCS9100 SoC). The compatible chain is: qcom,lemans-draco-evk qcom,lemans-draco-evk-som qcom,qcs9100 qcom,sa8775p Signed-off-by: Gopikishan Thawre --- 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 ff8a35df7862d..67530e35b79aa 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -467,6 +467,13 @@ properties: - qcom,sa8775p-ride-r3 - const: qcom,sa8775p + - items: + - enum: + - qcom,lemans-draco-evk + - const: qcom,lemans-draco-evk-som + - const: qcom,qcs9100 + - const: qcom,sa8775p + - items: - enum: - qcom,lemans-evk From 885a81b3be393d4eb7fb4202806b3f0f5a88b7c6 Mon Sep 17 00:00:00 2001 From: Gopikishan Thawre Date: Thu, 10 Sep 2026 14:44:36 +0530 Subject: [PATCH 2/4] arm64: dts: qcom: Add lemans-draco-evk.dtb to Makefile Add build entry for the LeMans Draco EVK board DTB. Signed-off-by: Gopikishan Thawre --- arch/arm64/boot/dts/qcom/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 1c86e7e98f55d..3fb366f270396 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -45,6 +45,7 @@ dtb-$(CONFIG_ARCH_QCOM) += ipq9650-rdp488.dtb dtb-$(CONFIG_ARCH_QCOM) += kaanapali-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += kaanapali-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += lemans-evk.dtb +dtb-$(CONFIG_ARCH_QCOM) += lemans-draco-evk.dtb lemans-evk-camera-csi1-imx577-dtbs := lemans-evk.dtb lemans-evk-camera-csi1-imx577.dtbo lemans-evk-camera-dtbs := lemans-evk.dtb lemans-evk-camera.dtbo From 8db5519c7b6f64f608e6a2edeea2076395ae0a62 Mon Sep 17 00:00:00 2001 From: Gopikishan Thawre Date: Thu, 10 Sep 2026 14:44:43 +0530 Subject: [PATCH 3/4] arm64: dts: qcom: Add LeMans Draco EVK SOM device tree Add device tree for the LeMans Draco EVK System-on-Module (SOM) based on the SA8775P/QCS9100 SoC. The SOM includes: - Complete RPMH regulator configuration for three pmm8654au PMICs: pmic-id a: smps4/5/9 and ldo4/5/6/7/8/9 pmic-id c: ldo1/2/3/4/5/6/7/8/9 pmic-id e: smps4/7/9 and ldo6/8 - Firmware paths for QUP firmware and remote processors (ADSP, CDSP0) - Debug UART (uart0) - XO board clock at 38.4 MHz, sleep clock at 32.768 kHz Signed-off-by: Gopikishan Thawre --- .../boot/dts/qcom/lemans-draco-evk-som.dtsi | 317 ++++++++++++++++++ 1 file changed, 317 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi diff --git a/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi b/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi new file mode 100644 index 0000000000000..c84a79ef06220 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi @@ -0,0 +1,317 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ +/dts-v1/; + +#include +#include "lemans.dtsi" +#include "lemans-pmics.dtsi" +/ { + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; +}; + +&apps_rsc { + regulators-0 { + compatible = "qcom,pmm8654au-rpmh-regulators"; + qcom,pmic-id = "a"; + + vreg_s4a: smps4 { + regulator-name = "vreg_s4a"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1816000>; + regulator-initial-mode = ; + }; + + vreg_s5a: smps5 { + regulator-name = "vreg_s5a"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1996000>; + regulator-initial-mode = ; + }; + + vreg_s9a: smps9 { + regulator-name = "vreg_s9a"; + regulator-min-microvolt = <535000>; + regulator-max-microvolt = <1120000>; + regulator-initial-mode = ; + }; + + vreg_l4a: ldo4 { + regulator-name = "vreg_l4a"; + regulator-min-microvolt = <788000>; + regulator-max-microvolt = <1050000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l5a: ldo5 { + regulator-name = "vreg_l5a"; + regulator-min-microvolt = <870000>; + regulator-max-microvolt = <950000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l6a: ldo6 { + regulator-name = "vreg_l6a"; + regulator-min-microvolt = <870000>; + regulator-max-microvolt = <970000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l7a: ldo7 { + regulator-name = "vreg_l7a"; + regulator-min-microvolt = <720000>; + regulator-max-microvolt = <950000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l8a: ldo8 { + regulator-name = "vreg_l8a"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <3300000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l9a: ldo9 { + regulator-name = "vreg_l9a"; + regulator-min-microvolt = <2970000>; + regulator-max-microvolt = <3544000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + }; + + regulators-1 { + compatible = "qcom,pmm8654au-rpmh-regulators"; + qcom,pmic-id = "c"; + + vreg_l1c: ldo1 { + regulator-name = "vreg_l1c"; + regulator-min-microvolt = <1140000>; + regulator-max-microvolt = <1260000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l2c: ldo2 { + regulator-name = "vreg_l2c"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1100000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l3c: ldo3 { + regulator-name = "vreg_l3c"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l4c: ldo4 { + regulator-name = "vreg_l4c"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l5c: ldo5 { + regulator-name = "vreg_l5c"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l6c: ldo6 { + regulator-name = "vreg_l6c"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1980000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l7c: ldo7 { + regulator-name = "vreg_l7c"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l8c: ldo8 { + regulator-name = "vreg_l8c"; + regulator-min-microvolt = <2400000>; + regulator-max-microvolt = <3300000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l9c: ldo9 { + regulator-name = "vreg_l9c"; + regulator-min-microvolt = <1650000>; + regulator-max-microvolt = <2700000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + }; + + regulators-2 { + compatible = "qcom,pmm8654au-rpmh-regulators"; + qcom,pmic-id = "e"; + + vreg_s4e: smps4 { + regulator-name = "vreg_s4e"; + regulator-min-microvolt = <970000>; + regulator-max-microvolt = <1520000>; + regulator-initial-mode = ; + }; + + vreg_s7e: smps7 { + regulator-name = "vreg_s7e"; + regulator-min-microvolt = <1010000>; + regulator-max-microvolt = <1170000>; + regulator-initial-mode = ; + }; + + vreg_s9e: smps9 { + regulator-name = "vreg_s9e"; + regulator-min-microvolt = <300000>; + regulator-max-microvolt = <570000>; + regulator-initial-mode = ; + }; + + vreg_l6e: ldo6 { + regulator-name = "vreg_l6e"; + regulator-min-microvolt = <1280000>; + regulator-max-microvolt = <1450000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + + vreg_l8e: ldo8 { + regulator-name = "vreg_l8e"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1950000>; + regulator-initial-mode = ; + regulator-allow-set-load; + regulator-allowed-modes = ; + }; + }; +}; + +&gpu_zap_shader { + firmware-name = "qcom/sa8775p/a663_zap.mbn"; +}; + +&iris { + firmware-name = "qcom/vpu/vpu30_p4_s6_16mb.mbn"; + + status = "okay"; +}; + +&qupv3_id_0 { + firmware-name = "qcom/sa8775p/qupv3fw.elf"; + + status = "okay"; +}; + +&qupv3_id_1 { + firmware-name = "qcom/sa8775p/qupv3fw.elf"; + + status = "okay"; +}; + +&qupv3_id_2 { + firmware-name = "qcom/sa8775p/qupv3fw.elf"; + + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/sa8775p/adsp.mbn"; + + status = "okay"; +}; + +&remoteproc_cdsp0 { + firmware-name = "qcom/sa8775p/cdsp0.mbn"; + + status = "okay"; +}; + +&remoteproc_cdsp1 { + firmware-name = "qcom/sa8775p/cdsp1.mbn"; + + status = "okay"; +}; + +&remoteproc_gpdsp0 { + firmware-name = "qcom/sa8775p/gpdsp0.mbn"; + + status = "okay"; +}; + +&remoteproc_gpdsp1 { + firmware-name = "qcom/sa8775p/gpdsp1.mbn"; + + status = "okay"; +}; + +&sleep_clk { + clock-frequency = <32768>; +}; + +&uart0 { + status = "okay"; +}; + +&xo_board_clk { + clock-frequency = <38400000>; +}; From a394224e7f4b79cbd9b4a465d143d9093bc723a5 Mon Sep 17 00:00:00 2001 From: Gopikishan Thawre Date: Fri, 18 Sep 2026 13:53:28 +0530 Subject: [PATCH 4/4] arm64: dts: qcom: lemans-draco-evk: add device tree and board support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add top-level board device tree and full board support for the Qualcomm LeMans Draco EVK carrier board: GPIO expanders on &i2c2 (carrier board, not SOM): - Four 16-bit KTS1620EUAA-TR expanders (TCA6416-compatible) at 0x20–0x23 for camera/display MUX, PCIe/USB/DP MUX, camera OCP power enables, and USB2/PCIe power enables. - One 8-bit TCA9534APWR expander (PCA9534-compatible) at 0x38 (U445) for camera MCLK enables. - EEPROM (giantec,gt24c256c) at 0x50 with MAC address nvmem layout. - expander_int pinctrl state for TLMM gpio22 retained for future interrupt wiring. Peripheral nodes added to SOM DTSI: - uart10 as geni-debug-uart (console) - ufs_mem_hc / ufs_mem_phy with regulator assignments - usb_0, usb_0_hsphy, usb_0_qmpphy, usb_2, usb_2_hsphy - pmm8654au_2 GPIO states for USB interrupt and ID lines - mmc1 alias corrected (was mmc0); serial0 → uart10, serial2 → uart0 Remove pcie0, pcie0_phy, pcie1, pcie1_phy, ethernet0 alias and associated pinctrl states — PCIe and Ethernet not present on this board variant. Remoteproc SMMU stream IDs placed in lemans-draco-evk.dts (board-specific IOMMU mappings, not SOM-generic): adsp: SID 0x3000, mask 0x0 cdsp0: SID 0x21c0, mask 0x0400 cdsp1: SID 0x29c0, mask 0x0400 gpdsp0: SID 0x38a0, mask 0x0 gpdsp1: SID 0x38c0, mask 0x0 Upstream-Status: Pending Signed-off-by: Gopikishan Thawre --- .../boot/dts/qcom/lemans-draco-evk-som.dtsi | 104 +++++++++++-- arch/arm64/boot/dts/qcom/lemans-draco-evk.dts | 144 ++++++++++++++++++ 2 files changed, 233 insertions(+), 15 deletions(-) create mode 100644 arch/arm64/boot/dts/qcom/lemans-draco-evk.dts diff --git a/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi b/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi index c84a79ef06220..c70f85781bdc1 100644 --- a/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi +++ b/arch/arm64/boot/dts/qcom/lemans-draco-evk-som.dtsi @@ -2,14 +2,18 @@ /* * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ -/dts-v1/; +#include +#include #include #include "lemans.dtsi" #include "lemans-pmics.dtsi" + / { aliases { - serial0 = &uart0; + mmc1 = &sdhc; + serial0 = &uart10; + serial2 = &uart0; }; chosen { @@ -256,6 +260,29 @@ status = "okay"; }; +&pmm8654au_0_pon_resin { + linux,code = ; + status = "okay"; +}; + +&pmm8654au_2_gpios { + usb0_intr_state: usb0-intr-state { + pins = "gpio5"; + function = "normal"; + input-enable; + bias-pull-up; + power-source = <0>; + }; + + usb2_id: usb2-id-state { + pins = "gpio11"; + function = "normal"; + input-enable; + bias-pull-up; + power-source = <0>; + }; +}; + &qupv3_id_0 { firmware-name = "qcom/sa8775p/qupv3fw.elf"; @@ -274,41 +301,88 @@ status = "okay"; }; -&remoteproc_adsp { - firmware-name = "qcom/sa8775p/adsp.mbn"; +&sleep_clk { + clock-frequency = <32768>; +}; + +&tlmm { + qup_i2c11_default: qup-i2c11-state { + pins = "gpio48", "gpio49"; + function = "qup1_se4"; + drive-strength = <2>; + bias-pull-up; + }; + + sd_cd: sd-cd-state { + pins = "gpio36"; + function = "gpio"; + bias-pull-up; + }; + + usb_id: usb-id-state { + pins = "gpio50"; + function = "gpio"; + bias-pull-up; + }; +}; + +&uart0 { + status = "okay"; +}; + +&uart10 { + compatible = "qcom,geni-debug-uart"; + pinctrl-0 = <&qup_uart10_default>; + pinctrl-names = "default"; status = "okay"; }; -&remoteproc_cdsp0 { - firmware-name = "qcom/sa8775p/cdsp0.mbn"; +&ufs_mem_hc { + reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; + vcc-supply = <&vreg_l8a>; + vcc-max-microamp = <1100000>; + vccq-supply = <&vreg_l4c>; + vccq-max-microamp = <1200000>; status = "okay"; }; -&remoteproc_cdsp1 { - firmware-name = "qcom/sa8775p/cdsp1.mbn"; +&ufs_mem_phy { + vdda-phy-supply = <&vreg_l4a>; + vdda-pll-supply = <&vreg_l1c>; status = "okay"; }; -&remoteproc_gpdsp0 { - firmware-name = "qcom/sa8775p/gpdsp0.mbn"; +&usb_0 { + status = "okay"; +}; + +&usb_0_hsphy { + vdda-pll-supply = <&vreg_l7a>; + vdda18-supply = <&vreg_l6c>; + vdda33-supply = <&vreg_l9a>; status = "okay"; }; -&remoteproc_gpdsp1 { - firmware-name = "qcom/sa8775p/gpdsp1.mbn"; +&usb_0_qmpphy { + vdda-phy-supply = <&vreg_l1c>; + vdda-pll-supply = <&vreg_l7a>; status = "okay"; }; -&sleep_clk { - clock-frequency = <32768>; +&usb_2 { + status = "okay"; }; -&uart0 { +&usb_2_hsphy { + vdda-pll-supply = <&vreg_l7a>; + vdda18-supply = <&vreg_l6c>; + vdda33-supply = <&vreg_l9a>; + status = "okay"; }; diff --git a/arch/arm64/boot/dts/qcom/lemans-draco-evk.dts b/arch/arm64/boot/dts/qcom/lemans-draco-evk.dts new file mode 100644 index 0000000000000..e7a8a958f458d --- /dev/null +++ b/arch/arm64/boot/dts/qcom/lemans-draco-evk.dts @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ +/dts-v1/; + +#include "lemans-draco-evk-som.dtsi" + +/ { + model = "Qualcomm Technologies, Inc. Lemans Draco EVK"; + compatible = "qcom,lemans-draco-evk", "qcom,lemans-draco-evk-som", "qcom,qcs9100", + "qcom,sa8775p"; + chassis-type = "embedded"; +}; + +&i2c2 { + status = "okay"; + + /* + * U235: 16-bit GPIO expander (KTS1620EUAA-TR, TCA6416-compatible) + * Address 0x20 (A2=A1=A0=GND). Camera/display MUX select outputs. + * INT routed to PSOC — no SoC TLMM interrupt connection. + */ + expander0: gpio@20 { + compatible = "ti,tca6416"; + reg = <0x20>; + #gpio-cells = <2>; + gpio-controller; + }; + + /* + * U416: 16-bit GPIO expander (KTS1620EUAA-TR, TCA6416-compatible) + * Address 0x21 (A0=VDD_I2C, A2=A1=GND). PCIe/USB/DP MUX select outputs. + * INT routed to PSOC — no SoC TLMM interrupt connection. + * TODO: update usb0_vbus gpio = <&expander1 2 ...> and + * vreg_sdc gpios = <&expander1 7 ...> once signal mapping + * is confirmed from schematic (U416 pin-to-net trace). + */ + expander1: gpio@21 { + compatible = "ti,tca6416"; + reg = <0x21>; + #gpio-cells = <2>; + gpio-controller; + }; + + /* + * U236: 16-bit GPIO expander (KTS1620EUAA-TR, TCA6416-compatible) + * Address 0x22 (A1=VDD, A2=A0=GND). Camera OCP power enables, + * USB power enables and detection signals. + * INT_N → EXP2_INT → SoC TLMM gpio22. + */ + expander2: gpio@22 { + compatible = "ti,tca6416"; + reg = <0x22>; + #gpio-cells = <2>; + gpio-controller; + }; + + /* + * U238: 16-bit GPIO expander (KTS1620EUAA-TR, TCA6416-compatible) + * Address 0x23 (A1=VDD, A0=VDD, A2=GND). USB2 power, PCIe power + * enables, display/SAL-ETH power enables. + * INT_N → EXP3_INT → SoC TLMM gpio22. + */ + expander3: gpio@23 { + compatible = "ti,tca6416"; + reg = <0x23>; + #gpio-cells = <2>; + gpio-controller; + }; + + /* + * U445: 8-bit GPIO expander (TCA9534APWR, PCA9534-compatible) + * Address 0x38 (A2=A1=A0=GND, base 0x38). Camera MCLK enables on + * P0–P4; P5–P7 are unconnected test points. + * INT_N → IOEXP_INT → SoC TLMM gpio22. + */ + expander4: gpio@38 { + compatible = "nxp,pca9534"; + reg = <0x38>; + #gpio-cells = <2>; + gpio-controller; + }; + + eeprom@50 { + compatible = "giantec,gt24c256c", "atmel,24c256"; + reg = <0x50>; + pagesize = <64>; + + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + mac_addr0: mac-addr@0 { + reg = <0x0 0x6>; + }; + }; + }; +}; + +&tlmm { + expander_int: expander-int-state { + pins = "gpio22"; + function = "gpio"; + bias-pull-up; + input-enable; + }; +}; + +&remoteproc_adsp { + firmware-name = "qcom/sa8775p/adsp.mbn"; + iommus = <&apps_smmu 0x3000 0x0>; + + status = "okay"; +}; + +&remoteproc_cdsp0 { + firmware-name = "qcom/sa8775p/cdsp0.mbn"; + iommus = <&apps_smmu 0x21c0 0x0400>; + + status = "okay"; +}; + +&remoteproc_cdsp1 { + firmware-name = "qcom/sa8775p/cdsp1.mbn"; + iommus = <&apps_smmu 0x29c0 0x0400>; + + status = "okay"; +}; + +&remoteproc_gpdsp0 { + firmware-name = "qcom/sa8775p/gpdsp0.mbn"; + iommus = <&apps_smmu 0x38a0 0x0>; + + status = "okay"; +}; + +&remoteproc_gpdsp1 { + firmware-name = "qcom/sa8775p/gpdsp1.mbn"; + iommus = <&apps_smmu 0x38c0 0x0>; + + status = "okay"; +};