162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/phy/mscc,vsc7514-serdes.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Microsemi Ocelot SerDes muxing
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Alexandre Belloni <alexandre.belloni@bootlin.com>
1162306a36Sopenharmony_ci  - UNGLinuxDriver@microchip.com
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  On Microsemi Ocelot, there is a handful of registers in HSIO address
1562306a36Sopenharmony_ci  space for setting up the SerDes to switch port muxing.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  A SerDes X can be "muxed" to work with switch port Y or Z for example.
1862306a36Sopenharmony_ci  One specific SerDes can also be used as a PCIe interface.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  Hence, a SerDes represents an interface, be it an Ethernet or a PCIe one.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  There are two kinds of SerDes: SERDES1G supports 10/100Mbps in
2362306a36Sopenharmony_ci  half/full-duplex and 1000Mbps in full-duplex mode while SERDES6G supports
2462306a36Sopenharmony_ci  10/100Mbps in half/full-duplex and 1000/2500Mbps in full-duplex mode.
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  Also, SERDES6G number (aka "macro") 0 is the only interface supporting
2762306a36Sopenharmony_ci  QSGMII.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  This is a child of the HSIO syscon ("mscc,ocelot-hsio", see
3062306a36Sopenharmony_ci  Documentation/devicetree/bindings/mips/mscc.txt) on the Microsemi Ocelot.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciproperties:
3362306a36Sopenharmony_ci  compatible:
3462306a36Sopenharmony_ci    enum:
3562306a36Sopenharmony_ci      - mscc,vsc7514-serdes
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  "#phy-cells":
3862306a36Sopenharmony_ci    const: 2
3962306a36Sopenharmony_ci    description: |
4062306a36Sopenharmony_ci      The first number defines the input port to use for a given SerDes macro.
4162306a36Sopenharmony_ci      The second defines the macro to use. They are defined in
4262306a36Sopenharmony_ci      dt-bindings/phy/phy-ocelot-serdes.h
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_cirequired:
4562306a36Sopenharmony_ci  - compatible
4662306a36Sopenharmony_ci  - "#phy-cells"
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciadditionalProperties:
4962306a36Sopenharmony_ci  false
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciexamples:
5262306a36Sopenharmony_ci  - |
5362306a36Sopenharmony_ci    serdes: serdes {
5462306a36Sopenharmony_ci      compatible = "mscc,vsc7514-serdes";
5562306a36Sopenharmony_ci      #phy-cells = <2>;
5662306a36Sopenharmony_ci    };
57