d93f191b95
Add interrupts and interrupt-names protperties for PRU and RTU cores. Signed-off-by: MD Danish Anwar <danishanwar@ti.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Link: https://lore.kernel.org/r/20230814095141.3526684-1-danishanwar@ti.com Signed-off-by: Bjorn Andersson <andersson@kernel.org>
244 lines
7.2 KiB
YAML
244 lines
7.2 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: TI Programmable Realtime Unit (PRU) cores
|
|
|
|
maintainers:
|
|
- Suman Anna <s-anna@ti.com>
|
|
|
|
description: |
|
|
Each Programmable Real-Time Unit and Industrial Communication Subsystem
|
|
(PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called
|
|
Programmable Real-Time Units (PRUs), each represented by a node. Each PRU
|
|
core has a dedicated Instruction RAM, Control and Debug register sets, and
|
|
use the Data RAMs present within the PRU-ICSS for code execution.
|
|
|
|
The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary
|
|
PRU cores called RTUs with slightly different IP integration. The K3 SoCs
|
|
containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two
|
|
auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU
|
|
or Tx_PRU core can also be used independently like a PRU, or alongside a
|
|
corresponding PRU core to provide/implement auxiliary functionality/support.
|
|
|
|
Each PRU, RTU or Tx_PRU core node should be defined as a child node of the
|
|
corresponding PRU-ICSS node. Each node can optionally be rendered inactive by
|
|
using the standard DT string property, "status".
|
|
|
|
Please see the overall PRU-ICSS bindings document for additional details
|
|
including a complete example,
|
|
Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- ti,am3356-pru # for AM335x SoC family (AM3356+ SoCs only)
|
|
- ti,am4376-pru # for AM437x SoC family (AM4376+ SoCs only)
|
|
- ti,am5728-pru # for AM57xx SoC family
|
|
- ti,am625-pru # for PRUs in K3 AM62x SoC family
|
|
- ti,am642-pru # for PRUs in K3 AM64x SoC family
|
|
- ti,am642-rtu # for RTUs in K3 AM64x SoC family
|
|
- ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family
|
|
- ti,am654-pru # for PRUs in K3 AM65x SoC family
|
|
- ti,am654-rtu # for RTUs in K3 AM65x SoC family
|
|
- ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs
|
|
- ti,j721e-pru # for PRUs in K3 J721E SoC family
|
|
- ti,j721e-rtu # for RTUs in K3 J721E SoC family
|
|
- ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family
|
|
- ti,k2g-pru # for 66AK2G SoC family
|
|
|
|
reg:
|
|
items:
|
|
- description: Address and Size of the PRU Instruction RAM
|
|
- description: Address and Size of the PRU CTRL sub-module registers
|
|
- description: Address and Size of the PRU Debug sub-module registers
|
|
|
|
reg-names:
|
|
items:
|
|
- const: iram
|
|
- const: control
|
|
- const: debug
|
|
|
|
firmware-name:
|
|
description: |
|
|
Should contain the name of the default firmware image
|
|
file located on the firmware search path.
|
|
|
|
interrupts:
|
|
maxItems: 1
|
|
description:
|
|
Interrupt specifiers enable the virtio/rpmsg communication between MPU
|
|
and the PRU/RTU cores. For the values of the interrupt cells please refer
|
|
to interrupt-controller/ti,pruss-intc.yaml schema.
|
|
|
|
interrupt-names:
|
|
items:
|
|
- const: vring
|
|
|
|
if:
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- ti,am654-rtu
|
|
- ti,j721e-rtu
|
|
- ti,am642-rtu
|
|
then:
|
|
properties:
|
|
$nodename:
|
|
pattern: "^rtu@[0-9a-f]+$"
|
|
else:
|
|
if:
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- ti,am654-tx-pru
|
|
- ti,j721e-tx-pru
|
|
- ti,am642-tx-pru
|
|
then:
|
|
properties:
|
|
$nodename:
|
|
pattern: "^txpru@[0-9a-f]+"
|
|
else:
|
|
properties:
|
|
$nodename:
|
|
pattern: "^pru@[0-9a-f]+$"
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- reg-names
|
|
- firmware-name
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
/* AM33xx PRU-ICSS */
|
|
pruss_tm: target-module@300000 { /* 0x4a300000, ap 9 04.0 */
|
|
compatible = "ti,sysc-pruss", "ti,sysc";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0x0 0x300000 0x80000>;
|
|
|
|
pruss: pruss@0 {
|
|
compatible = "ti,am3356-pruss";
|
|
reg = <0x0 0x80000>;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges;
|
|
|
|
pruss_mem: memories@0 {
|
|
reg = <0x0 0x2000>,
|
|
<0x2000 0x2000>,
|
|
<0x10000 0x3000>;
|
|
reg-names = "dram0", "dram1", "shrdram2";
|
|
};
|
|
|
|
pru0: pru@34000 {
|
|
compatible = "ti,am3356-pru";
|
|
reg = <0x34000 0x2000>,
|
|
<0x22000 0x400>,
|
|
<0x22400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am335x-pru0-fw";
|
|
};
|
|
|
|
pru1: pru@38000 {
|
|
compatible = "ti,am3356-pru";
|
|
reg = <0x38000 0x2000>,
|
|
<0x24000 0x400>,
|
|
<0x24400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am335x-pru1-fw";
|
|
};
|
|
};
|
|
};
|
|
|
|
- |
|
|
/* AM65x SR2.0 ICSSG */
|
|
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
|
|
|
icssg0: icssg@b000000 {
|
|
compatible = "ti,am654-icssg";
|
|
reg = <0xb000000 0x80000>;
|
|
power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0x0 0xb000000 0x80000>;
|
|
|
|
icssg0_mem: memories@0 {
|
|
reg = <0x0 0x2000>,
|
|
<0x2000 0x2000>,
|
|
<0x10000 0x10000>;
|
|
reg-names = "dram0", "dram1", "shrdram2";
|
|
};
|
|
|
|
pru0_0: pru@34000 {
|
|
compatible = "ti,am654-pru";
|
|
reg = <0x34000 0x4000>,
|
|
<0x22000 0x100>,
|
|
<0x22400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-pru0_0-fw";
|
|
interrupt-parent = <&icssg0_intc>;
|
|
interrupts = <16 2 2>;
|
|
interrupt-names = "vring";
|
|
};
|
|
|
|
rtu0_0: rtu@4000 {
|
|
compatible = "ti,am654-rtu";
|
|
reg = <0x4000 0x2000>,
|
|
<0x23000 0x100>,
|
|
<0x23400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-rtu0_0-fw";
|
|
interrupt-parent = <&icssg0_intc>;
|
|
interrupts = <20 4 4>;
|
|
interrupt-names = "vring";
|
|
};
|
|
|
|
tx_pru0_0: txpru@a000 {
|
|
compatible = "ti,am654-tx-pru";
|
|
reg = <0xa000 0x1800>,
|
|
<0x25000 0x100>,
|
|
<0x25400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-txpru0_0-fw";
|
|
};
|
|
|
|
pru0_1: pru@38000 {
|
|
compatible = "ti,am654-pru";
|
|
reg = <0x38000 0x4000>,
|
|
<0x24000 0x100>,
|
|
<0x24400 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-pru0_1-fw";
|
|
interrupt-parent = <&icssg0_intc>;
|
|
interrupts = <18 3 3>;
|
|
interrupt-names = "vring";
|
|
};
|
|
|
|
rtu0_1: rtu@6000 {
|
|
compatible = "ti,am654-rtu";
|
|
reg = <0x6000 0x2000>,
|
|
<0x23800 0x100>,
|
|
<0x23c00 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-rtu0_1-fw";
|
|
interrupt-parent = <&icssg0_intc>;
|
|
interrupts = <22 5 5>;
|
|
interrupt-names = "vring";
|
|
};
|
|
|
|
tx_pru0_1: txpru@c000 {
|
|
compatible = "ti,am654-tx-pru";
|
|
reg = <0xc000 0x1800>,
|
|
<0x25800 0x100>,
|
|
<0x25c00 0x100>;
|
|
reg-names = "iram", "control", "debug";
|
|
firmware-name = "am65x-txpru0_1-fw";
|
|
};
|
|
};
|