]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - rpmsg/rpmsg.git/commitdiff
ARM: dts: AM4372: Add the PRU-ICSS0 DT node
authorSuman Anna <s-anna@ti.com>
Mon, 18 Feb 2019 19:42:52 +0000 (13:42 -0600)
committerSuman Anna <s-anna@ti.com>
Sun, 24 Feb 2019 01:20:49 +0000 (19:20 -0600)
The AM437x SoC has a second smaller PRU-ICSS subsystem (PRUSS0)
in addition to the primary PRUSS1 instance. The PRUSS0 has less
DRAM per PRU, and no Shared DRAM among other minor differences.
The IEP and MII_RT modules even though present within the IP are
are not pinned out.

This PRUSS0 instance has a weird SoC integration. It shares the
same L3 OCP interconnect interface with PRUSS1, and also shares
its reset line and clocks. Any external accesses from PRUSS0
requires the PRUSS1's PRUSS_SYSCFG register to be programmed
properly. That said, it is its own IP instance (a cut-down version),
and so it has been added as an independent node (sibling node to
PRUSS1 node) and a child node of the PRUSS SoC bus node. This
allows the PRUSS0 instance to be enabled/disabled independently
of the PRUSS1 instance.

The nodes are added in disabled state as not every SoC in the
AM437x family has the PRU-ICSSs (AM4372 SoC lacks the support).
They need to be enabled in the respective board dts file based
on the SoC being used.

The default names for the firmware images for each PRU core are
defined as follows (these can be adjusted either in derivative
board dts files or through sysfs at runtime if required):
     PRU-ICSS0 PRU0 Core: am437x-pru0_0-fw
     PRU-ICSS0 PRU1 Core: am437x-pru0_1-fw

Signed-off-by: Suman Anna <s-anna@ti.com>
arch/arm/boot/dts/am4372.dtsi

index 3724b89c186707616598e417f65d1bfac620cd4e..97cafa008e380338a1a2c7da9e6ad5bc6e5bfd65 100644 (file)
                                        firmware-name = "am437x-pru1_1-fw";
                                };
                        };
+
+                       pruss0: pruss@54440000 {
+                               compatible = "ti,am4376-pruss";
+                               reg = <0x54440000 0x40000>;
+                               interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH
+                                             GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "host2", "host3", "host4",
+                                                 "host5", "host6", "host8",
+                                                 "host9";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges;
+                               status = "disabled";
+
+                               pruss0_mem: memories@54440000 {
+                                       reg = <0x54440000 0x1000>,
+                                             <0x54442000 0x1000>;
+                                       reg-names = "dram0", "dram1";
+                               };
+
+                               pruss0_cfg: cfg@54466000 {
+                                       compatible = "syscon";
+                                       reg = <0x54466000 0x2000>;
+                               };
+
+                               pruss0_iep: iep@5446e000 {
+                                       compatible = "syscon";
+                                       reg = <0x6e000 0x31c>;
+                               };
+
+                               pruss0_mii_rt: mii-rt@54472000 {
+                                       compatible = "syscon";
+                                       reg = <0x54472000 0x58>;
+                               };
+
+                               pruss0_intc: interrupt-controller@54460000 {
+                                       compatible = "ti,am4376-pruss-intc";
+                                       reg = <0x54460000 0x2000>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <1>;
+                               };
+
+                               pru0_0: pru@54474000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x54474000 0x1000>,
+                                             <0x54462000 0x400>,
+                                             <0x54462400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru0_0-fw";
+                               };
+
+                               pru0_1: pru@54478000 {
+                                       compatible = "ti,am4376-pru";
+                                       reg = <0x54478000 0x1000>,
+                                             <0x54464000 0x400>,
+                                             <0x54464400 0x100>;
+                                       reg-names = "iram", "control", "debug";
+                                       firmware-name = "am437x-pru0_1-fw";
+                               };
+                       };
                };
 
                mcasp0: mcasp@48038000 {