Signed-off-by: Alicja Michalska <ellyqw@mainlining.org> Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8021>
292 lines
6.8 KiB
Diff
292 lines
6.8 KiB
Diff
From 82ddaae5211e0e095cf1ed6bdfe3b65ccda27c32 Mon Sep 17 00:00:00 2001
|
|
From: Alicja Michalska <ellyqw@mainlining.org>
|
|
Date: Sat, 7 Feb 2026 02:02:53 +0100
|
|
Subject: [PATCH] arm64: dts: qcom: Add Snapdragon 710 (sdm710)
|
|
|
|
SDM710 is essentially the same SoC as SDM670, major difference being a
|
|
newer 4nm TSMC node which makes it more power-efficient and boost higher
|
|
(therefore it has additional OPP tables).
|
|
|
|
Most devices with this SoC are using UFS storage and have microSD slots,
|
|
which were also missing from SDM670 tree.
|
|
|
|
Signed-off-by: Alicja Michalska <ellyqw@mainlining.org>
|
|
---
|
|
arch/arm64/boot/dts/qcom/sdm710.dtsi | 264 +++++++++++++++++++++++++++
|
|
1 file changed, 264 insertions(+)
|
|
create mode 100644 arch/arm64/boot/dts/qcom/sdm710.dtsi
|
|
|
|
diff --git a/arch/arm64/boot/dts/qcom/sdm710.dtsi b/arch/arm64/boot/dts/qcom/sdm710.dtsi
|
|
new file mode 100644
|
|
index 000000000000..5ec9a69ab9ae
|
|
--- /dev/null
|
|
+++ b/arch/arm64/boot/dts/qcom/sdm710.dtsi
|
|
@@ -0,0 +1,264 @@
|
|
+// SPDX-License-Identifier: GPL-2.0
|
|
+/*
|
|
+ * SDM710 SoC device tree source
|
|
+ *
|
|
+ * Copyright (c) 2025, The Linux Foundation. All rights reserved.
|
|
+ */
|
|
+
|
|
+#include "sdm670.dtsi"
|
|
+
|
|
+// SDM710 has higher clock speed, so it needs additional OPP tables.
|
|
+&cpu6_opp_table {
|
|
+ cpu6_opp11: opp-2054400000 {
|
|
+ opp-hz = /bits/ 64 <2054400000>;
|
|
+ opp-peak-kBps = <7216000 20889600>;
|
|
+ };
|
|
+
|
|
+ cpu6_opp12: opp-2169600000 {
|
|
+ opp-hz = /bits/ 64 <2169600000>;
|
|
+ opp-peak-kBps = <7216000 20889600>;
|
|
+ };
|
|
+
|
|
+ cpu6_opp13: opp-2208000000 {
|
|
+ opp-hz = /bits/ 64 <2208000000>;
|
|
+ opp-peak-kBps = <7216000 20889600>;
|
|
+ };
|
|
+};
|
|
+
|
|
+&cdsp_pas {
|
|
+ glink-edge {
|
|
+ fastrpc {
|
|
+ compute-cb@7 {
|
|
+ compatible = "qcom,fastrpc-compute-cb";
|
|
+ reg = <7>;
|
|
+ iommus = <&apps_smmu 0x1429 0x30>;
|
|
+ };
|
|
+
|
|
+ compute-cb@8 {
|
|
+ compatible = "qcom,fastrpc-compute-cb";
|
|
+ reg = <8>;
|
|
+ iommus = <&apps_smmu 0x142a 0x30>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&soc {
|
|
+ sdhc_2: mmc@8804000 {
|
|
+ compatible = "qcom,sdm670-sdhci", "qcom,sdhci-msm-v5";
|
|
+ reg = <0 0x08804000 0 0x1000>;
|
|
+
|
|
+ interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>,
|
|
+ <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ interrupt-names = "hc_irq", "pwr_irq";
|
|
+
|
|
+ clocks = <&gcc GCC_SDCC2_AHB_CLK>,
|
|
+ <&gcc GCC_SDCC2_APPS_CLK>,
|
|
+ <&rpmhcc RPMH_CXO_CLK>;
|
|
+ clock-names = "iface", "core", "xo";
|
|
+ iommus = <&apps_smmu 0xa0 0xf>;
|
|
+ power-domains = <&rpmhpd SDM670_CX>;
|
|
+ operating-points-v2 = <&sdhc2_opp_table>;
|
|
+
|
|
+ status = "disabled";
|
|
+
|
|
+ sdhc2_opp_table: opp-table {
|
|
+ compatible = "operating-points-v2";
|
|
+
|
|
+ opp-9600000 {
|
|
+ opp-hz = /bits/ 64 <9600000>;
|
|
+ required-opps = <&rpmhpd_opp_min_svs>;
|
|
+ };
|
|
+
|
|
+ opp-19200000 {
|
|
+ opp-hz = /bits/ 64 <19200000>;
|
|
+ required-opps = <&rpmhpd_opp_low_svs>;
|
|
+ };
|
|
+
|
|
+ opp-100000000 {
|
|
+ opp-hz = /bits/ 64 <100000000>;
|
|
+ required-opps = <&rpmhpd_opp_svs>;
|
|
+ };
|
|
+
|
|
+ opp-201500000 {
|
|
+ opp-hz = /bits/ 64 <201500000>;
|
|
+ required-opps = <&rpmhpd_opp_svs_l1>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ ufs_mem_hc: ufshc@1d84000 {
|
|
+ compatible = "qcom,sdm845-ufshc", "qcom,ufshc",
|
|
+ "jedec,ufs-2.0";
|
|
+ reg = <0 0x01d84000 0 0x3000>,
|
|
+ <0 0x01d90000 0 0x8000>;
|
|
+ reg-names = "std", "ice";
|
|
+ interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ phys = <&ufs_mem_phy>;
|
|
+ phy-names = "ufsphy";
|
|
+ lanes-per-direction = <2>;
|
|
+ power-domains = <&gcc UFS_PHY_GDSC>;
|
|
+ #reset-cells = <1>;
|
|
+ resets = <&gcc GCC_UFS_PHY_BCR>;
|
|
+ reset-names = "rst";
|
|
+
|
|
+ iommus = <&apps_smmu 0x100 0xf>;
|
|
+
|
|
+ clock-names =
|
|
+ "core_clk",
|
|
+ "bus_aggr_clk",
|
|
+ "iface_clk",
|
|
+ "core_clk_unipro",
|
|
+ "ref_clk",
|
|
+ "tx_lane0_sync_clk",
|
|
+ "rx_lane0_sync_clk",
|
|
+ "rx_lane1_sync_clk",
|
|
+ "ice_core_clk";
|
|
+ clocks =
|
|
+ <&gcc GCC_UFS_PHY_AXI_CLK>,
|
|
+ <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_AHB_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>,
|
|
+ <&rpmhcc RPMH_CXO_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
|
|
+
|
|
+ operating-points-v2 = <&ufs_opp_table>;
|
|
+
|
|
+ interconnects = <&aggre1_noc MASTER_UFS_MEM 0 &mem_noc SLAVE_EBI_CH0 0>,
|
|
+ <&gladiator_noc MASTER_AMPSS_M0 0 &config_noc SLAVE_UFS_MEM_CFG 0>;
|
|
+ interconnect-names = "ufs-ddr", "cpu-ufs";
|
|
+
|
|
+ status = "disabled";
|
|
+
|
|
+ ufs_opp_table: opp-table {
|
|
+ compatible = "operating-points-v2";
|
|
+
|
|
+ opp-50000000 {
|
|
+ opp-hz = /bits/ 64 <50000000>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <37500000>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <75000000>;
|
|
+ required-opps = <&rpmhpd_opp_low_svs>;
|
|
+ };
|
|
+
|
|
+ opp-200000000 {
|
|
+ opp-hz = /bits/ 64 <200000000>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <150000000>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <0>,
|
|
+ /bits/ 64 <300000000>;
|
|
+ required-opps = <&rpmhpd_opp_nom>;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+
|
|
+ ufs_mem_phy: phy@1d87000 {
|
|
+ compatible = "qcom,sdm845-qmp-ufs-phy";
|
|
+ reg = <0 0x01d87000 0 0x1000>;
|
|
+
|
|
+ clocks = <&rpmhcc RPMH_CXO_CLK>,
|
|
+ <&gcc GCC_UFS_PHY_PHY_AUX_CLK>,
|
|
+ <&gcc GCC_UFS_MEM_CLKREF_CLK>;
|
|
+ clock-names = "ref",
|
|
+ "ref_aux",
|
|
+ "qref";
|
|
+
|
|
+ power-domains = <&gcc UFS_PHY_GDSC>;
|
|
+
|
|
+ resets = <&ufs_mem_hc 0>;
|
|
+ reset-names = "ufsphy";
|
|
+
|
|
+ #phy-cells = <0>;
|
|
+ status = "disabled";
|
|
+ };
|
|
+};
|
|
+
|
|
+&qupv3_id_1 {
|
|
+ uart12: serial@a9000 {
|
|
+ compatible = "qcom,geni-uart";
|
|
+ reg = <0 0x00a90000 0 0x4000>;
|
|
+ clock-names = "se";
|
|
+ clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&qup_uart12_default>;
|
|
+ interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
|
|
+ operating-points-v2 = <&qup_opp_table>;
|
|
+ power-domains = <&rpmhpd SDM670_CX>;
|
|
+ interconnects = <&aggre1_noc MASTER_BLSP_2 0 &config_noc SLAVE_BLSP_2 0>,
|
|
+ <&gladiator_noc MASTER_AMPSS_M0 0 &config_noc SLAVE_BLSP_2 0>;
|
|
+ interconnect-names = "qup-core", "qup-config";
|
|
+ status = "dusabled";
|
|
+ };
|
|
+};
|
|
+
|
|
+&tlmm {
|
|
+ sdc2_state_on: sdc2-on-state {
|
|
+ clk-pins {
|
|
+ pins = "sdc2_clk";
|
|
+ bias-disable;
|
|
+ drive-strength = <16>;
|
|
+ };
|
|
+
|
|
+ cmd-pins {
|
|
+ pins = "sdc2_cmd";
|
|
+ bias-pull-up;
|
|
+ drive-strength = <10>;
|
|
+ };
|
|
+
|
|
+ data-pins {
|
|
+ pins = "sdc2_data";
|
|
+ bias-pull-up;
|
|
+ drive-strength = <10>;
|
|
+ };
|
|
+
|
|
+ rclk-pins {
|
|
+ pins = "sdc2_rclk";
|
|
+ bias-pull-down;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ sdc2_state_off: sdc2-off-state {
|
|
+ clk-pins {
|
|
+ pins = "sdc2_clk";
|
|
+ bias-disable;
|
|
+ drive-strength = <2>;
|
|
+ };
|
|
+
|
|
+ cmd-pins {
|
|
+ pins = "sdc2_cmd";
|
|
+ bias-pull-up;
|
|
+ drive-strength = <2>;
|
|
+ };
|
|
+
|
|
+ data-pins {
|
|
+ pins = "sdc2_data";
|
|
+ bias-pull-up;
|
|
+ drive-strength = <2>;
|
|
+ };
|
|
+
|
|
+ rclk-pins {
|
|
+ pins = "sdc2_rclk";
|
|
+ bias-pull-down;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ qup_uart12_default: qup-uart12-default-state {
|
|
+ pins = "gpio92", "gpio96";
|
|
+ function = "qup7";
|
|
+ drive-strength = <2>;
|
|
+ bias-disable;
|
|
+ };
|
|
+
|
|
+};
|
|
--
|
|
GitLab
|
|
|