Skip to contentSkip to conversation

Add DRA7 IOMMU DT nodes

PATCH New Suman Anna 2 participants 9 messages Oct 2, 2015 – Oct 12, 2015 Device tree bindings

lore
Share & tools
lore

Suman Anna

author
#0 lore raw

cover Add DRA7 IOMMU DT nodes

Hi Tony,

The following series is a repost of the previous seried that added the basic DT nodes for the DSP and IPU IOMMU devices for the DRA7xx SoC family [1]. There are no code changes, but the patches have to be rebased to resolve slight merge conflicts as the dra7_ctrl_core and dra7_ctrl_general nodes have been removed since the last submission.

This patch series is pending based on the equivalent bindings update series [2] which has also been reposted without any changes.

Patches are based on 4.3-rc3.

regards
Suman

[1] http://marc.info/?l=linux-omap&m=143752332808524&w=2
[2] http://marc.info/?l=linux-omap&m=144382697928741&w=2

Suman Anna (4):
ARM: dts: DRA7: Add dsp1_system syscon node
ARM: dts: DRA74x: Add dsp2_system syscon node
ARM: dts: DRA7: Add common IOMMU nodes
ARM: dts: DRA74x: Add IOMMU nodes for DSP2

 arch/arm/boot/dts/dra7.dtsi   | 45 +++++++++++++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/dra74x.dtsi | 25 ++++++++++++++++++++++++
 2 files changed, 70 insertions(+)
Signature · 1 line
2.6.0
author
#1 lore raw

PATCH 1/4 ARM: dts: DRA7: Add dsp1_system syscon node

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP1 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the common dra7.dtsi file, as the DSP1 processor sub-system is mostly common across all the variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra7.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra7.dtsi +5 -0
index e289c706d27d..62055094e8d5 100644
@@ -292,6 +292,11 @@
 				#thermal-sensor-cells = <1>;
 		};
 
+		dsp1_system: dsp_system at 40d00000 {
+			compatible = "syscon";
+			reg = <0x40d00000 0x100>;
+		};
+
 		sdma: dma-controller at 4a056000 {
 			compatible = "ti,omap4430-sdma";
 			reg = <0x4a056000 0x1000>;
Signature · 1 line
2.6.0
#2 lore raw

PATCH 1/4 ARM: dts: DRA7: Add dsp1_system syscon node

Quoted 25 lines · Suman Anna

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP1 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the common dra7.dtsi file, as the DSP1 processor sub-system is mostly common across all the variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra7.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra7.dtsi +0 -0
index e289c706d27d..62055094e8d5 100644
@@ -292,6 +292,11 @@
 				#thermal-sensor-cells = <1>;

arch/arm/boot/dts/dra7.dtsi line 302

Quoted 10 lines
arch/arm/boot/dts/dra7.dtsi +5 -0
 		};
 
+		dsp1_system: dsp_system at 40d00000 {
+			compatible = "syscon";
+			reg = <0x40d00000 0x100>;
+		};
+
 		sdma: dma-controller at 4a056000 {
 			compatible = "ti,omap4430-sdma";
 			reg = <0x4a056000 0x1000>;

Hmm so why would you want to set up a complete device as a syscon mapping rather than just doing ioremap on it?

What drivers will be sharing access to these registers?

Regards,

Tony

author
#3 lore raw

PATCH 1/4 ARM: dts: DRA7: Add dsp1_system syscon node

Hi Tony,

Quoted 40 lines · Tony Lindgren
Quoted 25 lines · Suman Anna

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP1 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the common dra7.dtsi file, as the DSP1 processor sub-system is mostly common across all the variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra7.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra7.dtsi +0 -0
index e289c706d27d..62055094e8d5 100644
@@ -292,6 +292,11 @@
 				#thermal-sensor-cells = <1>;

arch/arm/boot/dts/dra7.dtsi line 302

Quoted 10 lines
arch/arm/boot/dts/dra7.dtsi +5 -0
 		};
 
