162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/mscc,ocelot.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Ocelot Externally-Controlled Ethernet Switch
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Colin Foster <colin.foster@in-advantage.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The Ocelot ethernet switch family contains chips that have an internal CPU
1462306a36Sopenharmony_ci  (VSC7513, VSC7514) and chips that don't (VSC7511, VSC7512). All switches have
1562306a36Sopenharmony_ci  the option to be controlled externally via external interfaces like SPI or
1662306a36Sopenharmony_ci  PCIe.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  The switch family is a multi-port networking switch that supports many
1962306a36Sopenharmony_ci  interfaces. Additionally, the device can perform pin control, MDIO buses, and
2062306a36Sopenharmony_ci  external GPIO expanders.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  compatible:
2462306a36Sopenharmony_ci    enum:
2562306a36Sopenharmony_ci      - mscc,vsc7512
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  reg:
2862306a36Sopenharmony_ci    maxItems: 1
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  "#address-cells":
3162306a36Sopenharmony_ci    const: 1
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  "#size-cells":
3462306a36Sopenharmony_ci    const: 1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  spi-max-frequency:
3762306a36Sopenharmony_ci    maxItems: 1
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cipatternProperties:
4062306a36Sopenharmony_ci  "^pinctrl@[0-9a-f]+$":
4162306a36Sopenharmony_ci    type: object
4262306a36Sopenharmony_ci    $ref: /schemas/pinctrl/mscc,ocelot-pinctrl.yaml
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  "^gpio@[0-9a-f]+$":
4562306a36Sopenharmony_ci    type: object
4662306a36Sopenharmony_ci    $ref: /schemas/pinctrl/microchip,sparx5-sgpio.yaml
4762306a36Sopenharmony_ci    properties:
4862306a36Sopenharmony_ci      compatible:
4962306a36Sopenharmony_ci        enum:
5062306a36Sopenharmony_ci          - mscc,ocelot-sgpio
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  "^mdio@[0-9a-f]+$":
5362306a36Sopenharmony_ci    type: object
5462306a36Sopenharmony_ci    $ref: /schemas/net/mscc,miim.yaml
5562306a36Sopenharmony_ci    properties:
5662306a36Sopenharmony_ci      compatible:
5762306a36Sopenharmony_ci        enum:
5862306a36Sopenharmony_ci          - mscc,ocelot-miim
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  "^ethernet-switch@[0-9a-f]+$":
6162306a36Sopenharmony_ci    type: object
6262306a36Sopenharmony_ci    $ref: /schemas/net/mscc,vsc7514-switch.yaml
6362306a36Sopenharmony_ci    unevaluatedProperties: false
6462306a36Sopenharmony_ci    properties:
6562306a36Sopenharmony_ci      compatible:
6662306a36Sopenharmony_ci        enum:
6762306a36Sopenharmony_ci          - mscc,vsc7512-switch
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cirequired:
7062306a36Sopenharmony_ci  - compatible
7162306a36Sopenharmony_ci  - reg
7262306a36Sopenharmony_ci  - '#address-cells'
7362306a36Sopenharmony_ci  - '#size-cells'
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciadditionalProperties: false
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciexamples:
7862306a36Sopenharmony_ci  - |
7962306a36Sopenharmony_ci    ocelot_clock: ocelot-clock {
8062306a36Sopenharmony_ci          compatible = "fixed-clock";
8162306a36Sopenharmony_ci          #clock-cells = <0>;
8262306a36Sopenharmony_ci          clock-frequency = <125000000>;
8362306a36Sopenharmony_ci      };
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci    spi {
8662306a36Sopenharmony_ci        #address-cells = <1>;
8762306a36Sopenharmony_ci        #size-cells = <0>;
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        soc@0 {
9062306a36Sopenharmony_ci            compatible = "mscc,vsc7512";
9162306a36Sopenharmony_ci            spi-max-frequency = <2500000>;
9262306a36Sopenharmony_ci            reg = <0>;
9362306a36Sopenharmony_ci            #address-cells = <1>;
9462306a36Sopenharmony_ci            #size-cells = <1>;
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci            mdio@7107009c {
9762306a36Sopenharmony_ci                compatible = "mscc,ocelot-miim";
9862306a36Sopenharmony_ci                #address-cells = <1>;
9962306a36Sopenharmony_ci                #size-cells = <0>;
10062306a36Sopenharmony_ci                reg = <0x7107009c 0x24>;
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci                sw_phy0: ethernet-phy@0 {
10362306a36Sopenharmony_ci                    reg = <0x0>;
10462306a36Sopenharmony_ci                };
10562306a36Sopenharmony_ci            };
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci            mdio@710700c0 {
10862306a36Sopenharmony_ci                compatible = "mscc,ocelot-miim";
10962306a36Sopenharmony_ci                pinctrl-names = "default";
11062306a36Sopenharmony_ci                pinctrl-0 = <&miim1_pins>;
11162306a36Sopenharmony_ci                #address-cells = <1>;
11262306a36Sopenharmony_ci                #size-cells = <0>;
11362306a36Sopenharmony_ci                reg = <0x710700c0 0x24>;
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci                sw_phy4: ethernet-phy@4 {
11662306a36Sopenharmony_ci                    reg = <0x4>;
11762306a36Sopenharmony_ci                };
11862306a36Sopenharmony_ci            };
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci            gpio: pinctrl@71070034 {
12162306a36Sopenharmony_ci                compatible = "mscc,ocelot-pinctrl";
12262306a36Sopenharmony_ci                gpio-controller;
12362306a36Sopenharmony_ci                #gpio-cells = <2>;
12462306a36Sopenharmony_ci                gpio-ranges = <&gpio 0 0 22>;
12562306a36Sopenharmony_ci                reg = <0x71070034 0x6c>;
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci                sgpio_pins: sgpio-pins {
12862306a36Sopenharmony_ci                    pins = "GPIO_0", "GPIO_1", "GPIO_2", "GPIO_3";
12962306a36Sopenharmony_ci                    function = "sg0";
13062306a36Sopenharmony_ci                };
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci                miim1_pins: miim1-pins {
13362306a36Sopenharmony_ci                    pins = "GPIO_14", "GPIO_15";
13462306a36Sopenharmony_ci                    function = "miim";
13562306a36Sopenharmony_ci                };
13662306a36Sopenharmony_ci            };
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci            gpio@710700f8 {
13962306a36Sopenharmony_ci                compatible = "mscc,ocelot-sgpio";
14062306a36Sopenharmony_ci                #address-cells = <1>;
14162306a36Sopenharmony_ci                #size-cells = <0>;
14262306a36Sopenharmony_ci                bus-frequency = <12500000>;
14362306a36Sopenharmony_ci                clocks = <&ocelot_clock>;
14462306a36Sopenharmony_ci                microchip,sgpio-port-ranges = <0 15>;
14562306a36Sopenharmony_ci                pinctrl-names = "default";
14662306a36Sopenharmony_ci                pinctrl-0 = <&sgpio_pins>;
14762306a36Sopenharmony_ci                reg = <0x710700f8 0x100>;
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci                sgpio_in0: gpio@0 {
15062306a36Sopenharmony_ci                    compatible = "microchip,sparx5-sgpio-bank";
15162306a36Sopenharmony_ci                    reg = <0>;
15262306a36Sopenharmony_ci                    gpio-controller;
15362306a36Sopenharmony_ci                    #gpio-cells = <3>;
15462306a36Sopenharmony_ci                    ngpios = <64>;
15562306a36Sopenharmony_ci                };
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci                sgpio_out1: gpio@1 {
15862306a36Sopenharmony_ci                    compatible = "microchip,sparx5-sgpio-bank";
15962306a36Sopenharmony_ci                    reg = <1>;
16062306a36Sopenharmony_ci                    gpio-controller;
16162306a36Sopenharmony_ci                    #gpio-cells = <3>;
16262306a36Sopenharmony_ci                    ngpios = <64>;
16362306a36Sopenharmony_ci                };
16462306a36Sopenharmony_ci            };
16562306a36Sopenharmony_ci        };
16662306a36Sopenharmony_ci    };
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci...
16962306a36Sopenharmony_ci
170