dt-bindings: net: ti: Adds DUAL-EMAC mode support on PRU-ICSS2 for AM57xx, AM43xx and AM33xx SOCs

Documentation update for the newly added "pruss2_eth" device tree
node and its dependencies along with compatibility for PRU-ICSS
Industrial Ethernet Peripheral (IEP), PRU-ICSS Enhanced Capture
(eCAP) peripheral and using YAML binding document for AM57xx SoCs.

Reviewed-by: Mohan Reddy Putluru <pmohan@couthit.com>
Co-developed-by: Basharath Hussain Khaja <basharath@couthit.com>
Signed-off-by: Basharath Hussain Khaja <basharath@couthit.com>
Signed-off-by: Parvathi Pudi <parvathi@couthit.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20250912104741.528721-2-parvathi@couthit.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Parvathi Pudi 2025-09-12 16:14:50 +05:30 committed by Jakub Kicinski
parent 1611666834
commit eb391228ae
4 changed files with 281 additions and 3 deletions

View File

@ -8,6 +8,8 @@ title: Texas Instruments ICSS Industrial Ethernet Peripheral (IEP) module
maintainers:
- Md Danish Anwar <danishanwar@ti.com>
- Parvathi Pudi <parvathi@couthit.com>
- Basharath Hussain Khaja <basharath@couthit.com>
properties:
compatible:
@ -17,9 +19,11 @@ properties:
- ti,am642-icss-iep
- ti,j721e-icss-iep
- const: ti,am654-icss-iep
- const: ti,am654-icss-iep
- enum:
- ti,am654-icss-iep
- ti,am5728-icss-iep
- ti,am4376-icss-iep
- ti,am3356-icss-iep
reg:
maxItems: 1

View File

