From nobody Mon Feb 9 09:09:52 2026 Received: from out-189.mta1.migadu.com (out-189.mta1.migadu.com [95.215.58.189]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1AE793C1FCC for ; Tue, 20 Jan 2026 23:44:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.189 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768952676; cv=none; b=EmfoWozXRwf655RJivHJTEiRteE5TLTYctnFJtd2C3QB7ZFxGamPf9r8vMmo/ZJ5ANfp3uUzji22podF9v6l5rxFqnl22gczNjqmKjb9IkxlF8YFt/coTdH8Q/85vokCLyl+2Chen66rjZ5CXuAkWk5NHtSz65NXF5iTGJokOW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768952676; c=relaxed/simple; bh=0PJdZ9vGgyJh/ltWqbsp1Ulaq7Eb8KEmGEwA8+tb3TI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=c/KX/gBwvnutfADlok9oxp0H5sCUUay4vCPvWeEzi6bUQOxMCs8bvEN1LF8HAgmWqJv2rDAPmLgLSNWmH6BExLhXpPfrrunesIEeLTYHYIAJ3GTyJieH4e0cLQOKBtzFDEB78hy6rPWaUg1++s0jltuWGa3Z2NF4OkC6JAs3/G0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=packett.cool; spf=pass smtp.mailfrom=packett.cool; dkim=pass (2048-bit key) header.d=packett.cool header.i=@packett.cool header.b=AgVEKruS; arc=none smtp.client-ip=95.215.58.189 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=packett.cool Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=packett.cool Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=packett.cool header.i=@packett.cool header.b="AgVEKruS" X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=packett.cool; s=key1; t=1768952671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=glWpU3aWRXnN/bVJnblDUWGbbAQqe0FM7UkTDBj24bM=; b=AgVEKruSJWgzLfcJ5/YL2xra0ut62qmxXf51C1tcFprT5+GaWwcARzN/bQ4XeXRsT1h6Lw YxTRiDpv1np7dR5kFdDJB655vGBV/Q6ws+qM6D8M+9ykRhDhk6yxsPqSgonlWGCi66xc1n Z14o/Iy8CTUTd+rF+M0oTxGi+FMJNB5gIwyINSkApsyB0Vh1Cwx/GzkBO/f1VnEPqjSy9x WG9cIZt/yLSVEOol5ylh/EXUrqhhoa3NTCct+vcJ415JQqADF6fjSqi1aK83wePKAquNmA iXLSnLmovBCMstMfh1aO4Nl6PHtaomehYZ2FHRoGjJrYwossO+Am1S9mpFuIsg== From: Val Packett To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , cros-qcom-dts-watchers@chromium.org Cc: Val Packett , Dmitry Baryshkov , Neil Armstrong , Konrad Dybcio , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 6/7] arm64: dts: qcom: Add support for ECS LIVA QC710 Date: Tue, 20 Jan 2026 20:30:12 -0300 Message-ID: <20260120234029.419825-10-val@packett.cool> In-Reply-To: <20260120234029.419825-2-val@packett.cool> References: <20260120234029.419825-2-val@packett.cool> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Migadu-Flow: FLOW_OUT Content-Type: text/plain; charset="utf-8" Add a device tree for the ECS LIVA QC710 (Snapdragon 7c) mini PC/devkit. Working: - Wi-Fi (wcn3990 hw1.0) - Bluetooth - USB Type-A (USB3 and USB2) - Ethernet (over USB2) - HDMI Display - eMMC - SDHC (microSD slot) Not included: - HDMI Audio - EC (IT8987) Signed-off-by: Val Packett Reviewed-by: Konrad Dybcio --- arch/arm64/boot/dts/qcom/Makefile | 2 + .../boot/dts/qcom/sc7180-ecs-liva-qc710.dts | 617 ++++++++++++++++++ 2 files changed, 619 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/sc7180-ecs-liva-qc710.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index a5d6f451f85c..09da15f97e23 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -168,6 +168,8 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D sa8775p-ride.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D sa8775p-ride-r3.dtb sc7180-acer-aspire1-el2-dtbs :=3D sc7180-acer-aspire1.dtb sc7180-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) +=3D sc7180-acer-aspire1.dtb sc7180-acer-aspire1-e= l2.dtb +sc7180-ecs-liva-qc710-el2-dtbs :=3D sc7180-ecs-liva-qc710.dtb sc7180-el2.d= tbo +dtb-$(CONFIG_ARCH_QCOM) +=3D sc7180-ecs-liva-qc710.dtb sc7180-ecs-liva-qc7= 10-el2.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D sc7180-idp.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D sc7180-trogdor-coachz-r1.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D sc7180-trogdor-coachz-r1-lte.dtb diff --git a/arch/arm64/boot/dts/qcom/sc7180-ecs-liva-qc710.dts b/arch/arm6= 4/boot/dts/qcom/sc7180-ecs-liva-qc710.dts new file mode 100644 index 000000000000..379ed3031e02 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/sc7180-ecs-liva-qc710.dts @@ -0,0 +1,617 @@ +// SPDX-License-Identifier: BSD-3-Clause + +/dts-v1/; + +#include +#include +#include + +#include "sc7180.dtsi" + +#include "pm6150.dtsi" +#include "pm6150l.dtsi" + +/delete-node/ &tz_mem; +/delete-node/ &ipa_fw_mem; + +/ { + model =3D "ECS LIVA QC710"; + compatible =3D "ecs,liva-qc710", "qcom,sc7180"; + chassis-type =3D "desktop"; + + aliases { + bluetooth0 =3D &bluetooth; + hsuart0 =3D &uart3; + wifi0 =3D &wifi; + }; + + hdmi-bridge { + compatible =3D "algoltek,ag6311"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + hdmi_bridge_dp_in: endpoint { + remote-endpoint =3D <&usb_1_qmpphy_dp_out>; + }; + }; + + port@1 { + reg =3D <1>; + + hdmi_bridge_tmds_out: endpoint { + remote-endpoint =3D <&hdmi_con>; + }; + }; + }; + }; + + hdmi-connector { + compatible =3D "hdmi-connector"; + type =3D "a"; + + port { + hdmi_con: endpoint { + remote-endpoint =3D <&hdmi_bridge_tmds_out>; + }; + }; + }; + + reserved-memory { + gpu_mem: zap-shader@80840000 { + reg =3D <0x0 0x80840000 0 0x2000>; + no-map; + }; + + venus_mem: venus@85b00000 { + reg =3D <0x0 0x85b00000 0 0x500000>; + no-map; + }; + + mpss_mem: mpss@86000000 { + reg =3D <0x0 0x86000000 0x0 0x2000000>; + no-map; + }; + + adsp_mem: adsp@8e400000 { + reg =3D <0x0 0x8e400000 0x0 0x2800000>; + no-map; + }; + + wlan_mem: wlan@93900000 { + reg =3D <0x0 0x93900000 0x0 0x200000>; + no-map; + }; + }; + + usb_a_connector: usb-a-connector { + compatible =3D "usb-a-connector"; + + port { + usb_a_connector_ss_in: endpoint { + remote-endpoint =3D <&usb_1_qmpphy_usb_ss_out>; + }; + }; + }; +}; + +&gpu { + status =3D "okay"; +}; + +&gpu_zap_shader { + firmware-name =3D "qcom/sc7180/ecs/liva-qc710/qcdxkmsuc7180.mbn"; +}; + +&mdss { + status =3D "okay"; +}; + +&mdss_dp { + pinctrl-0 =3D <&dp_hot_plug_det>; + pinctrl-names =3D "default"; + + status =3D "okay"; +}; + +&mdss_dp_out { + data-lanes =3D <0 1>; + remote-endpoint =3D <&usb_1_qmpphy_dp_in>; +}; + +&pm6150_rtc { + qcom,uefi-rtc-info; + + status =3D "okay"; +}; + +&qfprom { + vcc-supply =3D <&vreg_l11a_1p8>; +}; + +&qupv3_id_0 { + status =3D "okay"; +}; + +&qupv3_id_1 { + status =3D "okay"; +}; + +&remoteproc_adsp { + memory-region =3D <&adsp_mem>; + firmware-name =3D "qcom/sc7180/ecs/liva-qc710/qcadsp7180.mbn"; + + status =3D "okay"; +}; + +&remoteproc_mpss { + firmware-name =3D "qcom/sc7180/ecs/liva-qc710/qcmpss7180_nm.mbn"; + + status =3D "okay"; +}; + +&sdhc_1 { + pinctrl-0 =3D <&sdc1_default>; + pinctrl-1 =3D <&sdc1_sleep>; + pinctrl-names =3D "default", "sleep"; + vmmc-supply =3D <&vreg_l19a_2p9>; + vqmmc-supply =3D <&vreg_l12a_1p8>; + + status =3D "okay"; +}; + +&sdhc_2 { + pinctrl-0 =3D <&sdc2_default>; + pinctrl-1 =3D <&sdc2_sleep>; + pinctrl-names =3D "default", "sleep"; + vmmc-supply =3D <&vreg_l9c_2p9>; + vqmmc-supply =3D <&vreg_l6c_2p9>; + + cd-gpios =3D <&tlmm 69 GPIO_ACTIVE_LOW>; + + status =3D "okay"; +}; + +&uart3 { + /delete-property/ interrupts; + interrupts-extended =3D <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>, + <&tlmm 41 IRQ_TYPE_EDGE_FALLING>; + + pinctrl-1 =3D <&qup_uart3_sleep>; + pinctrl-names =3D "default", "sleep"; + + status =3D "okay"; + + bluetooth: bluetooth { + compatible =3D "qcom,wcn3991-bt"; + vddio-supply =3D <&vreg_l10a_1p8>; + vddxo-supply =3D <&vreg_l1c_1p8>; + vddrf-supply =3D <&vreg_l2c_1p3>; + vddch0-supply =3D <&vreg_l10c_3p3>; + max-speed =3D <3200000>; + }; +}; + +&usb_1 { + status =3D "okay"; +}; + +&usb_1_dwc3 { + dr_mode =3D "host"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + hub@1 { + compatible =3D "usb5e3,608"; + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + /* @1: 3.0 Type-A port on the back + * @2: 2.0 Type-A port the side + * @3: 2.0 Type-C port on the back + */ + + ethernet@4 { + compatible =3D "usbbda,8152"; + reg =3D <4>; + }; + }; +}; + +&usb_1_hsphy { + vdd-supply =3D <&vreg_l4a_0p8>; + vdda-pll-supply =3D <&vreg_l11a_1p8>; + vdda-phy-dpdm-supply =3D <&vreg_l17a_3p0>; + qcom,imp-res-offset-value =3D <8>; + qcom,preemphasis-level =3D ; + qcom,preemphasis-width =3D ; + qcom,bias-ctrl-value =3D <0x22>; + qcom,charge-ctrl-value =3D <3>; + qcom,hsdisc-trim-value =3D <0>; + + status =3D "okay"; +}; + +&usb_1_qmpphy { + vdda-phy-supply =3D <&vreg_l3c_1p2>; + vdda-pll-supply =3D <&vreg_l4a_0p8>; + + /delete-property/ mode-switch; + /delete-property/ orientation-switch; + + status =3D "okay"; + + ports { + port@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + + /delete-node/ endpoint; + + usb_1_qmpphy_dp_out: endpoint@0 { + reg =3D <0>; + + data-lanes =3D <3 2>; + remote-endpoint =3D <&hdmi_bridge_dp_in>; + }; + + usb_1_qmpphy_usb_ss_out: endpoint@1 { + reg =3D <1>; + + data-lanes =3D <1 0>; + remote-endpoint =3D <&usb_a_connector_ss_in>; + }; + }; + }; +}; + +&usb_1_qmpphy_dp_in { + remote-endpoint =3D <&mdss_dp_out>; +}; + +&venus { + firmware-name =3D "qcom/sc7180/ecs/liva-qc710/qcvss7180.mbn"; +}; + +&wifi { + vdd-0.8-cx-mx-supply =3D <&vreg_l9a_0p6>; + vdd-1.8-xo-supply =3D <&vreg_l1c_1p8>; + vdd-1.3-rfa-supply =3D <&vreg_l2c_1p3>; + vdd-3.3-ch0-supply =3D <&vreg_l10c_3p3>; + vdd-3.3-ch1-supply =3D <&vreg_l11c_3p3>; + + qcom,calibration-variant =3D "ECS_QC710"; + + status =3D "okay"; +}; + +&apps_rsc { + regulators-0 { + compatible =3D "qcom,pm6150-rpmh-regulators"; + qcom,pmic-id =3D "a"; + + vreg_s1a_1p1: smps1 { + regulator-min-microvolt =3D <1128000>; + regulator-max-microvolt =3D <1128000>; + }; + + vreg_l4a_0p8: ldo4 { + regulator-min-microvolt =3D <824000>; + regulator-max-microvolt =3D <928000>; + regulator-initial-mode =3D ; + }; + + vreg_l9a_0p6: ldo9 { + regulator-min-microvolt =3D <488000>; + regulator-max-microvolt =3D <800000>; + regulator-initial-mode =3D ; + }; + + vreg_l10a_1p8: ldo10 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + regulator-always-on; + regulator-boot-on; + }; + + vreg_l11a_1p8: ldo11 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l12a_1p8: ldo12 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l13a_1p8: ldo13 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l14a_1p8: ldo14 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l15a_1p8: ldo15 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l16a_2p7: ldo16 { + regulator-min-microvolt =3D <2496000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l17a_3p0: ldo17 { + regulator-min-microvolt =3D <2920000>; + regulator-max-microvolt =3D <3232000>; + regulator-initial-mode =3D ; + }; + + vreg_l18a_2p8: ldo18 { + regulator-min-microvolt =3D <2496000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l19a_2p9: ldo19 { + regulator-min-microvolt =3D <2960000>; + regulator-max-microvolt =3D <2960000>; + regulator-initial-mode =3D ; + }; + }; + + regulators-1 { + compatible =3D "qcom,pm6150l-rpmh-regulators"; + qcom,pmic-id =3D "c"; + + vreg_s8c_1p3: smps8 { + regulator-min-microvolt =3D <1120000>; + regulator-max-microvolt =3D <1408000>; + }; + + vreg_l1c_1p8: ldo1 { + regulator-min-microvolt =3D <1616000>; + regulator-max-microvolt =3D <1984000>; + regulator-initial-mode =3D ; + }; + + vreg_l2c_1p3: ldo2 { + regulator-min-microvolt =3D <1168000>; + regulator-max-microvolt =3D <1304000>; + regulator-initial-mode =3D ; + }; + + vreg_l3c_1p2: ldo3 { + regulator-min-microvolt =3D <1144000>; + regulator-max-microvolt =3D <1304000>; + regulator-initial-mode =3D ; + }; + + vreg_l4c_1p8: ldo4 { + regulator-min-microvolt =3D <1648000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l5c_1p8: ldo5 { + regulator-min-microvolt =3D <1648000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l6c_2p9: ldo6 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <2950000>; + regulator-initial-mode =3D ; + }; + + vreg_l7c_3p0: ldo7 { + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3312000>; + regulator-initial-mode =3D ; + }; + + vreg_l8c_1p8: ldo8 { + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l9c_2p9: ldo9 { + regulator-min-microvolt =3D <2952000>; + regulator-max-microvolt =3D <2952000>; + regulator-initial-mode =3D ; + }; + + vreg_l10c_3p3: ldo10 { + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3400000>; + regulator-initial-mode =3D ; + }; + + vreg_l11c_3p3: ldo11 { + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3400000>; + regulator-initial-mode =3D ; + }; + + vreg_bob: bob { + regulator-min-microvolt =3D <3008000>; + regulator-max-microvolt =3D <3960000>; + regulator-initial-mode =3D ; + }; + }; +}; + +&tlmm { + /* + * The TZ seem to protect those because some boards can have + * fingerprint sensor connected to this range. Not connected + * on this board + */ + gpio-reserved-ranges =3D <58 5>; + + qup_uart3_sleep: qup-uart3-sleep-state { + cts-pins { + /* + * Configure a pull-down on CTS to match the pull of + * the Bluetooth module. + */ + pins =3D "gpio38"; + function =3D "gpio"; + bias-pull-down; + }; + + rts-pins { + /* + * Configure pull-down on RTS. As RTS is active low + * signal, pull it low to indicate the BT SoC that it + * can wakeup the system anytime from suspend state by + * pulling RX low (by sending wakeup bytes). + */ + pins =3D "gpio39"; + function =3D "gpio"; + bias-pull-down; + }; + + tx-pins { + /* + * Configure pull-up on TX when it isn't actively driven + * to prevent BT SoC from receiving garbage during sleep. + */ + pins =3D "gpio40"; + function =3D "gpio"; + bias-pull-up; + }; + + rx-pins { + /* + * Configure a pull-up on RX. This is needed to avoid + * garbage data when the TX pin of the Bluetooth module + * is floating which may cause spurious wakeups. + */ + pins =3D "gpio41"; + function =3D "gpio"; + bias-pull-up; + }; + }; + + sdc1_default: sdc1-default-state { + clk-pins { + pins =3D "sdc1_clk"; + drive-strength =3D <16>; + bias-disable; + }; + + cmd-pins { + pins =3D "sdc1_cmd"; + drive-strength =3D <16>; + bias-pull-up; + }; + + data-pins { + pins =3D "sdc1_data"; + drive-strength =3D <16>; + bias-pull-up; + }; + + rclk-pins { + pins =3D "sdc1_rclk"; + bias-pull-down; + }; + }; + + sdc1_sleep: sdc1-sleep-state { + clk-pins { + pins =3D "sdc1_clk"; + drive-strength =3D <2>; + bias-disable; + }; + + cmd-pins { + pins =3D "sdc1_cmd"; + drive-strength =3D <2>; + bias-pull-up; + }; + + data-pins { + pins =3D "sdc1_data"; + drive-strength =3D <2>; + bias-pull-up; + }; + + rclk-pins { + pins =3D "sdc1_rclk"; + bias-pull-down; + }; + }; + + sdc2_default: sdc2-default-state { + clk-pins { + pins =3D "sdc2_clk"; + bias-disable; + drive-strength =3D <16>; + }; + + cmd-pins { + pins =3D "sdc2_cmd"; + bias-pull-up; + drive-strength =3D <10>; + }; + + data-pins { + pins =3D "sdc2_data"; + bias-pull-up; + drive-strength =3D <10>; + }; + + sd-cd-pins { + pins =3D "gpio69"; + function =3D "gpio"; + bias-pull-up; + drive-strength =3D <2>; + }; + }; + + sdc2_sleep: sdc2-sleep-state { + clk-pins { + pins =3D "sdc2_clk"; + bias-disable; + drive-strength =3D <2>; + }; + + cmd-pins { + pins =3D "sdc2_cmd"; + bias-pull-up; + drive-strength =3D <2>; + }; + + data-pins { + pins =3D "sdc2_data"; + bias-pull-up; + drive-strength =3D <2>; + }; + + sd-cd-pins { + pins =3D "gpio69"; + function =3D "gpio"; + bias-pull-up; + drive-strength =3D <2>; + }; + }; +}; --=20 2.51.2