aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch')
-rw-r--r--recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch448
1 files changed, 448 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch b/recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch
new file mode 100644
index 0000000..69fb618
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/qrb2210-dts/features/0009_arm64_dts_qcom_qcm2290_hook_up_interconnects.patch
@@ -0,0 +1,448 @@
+From: Konrad Dybcio <konrad.dybcio@linaro.org>
+Subject: arm64: dts: qcom: qcm2290: Hook up interconnects
+Date: Wed, 29 Nov 2023 15:44:06 +0100
+
+Add interconnect provider nodes and hook up interconnects to consumer
+devices, including bwmon.
+
+Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Upstream-Status: Backport [https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 5b970ff0193d67da4a8d2d5fda50dd8ddb50a71e]
+---
+ arch/arm64/boot/dts/qcom/qcm2290.dtsi | 248 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 248 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/qcom/qcm2290.dtsi b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
+index a3edc4667cc5..ce04d0acdede 100644
+--- a/arch/arm64/boot/dts/qcom/qcm2290.dtsi
++++ b/arch/arm64/boot/dts/qcom/qcm2290.dtsi
+@@ -12,6 +12,8 @@
+ #include <dt-bindings/firmware/qcom,scm.h>
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
++#include <dt-bindings/interconnect/qcom,qcm2290.h>
++#include <dt-bindings/interconnect/qcom,rpm-icc.h>
+ #include <dt-bindings/power/qcom-rpmpd.h>
+
+ / {
+@@ -151,6 +153,8 @@ scm: scm {
+ clocks = <&rpmcc RPM_SMD_CE1_CLK>;
+ clock-names = "core";
+ #reset-cells = <1>;
++ interconnects = <&system_noc MASTER_CRYPTO_CORE0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
+ };
+ };
+
+@@ -669,6 +673,33 @@ usb_qmpphy: phy@1615000 {
+ status = "disabled";
+ };
+
++ system_noc: interconnect@1880000 {
++ compatible = "qcom,qcm2290-snoc";
++ reg = <0x0 0x01880000 0x0 0x60200>;
++ #interconnect-cells = <2>;
++
++ qup_virt: interconnect-qup {
++ compatible = "qcom,qcm2290-qup-virt";
++ #interconnect-cells = <2>;
++ };
++
++ mmnrt_virt: interconnect-mmnrt {
++ compatible = "qcom,qcm2290-mmnrt-virt";
++ #interconnect-cells = <2>;
++ };
++
++ mmrt_virt: interconnect-mmrt {
++ compatible = "qcom,qcm2290-mmrt-virt";
++ #interconnect-cells = <2>;
++ };
++ };
++
++ config_noc: interconnect@1900000 {
++ compatible = "qcom,qcm2290-cnoc";
++ reg = <0x0 0x01900000 0x0 0x8200>;
++ #interconnect-cells = <2>;
++ };
++
+ qfprom@1b44000 {
+ compatible = "qcom,qcm2290-qfprom", "qcom,qfprom";
+ reg = <0x0 0x01b44000 0x0 0x3000>;
+@@ -681,6 +712,60 @@ qusb2_hstx_trim: hstx-trim@25b {
+ };
+ };
+
++ pmu@1b8e300 {
++ compatible = "qcom,qcm2290-cpu-bwmon", "qcom,sdm845-bwmon";
++ reg = <0x0 0x01b8e300 0x0 0x600>;
++ interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
++
++ operating-points-v2 = <&cpu_bwmon_opp_table>;
++ interconnects = <&bimc MASTER_APPSS_PROC RPM_ACTIVE_TAG
++ &bimc SLAVE_EBI1 RPM_ACTIVE_TAG>;
++
++ cpu_bwmon_opp_table: opp-table {
++ compatible = "operating-points-v2";
++
++ opp-0 {
++ opp-peak-kBps = <(200 * 4 * 1000)>;
++ };
++
++ opp-1 {
++ opp-peak-kBps = <(300 * 4 * 1000)>;
++ };
++
++ opp-2 {
++ opp-peak-kBps = <(451 * 4 * 1000)>;
++ };
++
++ opp-3 {
++ opp-peak-kBps = <(547 * 4 * 1000)>;
++ };
++
++ opp-4 {
++ opp-peak-kBps = <(681 * 4 * 1000)>;
++ };
++
++ opp-5 {
++ opp-peak-kBps = <(768 * 4 * 1000)>;
++ };
++
++ opp-6 {
++ opp-peak-kBps = <(1017 * 4 * 1000)>;
++ };
++
++ opp-7 {
++ opp-peak-kBps = <(1353 * 4 * 1000)>;
++ };
++
++ opp-8 {
++ opp-peak-kBps = <(1555 * 4 * 1000)>;
++ };
++
++ opp-9 {
++ opp-peak-kBps = <(1804 * 4 * 1000)>;
++ };
++ };
++ };
++
+ spmi_bus: spmi@1c40000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg = <0x0 0x01c40000 0x0 0x1100>,
+@@ -721,6 +806,12 @@ rng: rng@4453000 {
+ clock-names = "core";
+ };
+
++ bimc: interconnect@4480000 {
++ compatible = "qcom,qcm2290-bimc";
++ reg = <0x0 0x04480000 0x0 0x80000>;
++ #interconnect-cells = <2>;
++ };
++
+ rpm_msg_ram: sram@45f0000 {
+ compatible = "qcom,rpm-msg-ram";
+ reg = <0x0 0x045f0000 0x0 0x7000>;
+@@ -756,13 +847,45 @@ sdhc_1: mmc@4744000 {
+ resets = <&gcc GCC_SDCC1_BCR>;
+
+ power-domains = <&rpmpd QCM2290_VDDCX>;
++ operating-points-v2 = <&sdhc1_opp_table>;
+ iommus = <&apps_smmu 0xc0 0x0>;
++ interconnects = <&system_noc MASTER_SDCC_1 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_SDCC_1 RPM_ALWAYS_TAG>;
++ interconnect-names = "sdhc-ddr",
++ "cpu-sdhc";
+
+ qcom,dll-config = <0x000f642c>;
+ qcom,ddr-config = <0x80040868>;
+ bus-width = <8>;
+
+ status = "disabled";
++
++ sdhc1_opp_table: opp-table {
++ compatible = "operating-points-v2";
++
++ opp-100000000 {
++ opp-hz = /bits/ 64 <100000000>;
++ required-opps = <&rpmpd_opp_low_svs>;
++ opp-peak-kBps = <250000 133320>;
++ opp-avg-kBps = <102400 65000>;
++ };
++
++ opp-192000000 {
++ opp-hz = /bits/ 64 <192000000>;
++ required-opps = <&rpmpd_opp_low_svs>;
++ opp-peak-kBps = <800000 300000>;
++ opp-avg-kBps = <204800 200000>;
++ };
++
++ opp-384000000 {
++ opp-hz = /bits/ 64 <384000000>;
++ required-opps = <&rpmpd_opp_svs_plus>;
++ opp-peak-kBps = <800000 300000>;
++ opp-avg-kBps = <204800 200000>;
++ };
++ };
+ };
+
+ sdhc_2: mmc@4784000 {
+@@ -786,6 +909,12 @@ sdhc_2: mmc@4784000 {
+ power-domains = <&rpmpd QCM2290_VDDCX>;
+ operating-points-v2 = <&sdhc2_opp_table>;
+ iommus = <&apps_smmu 0xa0 0x0>;
++ interconnects = <&system_noc MASTER_SDCC_2 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_SDCC_2 RPM_ALWAYS_TAG>;
++ interconnect-names = "sdhc-ddr",
++ "cpu-sdhc";
+
+ qcom,dll-config = <0x0007642c>;
+ qcom,ddr-config = <0x80040868>;
+@@ -799,11 +928,15 @@ sdhc2_opp_table: opp-table {
+ opp-100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ required-opps = <&rpmpd_opp_low_svs>;
++ opp-peak-kBps = <250000 133320>;
++ opp-avg-kBps = <261438 150000>;
+ };
+
+ opp-202000000 {
+ opp-hz = /bits/ 64 <202000000>;
+ required-opps = <&rpmpd_opp_svs_plus>;
++ opp-peak-kBps = <800000 300000>;
++ opp-avg-kBps = <261438 300000>;
+ };
+ };
+ };
+@@ -851,6 +984,15 @@ i2c0: i2c@4a80000 {
+ dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 0 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -867,6 +1009,12 @@ spi0: spi@4a80000 {
+ dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 0 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -880,6 +1028,12 @@ uart0: serial@4a80000 {
+ clock-names = "se";
+ pinctrl-0 = <&qup_uart0_default>;
+ pinctrl-names = "default";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ status = "disabled";
+ };
+
+@@ -894,6 +1048,15 @@ i2c1: i2c@4a84000 {
+ dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 1 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -910,6 +1073,12 @@ spi1: spi@4a84000 {
+ dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 1 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -926,6 +1095,15 @@ i2c2: i2c@4a88000 {
+ dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 2 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -942,6 +1120,12 @@ spi2: spi@4a88000 {
+ dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 2 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -958,6 +1142,15 @@ i2c3: i2c@4a8c000 {
+ dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 3 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -974,6 +1167,12 @@ spi3: spi@4a8c000 {
+ dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 3 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -990,6 +1189,15 @@ i2c4: i2c@4a90000 {
+ dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 4 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -1006,6 +1214,12 @@ spi4: spi@4a90000 {
+ dmas = <&gpi_dma0 0 4 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 4 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -1019,6 +1233,12 @@ uart4: serial@4a90000 {
+ clock-names = "se";
+ pinctrl-0 = <&qup_uart4_default>;
+ pinctrl-names = "default";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ status = "disabled";
+ };
+
+@@ -1033,6 +1253,15 @@ i2c5: i2c@4a94000 {
+ dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>,
+ <&gpi_dma0 1 5 QCOM_GPI_I2C>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>,
++ <&system_noc MASTER_QUP_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config",
++ "qup-memory";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -1049,6 +1278,12 @@ spi5: spi@4a94000 {
+ dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>,
+ <&gpi_dma0 1 5 QCOM_GPI_SPI>;
+ dma-names = "tx", "rx";
++ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
++ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
++ interconnect-names = "qup-core",
++ "qup-config";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+@@ -1081,6 +1316,13 @@ usb: usb@4ef8800 {
+
+ resets = <&gcc GCC_USB30_PRIM_BCR>;
+ power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
++ /* TODO: USB<->IPA path */
++ interconnects = <&system_noc MASTER_USB3_0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_USB3 RPM_ALWAYS_TAG>;
++ interconnect-names = "usb-ddr",
++ "apps-usb";
+ wakeup-source;
+
+ #address-cells = <2>;
+@@ -1127,6 +1369,12 @@ mdss: display-subsystem@5e00000 {
+
+ iommus = <&apps_smmu 0x420 0x2>,
+ <&apps_smmu 0x421 0x0>;
++ interconnects = <&mmrt_virt MASTER_MDP0 RPM_ALWAYS_TAG
++ &bimc SLAVE_EBI1 RPM_ALWAYS_TAG>,
++ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
++ &config_noc SLAVE_DISPLAY_CFG RPM_ALWAYS_TAG>;
++ interconnect-names = "mdp0-mem",
++ "cpu-cfg";
+
+ #address-cells = <2>;
+ #size-cells = <2>;
+--
+2.43.0