@ -0,0 +1,233 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ti,icssm-prueth.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ICSSM PRUSS Ethernet
maintainers:
- Roger Quadros <rogerq@ti.com>
- Andrew F. Davis <afd@ti.com>
- Parvathi Pudi <parvathi@couthit.com>
- Basharath Hussain Khaja <basharath@couthit.com>
description:
Ethernet based on the Programmable Real-Time Unit and Industrial
Communication Subsystem.
properties:
compatible:
enum:
- ti,am57-prueth # for AM57x SoC family
- ti,am4376-prueth # for AM43x SoC family
- ti,am3359-prueth # for AM33x SoC family
sram:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to OCMC SRAM node
ti,mii-rt:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to the MII_RT peripheral for ICSS
ti,iep:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to IEP (Industrial Ethernet Peripheral) for ICSS
ti,ecap:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to Enhanced Capture (eCAP) event for ICSS
interrupts:
items:
- description: High priority Rx Interrupt specifier.
- description: Low priority Rx Interrupt specifier.
interrupt-names:
items:
- const: rx_hp
- const: rx_lp
ethernet-ports:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
^ethernet-port@[0-1]$:
type: object
description: ICSSM PRUETH external ports
$ref: ethernet-controller.yaml#
unevaluatedProperties: false
properties:
reg:
items:
- enum: [0, 1]
description: ICSSM PRUETH port number
interrupts:
maxItems: 3
interrupt-names:
items:
- const: rx
- const: emac_ptp_tx
- const: hsr_ptp_tx
required:
- reg
anyOf:
- required:
- ethernet-port@0
- required:
- ethernet-port@1
required:
- compatible
- sram
- ti,mii-rt
- ti,iep
- ti,ecap
- ethernet-ports
- interrupts
- interrupt-names
allOf:
- $ref: /schemas/remoteproc/ti,pru-consumer.yaml#
unevaluatedProperties: false
examples:
- |
/* Dual-MAC Ethernet application node on PRU-ICSS2 */
pruss2_eth: pruss2-eth {
compatible = "ti,am57-prueth";
ti,prus = <&pru2_0>, <&pru2_1>;
sram = <&ocmcram1>;
ti,mii-rt = <&pruss2_mii_rt>;
ti,iep = <&pruss2_iep>;
ti,ecap = <&pruss2_ecap>;
interrupts = <20 2 2>, <21 3 3>;
interrupt-names = "rx_hp", "rx_lp";
interrupt-parent = <&pruss2_intc>;
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
pruss2_emac0: ethernet-port@0 {
reg = <0>;
phy-handle = <&pruss2_eth0_phy>;
phy-mode = "mii";
interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
interrupt-names = "rx", "emac_ptp_tx", "hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
pruss2_emac1: ethernet-port@1 {
reg = <1>;
phy-handle = <&pruss2_eth1_phy>;
phy-mode = "mii";
interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
interrupt-names = "rx", "emac_ptp_tx", "hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
};
};
- |
/* Dual-MAC Ethernet application node on PRU-ICSS1 */
pruss1_eth: pruss1-eth {
compatible = "ti,am4376-prueth";
ti,prus = <&pru1_0>, <&pru1_1>;
sram = <&ocmcram>;
ti,mii-rt = <&pruss1_mii_rt>;
ti,iep = <&pruss1_iep>;
ti,ecap = <&pruss1_ecap>;
interrupts = <20 2 2>, <21 3 3>;
interrupt-names = "rx_hp", "rx_lp";
interrupt-parent = <&pruss1_intc>;
pinctrl-0 = <&pruss1_eth_default>;
pinctrl-names = "default";
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
pruss1_emac0: ethernet-port@0 {
reg = <0>;
phy-handle = <&pruss1_eth0_phy>;
phy-mode = "mii";
interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
interrupt-names = "rx", "emac_ptp_tx",
"hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
pruss1_emac1: ethernet-port@1 {
reg = <1>;
phy-handle = <&pruss1_eth1_phy>;
phy-mode = "mii";
interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
interrupt-names = "rx", "emac_ptp_tx",
"hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
};
};
- |
/* Dual-MAC Ethernet application node on PRU-ICSS */
pruss_eth: pruss-eth {
compatible = "ti,am3359-prueth";
ti,prus = <&pru0>, <&pru1>;
sram = <&ocmcram>;
ti,mii-rt = <&pruss_mii_rt>;
ti,iep = <&pruss_iep>;
ti,ecap = <&pruss_ecap>;
interrupts = <20 2 2>, <21 3 3>;
interrupt-names = "rx_hp", "rx_lp";
interrupt-parent = <&pruss_intc>;
pinctrl-0 = <&pruss_eth_default>;
pinctrl-names = "default";
ethernet-ports {
#address-cells = <1>;
#size-cells = <0>;
pruss_emac0: ethernet-port@0 {
reg = <0>;
phy-handle = <&pruss_eth0_phy>;
phy-mode = "mii";
interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
interrupt-names = "rx", "emac_ptp_tx",
"hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
pruss_emac1: ethernet-port@1 {
reg = <1>;
phy-handle = <&pruss_eth1_phy>;
phy-mode = "mii";
interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
interrupt-names = "rx", "emac_ptp_tx",
"hsr_ptp_tx";
/* Filled in by bootloader */
local-mac-address = [00 00 00 00 00 00];
};
};
};

View File

@ -0,0 +1,32 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ti,pruss-ecap.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments PRU-ICSS Enhanced Capture (eCAP) event module
maintainers:
- Murali Karicheri <m-karicheri2@ti.com>
- Parvathi Pudi <parvathi@couthit.com>
- Basharath Hussain Khaja <basharath@couthit.com>
properties:
compatible:
const: ti,pruss-ecap
reg:
maxItems: 1
required:
- compatible
- reg
additionalProperties: false
examples:
- |
pruss2_ecap: ecap@30000 {
compatible = "ti,pruss-ecap";
reg = <0x30000 0x60>;
};

View File

@ -251,6 +251,15 @@ patternProperties:
type: object
ecap@[a-f0-9]+$:
description:
PRU-ICSS has a Enhanced Capture (eCAP) event module which can generate
and capture periodic timer based events which will be used for features
like RX Pacing to rise interrupt when the timer event has occurred.
Each PRU-ICSS instance has one eCAP module irrespective of SOCs.
$ref: /schemas/net/ti,pruss-ecap.yaml#
type: object
mii-rt@[a-f0-9]+$:
description: |
Real-Time Ethernet to support multiple industrial communication protocols.