| # SPDX-License-Identifier: GPL-2.0 | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/net/fsl,gianfar.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: Freescale Three-Speed Ethernet Controller (TSEC), "Gianfar" | |
| maintainers: | |
| - J. Neuschäfer <j.ne@posteo.net> | |
| # This is needed to distinguish gianfar.yaml and gianfar-mdio.yaml, because | |
| # both use compatible = "gianfar" (with different device_type values) | |
| select: | |
| oneOf: | |
| - properties: | |
| compatible: | |
| contains: | |
| const: gianfar | |
| device_type: | |
| const: network | |
| required: | |
| - device_type | |
| - properties: | |
| compatible: | |
| const: fsl,etsec2 | |
| required: | |
| - compatible | |
| properties: | |
| compatible: | |
| enum: | |
| - gianfar | |
| - fsl,etsec2 | |
| device_type: | |
| const: network | |
| model: | |
| enum: | |
| - FEC | |
| - TSEC | |
| - eTSEC | |
| reg: | |
| maxItems: 1 | |
| ranges: true | |
| "#address-cells": | |
| enum: [ 1, 2 ] | |
| "#size-cells": | |
| enum: [ 1, 2 ] | |
| cell-index: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| interrupts: | |
| minItems: 1 | |
| items: | |
| - description: Transmit interrupt or single combined interrupt | |
| - description: Receive interrupt | |
| - description: Error interrupt | |
| dma-coherent: true | |
| fsl,magic-packet: | |
| type: boolean | |
| description: | |
| If present, indicates that the hardware supports waking up via magic packet. | |
| fsl,wake-on-filer: | |
| type: boolean | |
| description: | |
| If present, indicates that the hardware supports waking up by Filer | |
| General Purpose Interrupt (FGPI) asserted on the Rx int line. This is | |
| an advanced power management capability allowing certain packet types | |
| (user) defined by filer rules to wake up the system. | |
| bd-stash: | |
| type: boolean | |
| description: | |
| If present, indicates that the hardware supports stashing buffer | |
| descriptors in the L2. | |
| rx-stash-len: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Denotes the number of bytes of a received buffer to stash in the L2. | |
| rx-stash-idx: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Denotes the index of the first byte from the received buffer to stash in | |
| the L2. | |
| fsl,num_rx_queues: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: Number of receive queues | |
| const: 8 | |
| fsl,num_tx_queues: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: Number of transmit queues | |
| const: 8 | |
| tbi-handle: | |
| $ref: /schemas/types.yaml#/definitions/phandle | |
| description: Reference (phandle) to the TBI node | |
| required: | |
| - compatible | |
| - model | |
| patternProperties: | |
| "^mdio@[0-9a-f]+$": | |
| $ref: /schemas/net/fsl,gianfar-mdio.yaml# | |
| allOf: | |
| - $ref: ethernet-controller.yaml# | |
| # eTSEC2 controller nodes have "queue group" subnodes and don't need a "reg" | |
| # property. | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| const: fsl,etsec2 | |
| then: | |
| patternProperties: | |
| "^queue-group@[0-9a-f]+$": | |
| type: object | |
| properties: | |
| reg: | |
| maxItems: 1 | |
| interrupts: | |
| items: | |
| - description: Transmit interrupt | |
| - description: Receive interrupt | |
| - description: Error interrupt | |
| required: | |
| - reg | |
| - interrupts | |
| additionalProperties: false | |
| else: | |
| required: | |
| - reg | |
| # TSEC and eTSEC devices require three interrupts | |
| - if: | |
| properties: | |
| model: | |
| contains: | |
| enum: [ TSEC, eTSEC ] | |
| then: | |
| properties: | |
| interrupts: | |
| items: | |
| - description: Transmit interrupt | |
| - description: Receive interrupt | |
| - description: Error interrupt | |
| unevaluatedProperties: false | |
| examples: | |
| - | | |
| ethernet@24000 { | |
| device_type = "network"; | |
| model = "TSEC"; | |
| compatible = "gianfar"; | |
| reg = <0x24000 0x1000>; | |
| local-mac-address = [ 00 00 00 00 00 00 ]; | |
| interrupts = <29 2>, <30 2>, <34 2>; | |
| interrupt-parent = <&mpic>; | |
| phy-handle = <&phy0>; | |
| }; | |
| - | | |
| #include <dt-bindings/interrupt-controller/irq.h> | |
| ethernet@24000 { | |
| compatible = "gianfar"; | |
| reg = <0x24000 0x1000>; | |
| ranges = <0x0 0x24000 0x1000>; | |
| #address-cells = <1>; | |
| #size-cells = <1>; | |
| cell-index = <0>; | |
| device_type = "network"; | |
| model = "eTSEC"; | |
| local-mac-address = [ 00 00 00 00 00 00 ]; | |
| interrupts = <32 IRQ_TYPE_LEVEL_LOW>, | |
| <33 IRQ_TYPE_LEVEL_LOW>, | |
| <34 IRQ_TYPE_LEVEL_LOW>; | |
| interrupt-parent = <&ipic>; | |
| mdio@520 { | |
| #address-cells = <1>; | |
| #size-cells = <0>; | |
| compatible = "fsl,gianfar-mdio"; | |
| reg = <0x520 0x20>; | |
| }; | |
| }; | |
| - | | |
| #include <dt-bindings/interrupt-controller/irq.h> | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> | |
| bus { | |
| #address-cells = <2>; | |
| #size-cells = <2>; | |
| ethernet { | |
| compatible = "fsl,etsec2"; | |
| ranges; | |
| device_type = "network"; | |
| #address-cells = <2>; | |
| #size-cells = <2>; | |
| interrupt-parent = <&gic>; | |
| model = "eTSEC"; | |
| fsl,magic-packet; | |
| dma-coherent; | |
| queue-group@2d10000 { | |
| reg = <0x0 0x2d10000 0x0 0x1000>; | |
| interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, | |
| <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>, | |
| <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; | |
| }; | |
| queue-group@2d14000 { | |
| reg = <0x0 0x2d14000 0x0 0x1000>; | |
| interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>, | |
| <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>, | |
| <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>; | |
| }; | |
| }; | |
| }; | |
| ... |