At the moment, mEMACs are configured almost completely based on the phy-connection-type. That is, if the phy interface is RGMII, it assumed that RGMII is supported. For some interfaces, it is assumed that the RCW/bootloader has set up the SerDes properly. This is generally OK, but restricts runtime reconfiguration. The actual link state is never reported. To address these shortcomings, the driver will need additional information. First, it needs to know how to access the PCS/PMAs (in order to configure them and get the link status). The SGMII PCS/PMA is the only currently-described PCS/PMA. Add the XFI and QSGMII PCS/PMAs as well. The XFI (and 10GBASE-KR) PCS/PMA is a c45 "phy" which sits on the same MDIO bus as SGMII PCS/PMA. By default they will have conflicting addresses, but they are also not enabled at the same time by default. Therefore, we can let the XFI PCS/PMA be the default when phy-connection-type is xgmii. This will allow for backwards-compatibility. QSGMII, however, cannot work with the current binding. This is because the QSGMII PCS/PMAs are only present on one MAC's MDIO bus. At the moment this is worked around by having every MAC write to the PCS/PMA addresses (without checking if they are present). This only works if each MAC has the same configuration, and only if we don't need to know the status. Because the QSGMII PCS/PMA will typically be located on a different MDIO bus than the MAC's SGMII PCS/PMA, there is no fallback for the QSGMII PCS/PMA. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
173 lines
5.0 KiB
YAML
173 lines
5.0 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/net/fsl,fman-dtsec.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: NXP FMan MAC
|
|
|
|
maintainers:
|
|
- Madalin Bucur <madalin.bucur@nxp.com>
|
|
|
|
description: |
|
|
Each FMan has several MACs, each implementing an Ethernet interface. Earlier
|
|
versions of FMan used the Datapath Three Speed Ethernet Controller (dTSEC) for
|
|
10/100/1000 MBit/s speeds, and the 10-Gigabit Ethernet Media Access Controller
|
|
(10GEC) for 10 Gbit/s speeds. Later versions of FMan use the Multirate
|
|
Ethernet Media Access Controller (mEMAC) to handle all speeds.
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- fsl,fman-dtsec
|
|
- fsl,fman-xgec
|
|
- fsl,fman-memac
|
|
|
|
cell-index:
|
|
maximum: 64
|
|
description: |
|
|
FManV2:
|
|
register[bit] MAC cell-index
|
|
============================================================
|
|
FM_EPI[16] XGEC 8
|
|
FM_EPI[16+n] dTSECn n-1
|
|
FM_NPI[11+n] dTSECn n-1
|
|
n = 1,..,5
|
|
|
|
FManV3:
|
|
register[bit] MAC cell-index
|
|
============================================================
|
|
FM_EPI[16+n] mEMACn n-1
|
|
FM_EPI[25] mEMAC10 9
|
|
|
|
FM_NPI[11+n] mEMACn n-1
|
|
FM_NPI[10] mEMAC10 9
|
|
FM_NPI[11] mEMAC9 8
|
|
n = 1,..8
|
|
|
|
FM_EPI and FM_NPI are located in the FMan memory map.
|
|
|
|
2. SoC registers:
|
|
|
|
- P2041, P3041, P4080 P5020, P5040:
|
|
register[bit] FMan MAC cell
|
|
Unit index
|
|
============================================================
|
|
DCFG_DEVDISR2[7] 1 XGEC 8
|
|
DCFG_DEVDISR2[7+n] 1 dTSECn n-1
|
|
DCFG_DEVDISR2[15] 2 XGEC 8
|
|
DCFG_DEVDISR2[15+n] 2 dTSECn n-1
|
|
n = 1,..5
|
|
|
|
- T1040, T2080, T4240, B4860:
|
|
register[bit] FMan MAC cell
|
|
Unit index
|
|
============================================================
|
|
DCFG_CCSR_DEVDISR2[n-1] 1 mEMACn n-1
|
|
DCFG_CCSR_DEVDISR2[11+n] 2 mEMACn n-1
|
|
n = 1,..6,9,10
|
|
|
|
EVDISR, DCFG_DEVDISR2 and DCFG_CCSR_DEVDISR2 are located in
|
|
the specific SoC "Device Configuration/Pin Control" Memory
|
|
Map.
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
fsl,fman-ports:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
maxItems: 2
|
|
description: |
|
|
An array of two references: the first is the FMan RX port and the second
|
|
is the TX port used by this MAC.
|
|
|
|
ptp-timer:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description: A reference to the IEEE1588 timer
|
|
|
|
phys:
|
|
description: A reference to the SerDes lane(s)
|
|
maxItems: 1
|
|
|
|
phy-names:
|
|
items:
|
|
- const: serdes
|
|
|
|
pcsphy-handle:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
minItems: 1
|
|
maxItems: 3
|
|
deprecated: true
|
|
description: See pcs-handle.
|
|
|
|
pcs-handle:
|
|
minItems: 1
|
|
maxItems: 3
|
|
description: |
|
|
A reference to the various PCSs (typically found on the SerDes). If
|
|
pcs-handle-names is absent, and phy-connection-type is "xgmii", then the first
|
|
reference will be assumed to be for "xfi". Otherwise, if pcs-handle-names is
|
|
absent, then the first reference will be assumed to be for "sgmii".
|
|
|
|
pcs-handle-names:
|
|
minItems: 1
|
|
maxItems: 3
|
|
items:
|
|
enum:
|
|
- sgmii
|
|
- qsgmii
|
|
- xfi
|
|
description: The type of each PCS in pcsphy-handle.
|
|
|
|
tbi-handle:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description: A reference to the (TBI-based) PCS
|
|
|
|
required:
|
|
- compatible
|
|
- cell-index
|
|
- reg
|
|
- fsl,fman-ports
|
|
- ptp-timer
|
|
|
|
dependencies:
|
|
pcs-handle-names:
|
|
- pcs-handle
|
|
|
|
allOf:
|
|
- $ref: ethernet-controller.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: fsl,fman-dtsec
|
|
then:
|
|
required:
|
|
- tbi-handle
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
ethernet@e0000 {
|
|
compatible = "fsl,fman-dtsec";
|
|
cell-index = <0>;
|
|
reg = <0xe0000 0x1000>;
|
|
fsl,fman-ports = <&fman1_rx8 &fman1_tx28>;
|
|
ptp-timer = <&ptp_timer>;
|
|
tbi-handle = <&tbi0>;
|
|
};
|
|
- |
|
|
ethernet@e8000 {
|
|
cell-index = <4>;
|
|
compatible = "fsl,fman-memac";
|
|
reg = <0xe8000 0x1000>;
|
|
fsl,fman-ports = <&fman0_rx_0x0c &fman0_tx_0x2c>;
|
|
ptp-timer = <&ptp_timer0>;
|
|
pcs-handle = <&pcsphy4>, <&qsgmiib_pcs1>;
|
|
pcs-handle-names = "sgmii", "qsgmii";
|
|
phys = <&serdes1 1>;
|
|
phy-names = "serdes";
|
|
};
|
|
...
|