]> www.infradead.org Git - users/willy/xarray.git/commitdiff
arm64: dts: ti: k3-am62-main: Add PRUSS-M node
authorKishon Vijay Abraham I <kishon@ti.com>
Wed, 30 Apr 2025 14:43:43 +0000 (09:43 -0500)
committerNishanth Menon <nm@ti.com>
Tue, 6 May 2025 12:30:11 +0000 (07:30 -0500)
Add the DT node for the PRUSS-M processor subsystem that is present
on the K3 AM62x SoCs. The K3 AM62x family of SoC has one PRUSS-M
instance and it has two Programmable Real-Time Units (PRU0 and PRU1).

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
[ Judith: Fix pruss_iclk id for pruss_coreclk_mux ]
Signed-off-by: Judith Mendez <jm@ti.com>
Tested-by: Daniel Schultz <d.schultz@phytec.de>
Reviewed-by: Beleswar Padhi <b-padhi@ti.com>
Acked-by: Hari Nagalla <hnagalla@ti.com>
Link: https://lore.kernel.org/r/20250430144343.972234-1-jm@ti.com
Signed-off-by: Nishanth Menon <nm@ti.com>
arch/arm64/boot/dts/ti/k3-am62-main.dtsi

index 0c286f600296cdbcbbfd7bfe46e7d5b101b86af6..50ba7dcff80f346de58f83f078b9a46ddc165b2d 100644 (file)
                status = "disabled";
        };
 
+       pruss: pruss@30040000 {
+               compatible = "ti,am625-pruss";
+               reg = <0x00 0x30040000 0x00 0x80000>;
+               power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x00 0x30040000 0x80000>;
+
+               pruss_mem: memories@0 {
+                       reg = <0x0 0x2000>,
+                             <0x2000 0x2000>,
+                             <0x10000 0x10000>;
+                       reg-names = "dram0", "dram1", "shrdram2";
+               };
+
+               pruss_cfg: cfg@26000 {
+                       compatible = "ti,pruss-cfg", "syscon";
+                       reg = <0x26000 0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x26000 0x2000>;
+
+                       clocks {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               pruss_coreclk_mux: coreclk-mux@3c {
+                                       reg = <0x3c>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 0>,  /* pruss_core_clk */
+                                                <&k3_clks 81 14>; /* pruss_iclk */
+                                       assigned-clocks = <&pruss_coreclk_mux>;
+                                       assigned-clock-parents = <&k3_clks 81 14>;
+                               };
+
+                               pruss_iepclk_mux: iepclk-mux@30 {
+                                       reg = <0x30>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 3>,       /* pruss_iep_clk */
+                                                <&pruss_coreclk_mux>;  /* pruss_coreclk_mux */
+                                       assigned-clocks = <&pruss_iepclk_mux>;
+                                       assigned-clock-parents = <&pruss_coreclk_mux>;
+                               };
+                       };
+               };
+
+               pruss_intc: interrupt-controller@20000 {
+                       compatible = "ti,pruss-intc";
+                       reg = <0x20000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host_intr0", "host_intr1",
+                                         "host_intr2", "host_intr3",
+                                         "host_intr4", "host_intr5",
+                                         "host_intr6", "host_intr7";
+               };
+
+               pru0: pru@34000 {
+                       compatible = "ti,am625-pru";
+                       reg = <0x34000 0x3000>,
+                             <0x22000 0x100>,
+                             <0x22400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am62x-pru0-fw";
+                       interrupt-parent = <&pruss_intc>;
+                       interrupts = <16 2 2>;
+                       interrupt-names = "vring";
+               };
+
+               pru1: pru@38000 {
+                       compatible = "ti,am625-pru";
+                       reg = <0x38000 0x3000>,
+                             <0x24000 0x100>,
+                             <0x24400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am62x-pru1-fw";
+                       interrupt-parent = <&pruss_intc>;
+                       interrupts = <18 3 3>;
+                       interrupt-names = "vring";
+               };
+       };
+
        gpmc0: memory-controller@3b000000 {
                compatible = "ti,am64-gpmc";
                power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;