379 lines
13 KiB
YAML
379 lines
13 KiB
YAML
#
|
|
# Copyright (c) 2021, Weidmueller Interface GmbH & Co. KG
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
description: Xilinx GEM Ethernet controller
|
|
|
|
compatible: "xlnx,gem"
|
|
|
|
include: ethernet.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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Receive bad preamble. When set, frames with
|
|
non-standard preamble will not be rejected.
|
|
|
|
ipg-stretch:
|
|
type: boolean
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Enable frames to be received in half-duplex
|
|
mode while transmitting.
|
|
|
|
rx-checksum-offload:
|
|
type: boolean
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Enable reception of 1536 byte frames.
|
|
Normally, the GEM rejects any frame above 1518 bytes.
|
|
|
|
unicast-hash:
|
|
type: boolean
|
|
required: false
|
|
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
|
|
required: false
|
|
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
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Reject broadcast frames. When set, frames
|
|
addressed to the all-ones broadcast address will be rejected.
|
|
|
|
promiscuous-mode:
|
|
type: boolean
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Enable promiscuous mode. When set, all valid
|
|
frames will be accepted.
|
|
|
|
discard-non-vlan:
|
|
type: boolean
|
|
required: false
|
|
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
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Enables full duplex reception and transmission.
|
|
|
|
discard-rx-frame-ahb-unavail:
|
|
type: boolean
|
|
required: false
|
|
description: |
|
|
Optional feature flag - Discard received packets when no AHB resource
|
|
is available.
|
|
|
|
ahb-packet-endian-swap:
|
|
type: boolean
|
|
required: false
|
|
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
|
|
required: false
|
|
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.
|