| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- # SPDX-License-Identifier: GPL-2.0
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/net/ethernet-controller.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: Ethernet Controller Common Properties
- maintainers:
- - David S. Miller <davem@davemloft.net>
- properties:
- $nodename:
- pattern: "^ethernet(@.*)?$"
- label:
- description: Human readable label on a port of a box.
- max-speed:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Specifies maximum speed in Mbit/s supported by the device.
- nvmem-cells:
- maxItems: 1
- description:
- Reference to an nvmem node for the MAC address
- nvmem-cell-names:
- const: mac-address
- phy-connection-type:
- description:
- Specifies interface type between the Ethernet device and a physical
- layer (PHY) device.
- enum:
- # There is not a standard bus between the MAC and the PHY,
- # something proprietary is being used to embed the PHY in the
- # MAC.
- - internal
- - mii
- - mii-lite
- - gmii
- - sgmii
- - psgmii
- - qsgmii
- - qusgmii
- - tbi
- - rev-mii
- - rmii
- - rev-rmii
- - moca
- # RX and TX delays are provided by the PCB. See below
- - rgmii
- # RX and TX delays are not provided by the PCB. This is the most
- # frequent case. See below
- - rgmii-id
- # TX delay is provided by the PCB. See below
- - rgmii-rxid
- # RX delay is provided by the PCB. See below
- - rgmii-txid
- - rtbi
- - smii
- - xgmii
- - trgmii
- - 1000base-x
- - 2500base-x
- - 5gbase-r
- - rxaui
- - xaui
- # 10GBASE-KR, XFI, SFI
- - 10gbase-kr
- - usxgmii
- - 10gbase-r
- - 25gbase-r
- - 10g-qxgmii
- phy-mode:
- $ref: "#/properties/phy-connection-type"
- pcs-handle:
- $ref: /schemas/types.yaml#/definitions/phandle-array
- items:
- maxItems: 1
- description:
- Specifies a reference to a node representing a PCS PHY device on a MDIO
- bus to link with an external PHY (phy-handle) if exists.
- pcs-handle-names:
- description:
- The name of each PCS in pcs-handle.
- phy-handle:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- Specifies a reference to a node representing a PHY device.
- phy:
- $ref: "#/properties/phy-handle"
- deprecated: true
- phy-device:
- $ref: "#/properties/phy-handle"
- deprecated: true
- ptp-timer:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- Specifies a reference to a node representing an IEEE 1588 PTP device.
- rx-fifo-depth:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- The size of the controller\'s receive fifo in bytes. This is used
- for components that can have configurable receive fifo sizes,
- and is useful for determining certain configuration settings
- such as flow control thresholds.
- sfp:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- Specifies a reference to a node representing a SFP cage.
- tx-fifo-depth:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- The size of the controller\'s transmit fifo in bytes. This
- is used for components that can have configurable fifo sizes.
- managed:
- description:
- Specifies the PHY management type. If auto is set and fixed-link
- is not specified, it uses MDIO for management.
- $ref: /schemas/types.yaml#/definitions/string
- default: auto
- enum:
- - auto
- - in-band-status
- fixed-link:
- oneOf:
- - $ref: /schemas/types.yaml#/definitions/uint32-array
- deprecated: true
- items:
- - minimum: 0
- maximum: 31
- description:
- Emulated PHY ID, choose any but unique to the all
- specified fixed-links
- - enum: [0, 1]
- description:
- Duplex configuration. 0 for half duplex or 1 for
- full duplex
- - enum: [10, 100, 1000, 2500, 10000]
- description:
- Link speed in Mbits/sec.
- - enum: [0, 1]
- description:
- Pause configuration. 0 for no pause, 1 for pause
- - enum: [0, 1]
- description:
- Asymmetric pause configuration. 0 for no asymmetric
- pause, 1 for asymmetric pause
- - type: object
- additionalProperties: false
- properties:
- speed:
- description:
- Link speed.
- $ref: /schemas/types.yaml#/definitions/uint32
- enum: [10, 100, 1000, 2500, 5000, 10000]
- full-duplex:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Indicates that full-duplex is used. When absent, half
- duplex is assumed.
- pause:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Indicates that pause should be enabled.
- asym-pause:
- $ref: /schemas/types.yaml#/definitions/flag
- description:
- Indicates that asym_pause should be enabled.
- link-gpios:
- maxItems: 1
- description:
- GPIO to determine if the link is up
- required:
- - speed
- leds:
- description:
- Describes the LEDs associated by Ethernet Controller.
- These LEDs are not integrated in the PHY and PHY doesn't have any
- control on them. Ethernet Controller regs are used to control
- these defined LEDs.
- type: object
- properties:
- '#address-cells':
- const: 1
- '#size-cells':
- const: 0
- patternProperties:
- '^led@[a-f0-9]+$':
- $ref: /schemas/leds/common.yaml#
- properties:
- reg:
- maxItems: 1
- description:
- This defines the LED index in the PHY or the MAC. It's really
- driver dependent and required for ports that define multiple
- LED for the same port.
- required:
- - reg
- unevaluatedProperties: false
- additionalProperties: false
- dependencies:
- pcs-handle-names: [pcs-handle]
- allOf:
- - $ref: /schemas/net/network-class.yaml#
- - if:
- properties:
- phy-mode:
- contains:
- enum:
- - rgmii
- - rgmii-rxid
- - rgmii-txid
- - rgmii-id
- then:
- properties:
- rx-internal-delay-ps:
- description:
- RGMII Receive Clock Delay defined in pico seconds. This is used for
- controllers that have configurable RX internal delays. If this
- property is present then the MAC applies the RX delay.
- tx-internal-delay-ps:
- description:
- RGMII Transmit Clock Delay defined in pico seconds. This is used for
- controllers that have configurable TX internal delays. If this
- property is present then the MAC applies the TX delay.
- additionalProperties: true
- # Informative
- # ===========
- #
- # 'phy-modes' & 'phy-connection-type' properties 'rgmii', 'rgmii-id',
- # 'rgmii-rxid', and 'rgmii-txid' are frequently used wrongly by
- # developers. This informative section clarifies their usage.
- #
- # The RGMII specification requires a 2ns delay between the data and
- # clock signals on the RGMII bus. How this delay is implemented is not
- # specified.
- #
- # One option is to make the clock traces on the PCB longer than the
- # data traces. A sufficient difference in length can provide the 2ns
- # delay. If both the RX and TX delays are implemented in this manner,
- # 'rgmii' should be used, so indicating the PCB adds the delays.
- #
- # If the PCB does not add these delays via extra long traces,
- # 'rgmii-id' should be used. Here, 'id' refers to 'internal delay',
- # where either the MAC or PHY adds the delay.
- #
- # If only one of the two delays are implemented via extra long clock
- # lines, either 'rgmii-rxid' or 'rgmii-txid' should be used,
- # indicating the MAC or PHY should implement one of the delays
- # internally, while the PCB implements the other delay.
- #
- # Device Tree describes hardware, and in this case, it describes the
- # PCB between the MAC and the PHY, if the PCB implements delays or
- # not.
- #
- # In practice, very few PCBs make use of extra long clock lines. Hence
- # any RGMII phy mode other than 'rgmii-id' is probably wrong, and is
- # unlikely to be accepted during review without details provided in
- # the commit description and comments in the .dts file.
- #
- # When the PCB does not implement the delays, the MAC or PHY must. As
- # such, this is software configuration, and so not described in Device
- # Tree.
- #
- # The following describes how Linux implements the configuration of
- # the MAC and PHY to add these delays when the PCB does not. As stated
- # above, developers often get this wrong, and the aim of this section
- # is reduce the frequency of these errors by Linux developers. Other
- # users of the Device Tree may implement it differently, and still be
- # consistent with both the normative and informative description
- # above.
- #
- # By default in Linux, when using phylib/phylink, the MAC is expected
- # to read the 'phy-mode' from Device Tree, not implement any delays,
- # and pass the value to the PHY. The PHY will then implement delays as
- # specified by the 'phy-mode'. The PHY should always be reconfigured
- # to implement the needed delays, replacing any setting performed by
- # strapping or the bootloader, etc.
- #
- # Experience to date is that all PHYs which implement RGMII also
- # implement the ability to add or not add the needed delays. Hence
- # this default is expected to work in all cases. Ignoring this default
- # is likely to be questioned by Reviews, and require a strong argument
- # to be accepted.
- #
- # There are a small number of cases where the MAC has hard coded
- # delays which cannot be disabled. The 'phy-mode' only describes the
- # PCB. The inability to disable the delays in the MAC does not change
- # the meaning of 'phy-mode'. It does however mean that a 'phy-mode' of
- # 'rgmii' is now invalid, it cannot be supported, since both the PCB
- # and the MAC and PHY adding delays cannot result in a functional
- # link. Thus the MAC should report a fatal error for any modes which
- # cannot be supported. When the MAC implements the delay, it must
- # ensure that the PHY does not also implement the same delay. So it
- # must modify the phy-mode it passes to the PHY, removing the delay it
- # has added. Failure to remove the delay will result in a
- # non-functioning link.
- #
- # Sometimes there is a need to fine tune the delays. Often the MAC or
- # PHY can perform this fine tuning. In the MAC node, the Device Tree
- # properties 'rx-internal-delay-ps' and 'tx-internal-delay-ps' should
- # be used to indicate fine tuning performed by the MAC. The values
- # expected here are small. A value of 2000ps, i.e 2ns, and a phy-mode
- # of 'rgmii' will not be accepted by Reviewers.
- #
- # If the PHY is to perform fine tuning, the properties
- # 'rx-internal-delay-ps' and 'tx-internal-delay-ps' in the PHY node
- # should be used. When the PHY is implementing delays, e.g. 'rgmii-id'
- # these properties should have a value near to 2000ps. If the PCB is
- # implementing delays, e.g. 'rgmii', a small value can be used to fine
- # tune the delay added by the PCB.
- ...
|