+		dsp1_system: dsp_system at 40d00000 {
+			compatible = "syscon";
+			reg = <0x40d00000 0x100>;
+		};
+
 		sdma: dma-controller at 4a056000 {
 			compatible = "ti,omap4430-sdma";
 			reg = <0x4a056000 0x1000>;

Hmm so why would you want to set up a complete device as a syscon mapping rather than just doing ioremap on it?

Quoted 1 line

What drivers will be sharing access to these registers?

Two different instances of the MMU for now, both get probed independently. But there are other registers which a remoteproc driver will mostly be interested in (like DSP_SYS_STAT for knowing the C66x idle/active status).

regards
Suman

#4 lore raw

PATCH 1/4 ARM: dts: DRA7: Add dsp1_system syscon node

Quoted 43 lines · Suman Anna

Hi Tony,

Quoted 40 lines · Tony Lindgren
Quoted 25 lines · Suman Anna

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP1 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the common dra7.dtsi file, as the DSP1 processor sub-system is mostly common across all the variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra7.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra7.dtsi +0 -0
index e289c706d27d..62055094e8d5 100644
@@ -292,6 +292,11 @@
 				#thermal-sensor-cells = <1>;

arch/arm/boot/dts/dra7.dtsi line 302

Quoted 10 lines
arch/arm/boot/dts/dra7.dtsi +5 -0
 		};
 
+		dsp1_system: dsp_system at 40d00000 {
+			compatible = "syscon";
+			reg = <0x40d00000 0x100>;
+		};
+
 		sdma: dma-controller at 4a056000 {
 			compatible = "ti,omap4430-sdma";
 			reg = <0x4a056000 0x1000>;

Hmm so why would you want to set up a complete device as a syscon mapping rather than just doing ioremap on it?

Quoted 6 lines
Quoted 1 line

What drivers will be sharing access to these registers?

Two different instances of the MMU for now, both get probed independently. But there are other registers which a remoteproc driver will mostly be interested in (like DSP_SYS_STAT for knowing the C66x idle/active status).

OK makes sense to me then.

Thanks,

Tony

#5 lore raw

PATCH 1/4 ARM: dts: DRA7: Add dsp1_system syscon node

Quoted 44 lines · Tony Lindgren
Quoted 43 lines · Suman Anna

Hi Tony,

Quoted 40 lines · Tony Lindgren
Quoted 25 lines · Suman Anna

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP1 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the common dra7.dtsi file, as the DSP1 processor sub-system is mostly common across all the variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra7.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra7.dtsi +0 -0
index e289c706d27d..62055094e8d5 100644
@@ -292,6 +292,11 @@
 				#thermal-sensor-cells = <1>;

arch/arm/boot/dts/dra7.dtsi line 302

Quoted 10 lines
arch/arm/boot/dts/dra7.dtsi +5 -0
 		};
 
