| # Copyright(c) 2024 Intel Corporation. |
| # SPDX - License - Identifier : Apache - 2.0 |
| |
| compatible: "snps,dwcxgmac" |
| |
| description: Synopsys DesignWareCore XGMAC |
| |
| include: |
| - name: reset-device.yaml |
| - name: ethernet-controller.yaml |
| |
| properties: |
| reg: |
| required: true |
| interrupts: |
| required: true |
| max-frame-size: |
| type: int |
| default: 1518 |
| description: | |
| Maximum ethernet frame size. The current ethernet frame sizes |
| supported by hardware are standard and jumbo (up to 16KB) frames. This |
| means that normally xgmac will reject any frame above max-frame-size |
| value. The default value is 1518, which represents an usual |
| IEEE 802.3 ethernet frame: |
| Ethernet Frame [ 14 MAC HEADER | 1500 MTU | 4 FCS ] = 1518 bytes |
| max-speed: |
| type: int |
| enum: |
| - 10 |
| - 100 |
| - 1000 |
| - 2500 |
| default: 1000 |
| description: | |
| This specifies maximum speed in Mbit/s supported by the device. The |
| xgmac driver supports 10Mbit/s, 100Mbit/s, 1000Mbit/s, and 2500Mbit/s. Using 1000, |
| as default value, enables driver to configure 10 and 100Mbit/s speeds. |
| 2500Mbit/s speed can be used only with Soft PCS. When selected driver assumes |
| soft PCS is connected to XGMAC through GMII. make sure the phy-connection-type is |
| selected as gmii when 2500Mbit/s speed is selected. |
| tx-fifo-size: |
| type: int |
| enum: |
| - 1024 |
| - 2048 |
| - 4096 |
| - 8192 |
| - 16384 |
| - 32768 |
| - 65536 |
| - 131072 |
| - 262144 |
| default: 32768 |
| description: | |
| Specifies the size of the MTL Transmit FIFO |
| rx-fifo-size: |
| type: int |
| enum: |
| - 1024 |
| - 2048 |
| - 4096 |
| - 8192 |
| - 16384 |
| - 32768 |
| - 65536 |
| - 131072 |
| - 262144 |
| default: 32768 |
| description: | |
| Specifies the size of the MTL Receive FIFO |
| num-dma-ch: |
| type: int |
| required: true |
| description: | |
| Number of dma channels range: 1 to 8. |
| num-tx-queues: |
| type: int |
| required: true |
| description: | |
| Number of hardware TX queues range: 1 to 8. |
| num-rx-queues: |
| type: int |
| required: true |
| description: | |
| Number of hardware RX queues range: 1 to 8. |
| num-tc: |
| type: int |
| default: 1 |
| description: | |
| Number of traffic classes range: 1 to 7. |
| full-duplex-mode-en: |
| type: boolean |
| required: true |
| description: | |
| MAC communication mode to full duplex mode. |
| wr-osr-lmt: |
| type: int |
| default: 31 |
| description: | |
| AXI Maximum Write Outstanding Request Limit.This value |
| limits the maximum outstanding request on the AXI write |
| interface. Maximum outstanding requests = WR_OSR_LMT + 1 |
| rd-osr-lmt: |
| type: int |
| default: 31 |
| description: | |
| AXI Maximum Read Outstanding Request Limit.This value |
| limits the maximum outstanding request on the AXI read |
| interface. Maximum outstanding requests = WR_OSR_LMT + 1 |
| pbl: |
| type: int |
| default: 32 |
| description: | |
| Programmable burst length range: 4,5,16,32,64,128,256 |
| edma-tdps: |
| type: int |
| default: 1 |
| description: | |
| Tx Descriptor Pre-fetch threshold Size. |
| This field controls the threshold in the Descriptor cache after |
| which the DMA starts pre-fetching the TxDMA descriptors. The |
| DMA engine for all TxDMA channels initiate requests for the |
| descriptor fetches as soon as the number of descriptors in the |
| cache memory for that DMA channel, falls below or equal to |
| the programmed threshold (each descriptor is 16 bytes) |
| Range: 0,1,2,3,4,5 |
| edma-rdps: |
| type: int |
| default: 1 |
| description: | |
| Rx Descriptor Pre-fetch threshold Size. |
| This field controls the threshold in the Descriptor cache after |
| which the DMA starts pre-fetching the RxDMA descriptors. The |
| DMA engine for all RxDMA channels initiate requests for the |
| descriptor fetches as soon as the number of descriptors in the |
| cache memory for that DMA channel, falls below or equal to |
| the programmed threshold (each descriptor is 16 bytes) |
| Range: 0,1,2,3,4,5 |
| pblx8: |
| type: boolean |
| description: | |
| 8xPBL mode. |
| When this is set to true, the PBL value is multiplied eight times. |
| Therefore, the DMA transfers the data in 8, 16, 32, 64, 128, and 256 |
| beats depending on the PBL value. |
| ubl: |
| type: boolean |
| description: | |
| AXI Undefined Burst Length. |
| 1: The AXI master can perform burst transfers that are equal to or less |
| than the maximum allowed burst length enabled. |
| 0: The AXI master performs one of the following burst transfers: Burst |
| transfers of fixed burst lengths as indicated by the BLEN256, BLEN128, |
| BLEN64, BLEN32, BLEN16, BLEN8, or BLEN4 field. |
| blen4: |
| type: boolean |
| description: | |
| AXI Burst Length 4. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 4 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen8: |
| type: boolean |
| description: | |
| AXI Burst Length 8. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 8 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen16: |
| type: boolean |
| description: | |
| AXI Burst Length 16. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 16 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen32: |
| type: boolean |
| description: | |
| AXI Burst Length 32. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 32 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen64: |
| type: boolean |
| description: | |
| AXI Burst Length 64. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 64 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen128: |
| type: boolean |
| description: | |
| AXI Burst Length 128. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 128 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| blen256: |
| type: boolean |
| description: | |
| AXI Burst Length 256. |
| When this enabled and the mixed_burst is disabled, the AXI master |
| can select a burst length of 256 on the AXI interface. |
| When the mixed_burst enabled, enabling this field has no effect. |
| aal: |
| type: boolean |
| description: | |
| Address-Aligned Beats. |
| When this is enabled, the AXI master performs address-aligned |
| burst transfers on Read and Write channels. |
| eame: |
| type: boolean |
| description: | |
| Enhanced Address Mode Enable. |
| DMA master enables the enhanced address mode (40-bit or 48-bit addressing mode). |
| In this mode, the DMA engine uses either the 40-bit or 48-bit address, depending |
| on the configuration. |
| dma-ch-mss: |
| type: int |
| default: 4096 |
| description: | |
| Maximum Segment Size. |
| This field specifies the maximum segment size that must be |
| used while segmenting the Transmit packet. This field is valid |
| only if the TSE enabled. |
| dma-ch-tdrl: |
| type: int |
| default: 512 |
| description: | |
| Transmit Descriptor Ring Length. |
| This field sets the maximum number of Tx descriptors in the |
| circular descriptor ring. The maximum number of descriptors is |
| limited to 16384 descriptors. |
| dma-ch-rdrl: |
| type: int |
| default: 512 |
| description: | |
| Receive Descriptor Ring Length. |
| This field sets the maximum number of Rx descriptors in the |
| circular descriptor ring. The maximum number of descriptors is |
| limited to 16384 descriptors. |
| dma-ch-rbsz: |
| type: int |
| default: 16383 |
| description: | |
| Receive Buffer size. |
| This field indicates the size of the Rx buffers specified in bytes |
| allocated by the software to store the packets the Rx DMA |
| transfers to the host memory. The maximum buffer size is |
| limited to 16K bytes. The buffer size is applicable to payload |
| buffers when split headers are enabled. |
| dma-ch-arbs: |
| type: int |
| default: 0 |
| description: | |
| Alternate Receive Buffer Size |
| Indicates size in bytes for Buffer 1 when ARBS is set |
| to a non-zero value (when split header(SPH) feature is not enabled). |
| When split header feature is enabled, ARBS indicates the |
| buffer size for header data. The maximum alternate buffer is |
| limited to 1016 or 1008-bytes depending on the data bus |
| widths (64-bit or 128-bit respectively). When ARBS=0, Rx |
| Buffer1 and Rx Buffer2 sizes are based on RBSZ field. Width of |
| ARBS field is 7 or 6-bits depending on the data bus widths |
| (64-bit or 128-bit respectively). |
| dma-ch-rxpbl: |
| type: int |
| default: 32 |
| description: | |
| Receive Programmable Burst Length. |
| These field indicate the maximum number of beats to be |
| transferred in one DMA data transfer. |
| dma-ch-txpbl: |
| type: int |
| default: 32 |
| description: | |
| Transmit Programmable Burst Length. |
| These field indicate the maximum number of beats to be |
| transferred in one DMA data transfer. |
| dma-ch-sph: |
| type: boolean |
| description: | |
| Header-Payload Split. |
| When this field is set, the DMA splits the header and payload in |
| the Receive path. The DMA writes the header to the Buffer |
| Address1. The DMA writes the payload to the buffer to which |
| the Buffer Address2 is pointing. |
| The software must ensure that the header fits into the Receive |
| buffers. If the header length exceeds the receive buffer size, |
| the DMA does not split the header and payload. |
| dma-ch-edse: |
| type: boolean |
| description: | |
| Enhanced Descriptor Enable. |
| When this field is set, the corresponding channel uses |
| enhanced Descriptors. |
| dma-ch-tse: |
| type: boolean |
| description: | |
| TCP Segmentation Enabled. |
| When this field is set, the DMA performs the TCP segmentation |
| for packets in Channel. The TCP segmentation is done only |
| for those packets for which the TSE is set in the Tx Normal |
| descriptor. |
| dma-ch-osp: |
| type: boolean |
| description: | |
| Operate on Second Packet. |
| When this field is set, it instructs the DMA to process the second |
| packet of the Transmit data even before closing the descriptor |
| of the first packet. |
| mtl-raa: |
| type: boolean |
| description: | |
| Receive Arbitration Algorithm. |
| This field is used to select the arbitration algorithm for the Rx |
| side. 0: Strict Priority (SP), 1: Weighted Strict Priority (WSP) |
| mtl-etsalg: |
| type: int |
| default: 0 |
| description: | |
| ETS Algorithm. |
| This field selects the type of ETS algorithm to be applied for |
| traffic classes whose transmission selection algorithm (TSA) is |
| set to ETS: |
| 0: WRR algorithm |
| 1: WFQ algorithm |
| 2: DWRR algorithm |
| rxq-dyn-dma-en: |
| type: int |
| default: 1 |
| description: | |
| Receive Queue Enabled for Dynamic DMA Channel Selection. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| rxq-dma-ch-sel: |
| type: uint8-array |
| default: [0, 1, 2, 3, 4, 5, 6, 7] |
| description: | |
| Receive Queue Mapped to DMA Channel. this field does not have |
| effect when rxQ-DynDma-En is enabled. |
| range 0 - 7 |
| txq-size: |
| type: uint8-array |
| default: [127] |
| description: | |
| This field indicates the size of the allocated Transmit queues |
| in blocks of 256 bytes. = (txQ-size + 1) x 256 |
| range: 0 - 7 |
| map-queue-tc: |
| type: uint8-array |
| default: [0] |
| description: | |
| Queue to Traffic Class Mapping. range 0 - 7 |
| tx-threshold-ctrl: |
| type: uint8-array |
| default: [0] |
| description: | |
| Transmit Threshold Control. |
| These field control the threshold level of the MTL Tx Queue. |
| Transmission starts when the packet size within the MTL Tx |
| Queue is larger than the threshold. In addition, full packets |
| with length less than the threshold are also transmitted. This |
| field us used only when Transmit Store and Forward is disabled. |
| range 0 - 7 |
| 0: 64 |
| 1: reserved |
| 2: 96 |
| 3: 128 |
| 4: 192 |
| 5: 256 |
| 6: 384 |
| 7: 512 |
| rx-threshold-ctrl: |
| type: uint8-array |
| default: [0] |
| description: | |
| The received packet is transferred to the application or DMA |
| when the packet size within the MTL Rx queue is larger than |
| the threshold. In addition, full packets with length less than the |
| threshold are automatically transferred. The value of 11 is not |
| applicable if the size of the configured Rx Queue is 128 bytes. |
| This field is valid only when the RSF bit is zero. This field is |
| ignored when the RSF field is set to 1. |
| range 0 - 3 |
| 0: 64 |
| 1: reserved |
| 2: 96 |
| 3: 128 |
| rxq-size: |
| type: uint8-array |
| default: [127] |
| description: | |
| Receive Queue Size. This field indicates the size of the allocated |
| Receive queues in blocks 256 bytes. = (rxQ-size + 1) x 256 |
| Range: 0 - 127 , |
| tx-store-fwrd-en: |
| type: int |
| default: 255 |
| description: | |
| Transmit Store and Forward. When this field is set, the transmission |
| starts when a full packet resides in the MTL Tx Queue. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| hfc-en: |
| type: int |
| default: 0 |
| description: | |
| Enable Hardware Flow Control. When this field is set, the flow control |
| signal operation, based on the fill-level of Rx queue, is enabled. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| cs-error-pkt-drop-dis: |
| type: int |
| default: 0 |
| description: | |
| Disable Dropping of TCP/IP Checksum Error Packets |
| Each bit position of this field maps to a queue. there are total 8 queues |
| rx-store-fwrd-en: |
| type: int |
| default: 255 |
| description: | |
| Receive Store and Forward. When this field is set, DWC_xgmac reads a |
| packet from the Rx queue only after the complete packet has been written to it. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| fep-en: |
| type: int |
| default: 0 |
| description: | |
| Forward Error Packets. When this bit is set, all packets except the runt error |
| packets are forwarded to the application or DMA. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| fup-en: |
| type: int |
| default: 0 |
| description: | |
| Forward Undersized Good Packets. When this field is set, the Rx queue forwards |
| the undersized good packets. |
| Each bit position of this field maps to a queue. there are total 8 queues |
| priorities-map-tc: |
| type: array |
| default: [0] |
| description: | |
| Priorities Mapped to Traffic Class. This field determines if the transmit |
| queues associated with the traffic class should be blocked from transmitting |
| for the specified pause time when a PFC packet is received with priorities |
| matching the priorities programmed in this field. |
| range: 0 - 7 and max array size is 8 |
| ex: <0,1,2,3,4,5,6,7> |
| tx-sel-algorithm: |
| type: uint8-array |
| default: [0] |
| description: | |
| Transmission Selection Algorithm. This field is used to assign a transmission |
| selection algorithm for this traffic class. |
| range: 0 -strict priority |
| 1 - Credit based shaper |
| 2 - Enhanced Transmission Selection |
| jumbo-pkt-en: |
| type: boolean |
| description: | |
| Jumbo Packet Enable. |
| When this bit is set, the MAC allows jumbo packets of 9018 |
| bytes (9022 bytes for VLAN tagged packets) without reporting |
| a giant packet error in the Rx packet status |
| gaint-pkt-size-limit: |
| type: int |
| default: 9018 |
| description: | |
| Giant Packet Size Limit. |
| If the received packet size is greater than the value |
| programmed in this field in units of bytes, the MAC declares |
| the received packet as Giant packet. The value programmed in |
| this field must be greater than or equal to 1518 bytes. Any |
| other programmed value is considered as 1518 bytes. |