# 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 - Andrew F. Davis - Parvathi Pudi - Basharath Hussain Khaja 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]; }; }; };