+		dsp1_system: dsp_system at 40d00000 {
+			compatible = "syscon";
+			reg = <0x40d00000 0x100>;
+		};
+
 		sdma: dma-controller at 4a056000 {
 			compatible = "ti,omap4430-sdma";
 			reg = <0x4a056000 0x1000>;

Hmm so why would you want to set up a complete device as a syscon mapping rather than just doing ioremap on it?

Quoted 8 lines
Quoted 6 lines
Quoted 1 line

What drivers will be sharing access to these registers?

Two different instances of the MMU for now, both get probed independently. But there are other registers which a remoteproc driver will mostly be interested in (like DSP_SYS_STAT for knowing the C66x idle/active status).

OK makes sense to me then.

And applying these into omap-for-v4.4/dt.

Tony

author
#6 lore raw

PATCH 2/4 ARM: dts: DRA74x: Add dsp2_system syscon node

In reply to Suman Anna

The DSP_SYSTEM sub-module is a dedicated system control logic module present within a DRA7 DSP processor sub-system. This module is responsible for power management, clock generation and connection to the device PRCM module.

Add a syscon node for this module for the DSP2 processor sub-system. This is added as a syscon node as it is a common configuration module that can be used by the different IOMMU instances and the corresponding remoteproc device.

The node is added to the dra74x.dtsi file, as the DSP2 processor subsystem is usually present only on the DRA74x variants of the DRA7 SoC family.

---
 arch/arm/boot/dts/dra74x.dtsi | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm/boot/dts/dra74x.dtsi +5 -0
index feea98e0a4b5..dfa29b7ba86a 100644
@@ -52,6 +52,11 @@
 	};
 
 	ocp {
+		dsp2_system: dsp_system at 41500000 {
+			compatible = "syscon";
+			reg = <0x41500000 0x100>;
+		};
+
 		omap_dwc3_4: omap_dwc3_4 at 48940000 {
 			compatible = "ti,dwc3";
 			ti,hwmods = "usb_otg_ss4";
Signature · 1 line
2.6.0
author
#7 lore raw

PATCH 3/4 ARM: dts: DRA7: Add common IOMMU nodes

In reply to Suman Anna

The DRA7xx family of SOCs have two IPUs and one DSP processor subsystems in common. The IOMMU DT nodes have been added for these processor subsystems, and have been disabled by default.

These MMUs are very similar to those on OMAP4 and OMAP5, with the only difference being the presence of a second MMU within the DSP subsystem for the EDMA port. The DSP IOMMUs also need an additional 'ti,syscon-mmuconfig' property compared to the IPU IOMMUs.

NOTE: The enabling of these nodes is left to the respective board dts files.

---
 arch/arm/boot/dts/dra7.dtsi | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
arch/arm/boot/dts/dra7.dtsi +40 -0
index 62055094e8d5..9f6bafcad385 100644
@@ -916,6 +916,46 @@
 			status = "disabled";
 		};
 
+		mmu0_dsp1: mmu at 40d01000 {
+			compatible = "ti,dra7-dsp-iommu";
+			reg = <0x40d01000 0x100>;
+			interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu0_dsp1";
+			#iommu-cells = <0>;
+			ti,syscon-mmuconfig = <&dsp1_system 0x0>;
+			status = "disabled";
+		};
+
+		mmu1_dsp1: mmu at 40d02000 {
+			compatible = "ti,dra7-dsp-iommu";
+			reg = <0x40d02000 0x100>;
+			interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu1_dsp1";
+			#iommu-cells = <0>;
+			ti,syscon-mmuconfig = <&dsp1_system 0x1>;
+			status = "disabled";
+		};
+
+		mmu_ipu1: mmu at 58882000 {
+			compatible = "ti,dra7-iommu";
+			reg = <0x58882000 0x100>;
+			interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu_ipu1";
+			#iommu-cells = <0>;
+			ti,iommu-bus-err-back;
+			status = "disabled";
+		};
+
+		mmu_ipu2: mmu at 55082000 {
+			compatible = "ti,dra7-iommu";
+			reg = <0x55082000 0x100>;
+			interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu_ipu2";
+			#iommu-cells = <0>;
+			ti,iommu-bus-err-back;
+			status = "disabled";
+		};
+
 		abb_mpu: regulator-abb-mpu {
 			compatible = "ti,abb-v3";
 			regulator-name = "abb_mpu";
Signature · 1 line
2.6.0
author
#8 lore raw

PATCH 4/4 ARM: dts: DRA74x: Add IOMMU nodes for DSP2

In reply to Suman Anna

The DRA74x family of SoCs have a second DSP, that also has two MMUs just like the DSP1 subsystem. Add the IOMMU nodes for this DSP2 subsystem in disabled state to the DRA74x specific DTS file, the nodes would need to be enabled appropriately in the respective board DTS files.

---
 arch/arm/boot/dts/dra74x.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
arch/arm/boot/dts/dra74x.dtsi +20 -0
index dfa29b7ba86a..2f7d313e91a0 100644
@@ -81,6 +81,26 @@
 				dr_mode = "otg";
 			};
 		};
+
+		mmu0_dsp2: mmu at 41501000 {
+			compatible = "ti,dra7-dsp-iommu";
+			reg = <0x41501000 0x100>;
+			interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu0_dsp2";
+			#iommu-cells = <0>;
+			ti,syscon-mmuconfig = <&dsp2_system 0x0>;
+			status = "disabled";
+		};
+
+		mmu1_dsp2: mmu at 41502000 {
+			compatible = "ti,dra7-dsp-iommu";
+			reg = <0x41502000 0x100>;
+			interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+			ti,hwmods = "mmu1_dsp2";
+			#iommu-cells = <0>;
+			ti,syscon-mmuconfig = <&dsp2_system 0x1>;
+			status = "disabled";
+		};
 	};
 };
 
Signature · 1 line
2.6.0