| # |
| # Copyright (c) 2021, Weidmueller Interface GmbH & Co. KG |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| |
| description: Xilinx GEM Ethernet controller |
| |
| compatible: "xlnx,gem" |
| |
| include: ethernet-controller.yaml |
| |
| properties: |
| reg: |
| required: true |
| |
| interrupts: |
| required: true |
| |
| clock-frequency: |
| type: int |
| required: true |
| description: | |
| Specifies the base clock frequency from which the GEM's TX clock |
| frequency will be derived using two dividers in the respective GEM's |
| clock control register in the CRL_APB. The GEM's TX clock frequency |
| is determined by the current link speed reported by the PHY, to |
| which it will be adjusted at run-time. Therefore, the value of this |
| item must be set to the clock frequency of the PLL supplying the |
| respective GEM's TX clock - by default, this is the IO PLL. |
| |
| mdc-divider: |
| type: int |
| required: true |
| description: | |
| The MDC clock divider for the respective GEM. This is the divider |
| applied to the LPD_LSBUS clock in order to derive MDIO interface |
| clock driving communications with the attached PHY. Refer to the |
| ZynqMP register documentation (ug1087), network_config (GEM) Register |
| Description, bits [20:18] to determine the appropriate divider for |
| the current target's LPD LSBUS clock frequency. |
| |
| init-mdio-phy: |
| type: boolean |
| description: | |
| Activates the management of a PHY associated with the controller in- |
| stance. If this parameter is activated at the board level, the de- |
| fault values of the associated parameters mdio-phy-address, phy-poll- |
| interval, link-speed and advertise-lower-link-speeds should be checked |
| and overwritten at the board level if required. |
| |
| mdio-phy-address: |
| type: int |
| required: true |
| description: | |
| The address on the MDIO bus of the PHY associated with the controller |
| instance. Set the address to 0 for auto-detection (first responding |
| PHY will be claimed by the driver, watch out in case of shared MDIO |
| use), or to a fixed address between 1 and 32. |
| |
| phy-poll-interval: |
| type: int |
| required: true |
| description: | |
| PHY status polling interval in milliseconds for a driver instance |
| managing an associated PHY. |
| |
| link-speed: |
| type: int |
| required: true |
| description: | |
| Nominal link speed. If no PHY is managed by an instance of this driver, |
| the respective controller will be configured to match the link speed |
| specified here. If a PHY is managed by the driver, advertisement of |
| the link speed specified here will be requested. If the optional pro- |
| perty advertise-lower-link-speeds is set, advertisement of the link |
| speed specified here plus any valid link speed below this value will |
| be requested. |
| enum: |
| - 1 |
| - 2 |
| - 3 |
| |
| advertise-lower-link-speeds: |
| type: boolean |
| description: | |
| Indicates to a driver instance which manages an associated PHY on |
| the MDIO bus to include link speeds lower than the nominal value |
| set in the link-speed property in the advertisement when requesting |
| link speed auto-negotiation with a peer system. |
| |
| handle-rx-in-isr: |
| type: boolean |
| description: | |
| Moves the handling of the frame received interrupt including the |
| transfer of packet data from the DMA to network packet buffers and |
| the subsequent propagation of the received packets to the network |
| stack into the context of the ISR. Due to the unpredictability of |
| the runtime of the ISR whenever large amounts of data are received, |
| handling of the RX interrupt is normally deferred to the context |
| of the system work queue. |
| |
| handle-tx-in-workq: |
| type: boolean |
| description: | |
| Moves the handling of the frame transmission done interrupt into the |
| context of the system work queue. By default, TX done handling is per- |
| formed in the context of the ISR, as it only involves a limited number |
| of memory accesses. This option CAN NOT be used if any component ex- |
| ists within the current system setup that triggers the transmission |
| of packets from within the context of the system work queue! |
| |
| amba-ahb-dbus-width: |
| type: int |
| required: true |
| description: AMBA AHB data bus width. |
| enum: |
| - 0 |
| - 1 |
| - 2 |
| |
| amba-ahb-burst-length: |
| type: int |
| required: true |
| description: AMBA AHB burst length for DMA operations. |
| enum: |
| - 1 |
| - 4 |
| - 8 |
| - 16 |
| |
| hw-rx-buffer-size: |
| type: int |
| required: true |
| description: | |
| Hardware RX buffer size, scalable between 1 kB and 8 kB, where the full |
| 8 kB should be the default. |
| enum: |
| - 0 |
| - 1 |
| - 2 |
| - 3 |
| |
| hw-rx-buffer-offset: |
| type: int |
| required: true |
| description: | |
| Data offset in the hardware RX packet buffer (in bytes). Valid range is |
| 0-3 bytes. |
| |
| hw-tx-buffer-size-full: |
| type: boolean |
| description: | |
| When set, the hardware TX data buffer will make use of the full 4 kB |
| that are available. If unset, the hardware TX data buffer will be |
| limited to 2 kB. |
| |
| rx-buffer-descriptors: |
| type: int |
| required: true |
| description: | |
| The number of descriptors to be allocated in the RX buffer descriptor |
| ring. Must be <= 255. |
| |
| rx-buffer-size: |
| type: int |
| required: true |
| description: | |
| The size of each receive data buffer, must be a multiple of 8, highest |
| valid value is 16320, values less than 64 are not really useful. |
| |
| tx-buffer-descriptors: |
| type: int |
| required: true |
| description: | |
| The number of descriptors to be allocated in the TX buffer descriptor |
| ring. Must be <= 255. |
| |
| tx-buffer-size: |
| type: int |
| required: true |
| description: | |
| The size of each transmit data buffer, highest valid value is 16380, |
| values less than 64 are not really useful. |
| |
| ignore-ipg-rxer: |
| type: boolean |
| description: | |
| Optional feature flag - Ignore IPG rx_er. When set, rx_er has no |
| effect on the GEM's operation when rx_dv is low. Set this when using |
| the RGMII wrapper in half-duplex mode. |
| |
| disable-reject-nsp: |
| type: boolean |
| description: | |
| Optional feature flag - Receive bad preamble. When set, frames with |
| non-standard preamble will not be rejected. |
| |
| ipg-stretch: |
| type: boolean |
| description: | |
| Optional feature flag - Enable IPG stretch. When set, the transmit |
| IPG can be increased above 96 bit times depending on the previous |
| frame length using the IPG stretch register. |
| |
| sgmii-mode: |
| type: boolean |
| description: | |
| Optional feature flag - Enable SGMII mode. Changes the behaviour of |
| the auto-negotiation advertisement and link partner ability registers |
| to meet the requirements of SGMII and reduces the duration of the link |
| timer from 10 ms to 1.6 ms. |
| |
| disable-reject-fcs-crc-errors: |
| type: boolean |
| description: | |
| Optional feature flag - Disable rejection of FCS/CRC errors. |
| When set, frames with FCS/CRC errors will not be rejected. FCS error |
| statistics will still be collected for frames with bad FCS and FCS |
| status will be recorded in the frame's DMA descriptor. This option |
| should not be activated for normal operation. |
| |
| rx-halfdup-while-tx: |
| type: boolean |
| description: | |
| Optional feature flag - Enable frames to be received in half-duplex |
| mode while transmitting. |
| |
| rx-checksum-offload: |
| type: boolean |
| description: | |
| Optional feature flag - Enable RX IP/TCP/UDP checksum offload to |
| hardware. Frames with bad IP, TCP or UDP checksums will be discarded. |
| This option is NOT supported by the QEMU implementation of the GEM! |
| |
| tx-checksum-offload: |
| type: boolean |
| description: | |
| Optional feature flag - Enable TX IP/TCP/UDP checksum offload to |
| hardware. This option is NOT supported by the QEMU implementation |
| of the GEM! |
| |
| disable-pause-copy: |
| type: boolean |
| description: | |
| Optional feature flag - Do not copy received pause frames to memory. |
| Set this option in order to prevent valid pause frames from being |
| copied to memory. When set, pause frames are not copied to memory |
| regardless of the state of the copy all frames bit, whether a hash |
| match is found or whether a type ID match is identified. If a desti- |
| nation address match is found the pause frame will be copied to |
| memory. Note that valid pause frames received will still increment |
| pause statistics and pause the transmission of frames as required. |
| |
| discard-rx-fcs: |
| type: boolean |
| description: | |
| Optional feature flag - Remove FCS of received frames. |
| When set, received frames will be written to memory without their |
| frame check sequence (last 4 bytes). The frame length indicated will |
| be reduced by four bytes in this mode. |
| |
| discard-rx-length-errors: |
| type: boolean |
| description: | |
| Optional feature flag - Discard frames with length field errors. |
| When set, frames with a measured length shorter than the extracted |
| length field (as indicated by bytes 13 and 14 in a non-VLAN tagged |
| frame) will be discarded. This only applies to frames with a length |
| field less than 0x0600. |
| |
| pause-frame: |
| type: boolean |
| description: | |
| Optional feature flag - Enable pause. When set, transmission will |
| pause if a non zero 802.3 classic pause frame is received and PFC |
| has not been negotiated. |
| |
| tbi: |
| type: boolean |
| description: | |
| Optional feature flag - Enable TBI. When set, the TBI interface is en- |
| bled instead of the GMII/MII interface. |
| |
| ext-address-match: |
| type: boolean |
| description: | |
| Optional feature flag - Enable external address match. When set, the |
| external address match interface can be used to copy frames to memory. |
| |
| long-frame-rx-support: |
| type: boolean |
| description: | |
| Optional feature flag - Enable reception of 1536 byte frames. |
| Normally, the GEM rejects any frame above 1518 bytes. |
| |
| unicast-hash: |
| type: boolean |
| description: | |
| Optional feature flag - Enable unicast hash. When set, unicast frames |
| will be accepted when the 6 bit hash function of the destination |
| address points to a bit that is set in the hash register. |
| |
| multicast-hash: |
| type: boolean |
| description: | |
| Optional feature flag - Enable multicast hash. When set, mutlicast |
| frames will be accepted when the 6 bit hash function of the desti- |
| nation address points to a bit that is set in the hash register. |
| |
| reject-broadcast: |
| type: boolean |
| description: | |
| Optional feature flag - Reject broadcast frames. When set, frames |
| addressed to the all-ones broadcast address will be rejected. |
| |
| promiscuous-mode: |
| type: boolean |
| description: | |
| Optional feature flag - Enable promiscuous mode. When set, all valid |
| frames will be accepted. |
| |
| discard-non-vlan: |
| type: boolean |
| description: Optional feature flag - Discard non-VLAN frames. When set, |
| only VLAN tagged frames will be passed to the address matching logic. |
| |
| full-duplex: |
| type: boolean |
| description: | |
| Optional feature flag - Enables full duplex reception and transmission. |
| |
| discard-rx-frame-ahb-unavail: |
| type: boolean |
| description: | |
| Optional feature flag - Discard received packets when no AHB resource |
| is available. |
| |
| ahb-packet-endian-swap: |
| type: boolean |
| description: | |
| Optional feature flag - Enable AHB packet data endianness swap to big |
| endian. If this flag is not set, data will be little endian. |
| |
| ahb-md-endian-swap: |
| type: boolean |
| description: | |
| Optional feature flag - Enable AHB management descriptor data endian- |
| ness swap to big endian. If this flag is not set, data will be little |
| endian. |