# 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 # 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 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 #include 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 = , , ; }; queue-group@2d14000 { reg = <0x0 0x2d14000 0x0 0x1000>; interrupts = , , ; }; }; }; ...