[PATCH 09/10] ARM: dts: qcom: msm8960: add Riva

Antony Kurniawan Soemardi via B4 Relay
2026-04-13T19:00:22Z

From: Antony Kurniawan Soemardi <linux@smankusors.com>

Add the Riva Peripheral Image Loader node to support the Wireless
Connectivity and Networking Subsystem on MSM8960. This includes:

- Reserved memory region for WCNSS firmware
- WCN3660 iris radio controller
- Bluetooth and Wi-Fi sub-devices exposed via the SMD edge
- Pinctrl states for Bluetooth and Wi-Fi power management

Tested-by: Rudraksha Gupta <guptarud@gmail.com>
Signed-off-by: Antony Kurniawan Soemardi <linux@smankusors.com>
---
arch/arm/boot/dts/qcom/qcom-msm8960.dtsi | 78 ++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)

diff --git a/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
index 107c5613aa4a..6bf36f35e5e3 100644
--- a/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
+++ b/arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
@@ -100,6 +100,11 @@ smem_region: smem@80000000 {
reg = <0x80000000 0x200000>;
no-map;
};
+
+ wcnss_mem: wcnss@8f000000 {
+ reg = <0x8f000000 0x700000>;
+ no-map;
+ };
};

smem {
@@ -317,6 +322,34 @@ i2c12-pins {
};
};

+ riva_bt_default_state: riva-bt-active-state {
+ pins = "gpio28", "gpio29";
+ function = "bt";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ riva_bt_sleep_state: riva-bt-sleep-state {
+ pins = "gpio28", "gpio29";
+ function = "bt";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ riva_wlan_default_state: riva-wlan-active-state {
+ pins = "gpio84", "gpio85", "gpio86", "gpio87", "gpio88";
+ function = "wlan";
+ drive-strength = <6>;
+ bias-pull-down;
+ };
+
+ riva_wlan_sleep_state: riva-wlan-sleep-state {
+ pins = "gpio84", "gpio85", "gpio86", "gpio87", "gpio88";
+ function = "wlan";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
sdcc3_default_state: sdcc3-default-state {
clk-pins {
pins = "sdc3_clk";
@@ -456,6 +489,51 @@ saw1_vreg: regulator {
};
};

+ riva: riva-pil@3200800 {
+ compatible = "qcom,riva-pil";
+ reg = <0x03200800 0x1000>, <0x03202000 0x2000>, <0x03204000 0x100>;
+ reg-names = "ccu", "dxe", "pmu";
+ interrupts-extended = <&intc GIC_SPI 199 IRQ_TYPE_EDGE_RISING>,
+ <&wcnss_smsm 6 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "wdog", "fatal";
+ memory-region = <&wcnss_mem>;
+
+ status = "disabled";
+
+ iris {
+ compatible = "qcom,wcn3660";
+ clocks = <&cxo_board>;
+ clock-names = "xo";
+ };
+
+ smd-edge {
+ interrupts = <GIC_SPI 198 IRQ_TYPE_EDGE_RISING>;
+ label = "riva";
+ qcom,ipc = <&l2cc 8 25>;
+ qcom,smd-edge = <6>;
+
+ wcnss {
+ compatible = "qcom,wcnss";
+ qcom,smd-channels = "WCNSS_CTRL";
+ qcom,mmio = <&riva>;
+
+ bluetooth {
+ compatible = "qcom,wcnss-bt";
+ };
+
+ wifi {
+ compatible = "qcom,wcnss-wlan";
+ interrupts = <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 202 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "tx", "rx";
+ qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>;
+ qcom,smem-state-names = "tx-enable",
+ "tx-rings-empty";
+ };
+ };
+ };
+ };
+
clock-controller@4000000 {
compatible = "qcom,mmcc-msm8960";
reg = <0x4000000 0x1000>;

--
2.34.1