Commit eb391228 authored by Parvathi Pudi's avatar Parvathi Pudi Committed by Jakub Kicinski
Browse files

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: default avatarMohan Reddy Putluru <pmohan@couthit.com>
Co-developed-by: default avatarBasharath Hussain Khaja <basharath@couthit.com>
Signed-off-by: default avatarBasharath Hussain Khaja <basharath@couthit.com>
Signed-off-by: default avatarParvathi Pudi <parvathi@couthit.com>
Reviewed-by: default avatarRob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20250912104741.528721-2-parvathi@couthit.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 16116668
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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
+233 −0
Original line number Diff line number Diff line
# 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];
        };
      };
    };
+32 −0
Original line number Diff line number Diff line
# 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>;
    };
+9 −0
Original line number Diff line number Diff line
@@ -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.