xref: /linux/Documentation/devicetree/bindings/net/pse-pd/realtek,pse-mcu-gen1.yaml (revision 91ec2035134982b98fab0609a9fd8480e8217dc1)
1*368990e9SJonas Jelonek# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*368990e9SJonas Jelonek%YAML 1.2
3*368990e9SJonas Jelonek---
4*368990e9SJonas Jelonek$id: http://devicetree.org/schemas/net/pse-pd/realtek,pse-mcu-gen1.yaml#
5*368990e9SJonas Jelonek$schema: http://devicetree.org/meta-schemas/core.yaml#
6*368990e9SJonas Jelonek
7*368990e9SJonas Jelonektitle: Realtek PSE MCU
8*368990e9SJonas Jelonek
9*368990e9SJonas Jelonekmaintainers:
10*368990e9SJonas Jelonek  - Jonas Jelonek <jelonek.jonas@gmail.com>
11*368990e9SJonas Jelonek
12*368990e9SJonas Jelonekdescription: |
13*368990e9SJonas Jelonek  A microcontroller (MCU) that manages the PSE (Power Sourcing Equipment)
14*368990e9SJonas Jelonek  hardware on a range of managed PoE switches. The host CPU talks only to
15*368990e9SJonas Jelonek  this MCU - over I2C/SMBus or UART - using a small message-based protocol;
16*368990e9SJonas Jelonek  the PSE silicon it drives sits behind the MCU and is never accessed
17*368990e9SJonas Jelonek  directly. For example, on the Zyxel GS1900-10HP the SoC reaches the MCU
18*368990e9SJonas Jelonek  over UART, and the MCU manages the on-board PSE chip.
19*368990e9SJonas Jelonek
20*368990e9SJonas Jelonek  This binding describes the MCU together with its Realtek firmware: the
21*368990e9SJonas Jelonek  firmware and its host protocol, which are stable across boards. The
22*368990e9SJonas Jelonek  microcontroller silicon is a general-purpose part that varies, and the
23*368990e9SJonas Jelonek  PSE silicon behind the MCU (Realtek RTL823x/RTL8239* or Broadcom
24*368990e9SJonas Jelonek  BCM59xxx) is reported by the MCU and detected at runtime - neither is
25*368990e9SJonas Jelonek  named here.
26*368990e9SJonas Jelonek
27*368990e9SJonas Jelonek  Two protocol generations exist, both Realtek's:
28*368990e9SJonas Jelonek    gen1  older boards, where the MCU fronts Broadcom PSE silicon
29*368990e9SJonas Jelonek    gen2  the altered protocol used with Realtek's own PSE silicon
30*368990e9SJonas Jelonek
31*368990e9SJonas Jelonek  On an I2C attachment the framing the MCU firmware expects is part of the
32*368990e9SJonas Jelonek  compatible: '-smbus' (reads carry a leading command byte and a repeated
33*368990e9SJonas Jelonek  start) or '-i2c' (bare block writes and reads). A UART attachment carries
34*368990e9SJonas Jelonek  no framing suffix; the transport is given by the parent 'serial' node.
35*368990e9SJonas Jelonek
36*368990e9SJonas Jelonek  Each board additionally carries a device-specific compatible that falls
37*368990e9SJonas Jelonek  back to one of the protocol compatibles above. Drivers bind on the
38*368990e9SJonas Jelonek  protocol compatible; the device-specific string identifies the board and
39*368990e9SJonas Jelonek  reserves a place for a future per-board quirk without having to retrofit
40*368990e9SJonas Jelonek  device trees already in the field.
41*368990e9SJonas Jelonek
42*368990e9SJonas Jelonekproperties:
43*368990e9SJonas Jelonek  compatible:
44*368990e9SJonas Jelonek    oneOf:
45*368990e9SJonas Jelonek      # UART
46*368990e9SJonas Jelonek      - items:
47*368990e9SJonas Jelonek          - enum:
48*368990e9SJonas Jelonek              - zyxel,gs1900-10hp-a1-pse
49*368990e9SJonas Jelonek          - const: realtek,pse-mcu-gen1
50*368990e9SJonas Jelonek
51*368990e9SJonas Jelonek      # I2C, SMBus framing
52*368990e9SJonas Jelonek      - items:
53*368990e9SJonas Jelonek          - enum:
54*368990e9SJonas Jelonek              - zyxel,gs1920-24hp-v2-pse
55*368990e9SJonas Jelonek          - const: realtek,pse-mcu-gen1-smbus
56*368990e9SJonas Jelonek
57*368990e9SJonas Jelonek      # UART
58*368990e9SJonas Jelonek      - items:
59*368990e9SJonas Jelonek          - enum:
60*368990e9SJonas Jelonek              - zyxel,gs1900-10hp-b1-pse
61*368990e9SJonas Jelonek              - zyxel,xmg1915-10ep-pse
62*368990e9SJonas Jelonek          - const: realtek,pse-mcu-gen2
63*368990e9SJonas Jelonek
64*368990e9SJonas Jelonek      # I2C, SMBus framing
65*368990e9SJonas Jelonek      - items:
66*368990e9SJonas Jelonek          - enum:
67*368990e9SJonas Jelonek              - zyxel,xs1930-12hp-pse
68*368990e9SJonas Jelonek          - const: realtek,pse-mcu-gen2-smbus
69*368990e9SJonas Jelonek
70*368990e9SJonas Jelonek      # I2C, raw framing
71*368990e9SJonas Jelonek      - items:
72*368990e9SJonas Jelonek          - enum:
73*368990e9SJonas Jelonek              - linksys,lgs328mpc-v2-pse
74*368990e9SJonas Jelonek          - const: realtek,pse-mcu-gen2-i2c
75*368990e9SJonas Jelonek
76*368990e9SJonas Jelonek  reg:
77*368990e9SJonas Jelonek    maxItems: 1
78*368990e9SJonas Jelonek
79*368990e9SJonas Jelonek  reset-gpios:
80*368990e9SJonas Jelonek    description: Reset line of the MCU.
81*368990e9SJonas Jelonek    maxItems: 1
82*368990e9SJonas Jelonek
83*368990e9SJonas Jelonek  disable-ports-gpios:
84*368990e9SJonas Jelonek    description:
85*368990e9SJonas Jelonek      Hardware gate that forces all ports into admin-disabled state while
86*368990e9SJonas Jelonek      asserted.
87*368990e9SJonas Jelonek    maxItems: 1
88*368990e9SJonas Jelonek
89*368990e9SJonas Jelonekrequired:
90*368990e9SJonas Jelonek  - compatible
91*368990e9SJonas Jelonek
92*368990e9SJonas JelonekallOf:
93*368990e9SJonas Jelonek  - $ref: pse-controller.yaml#
94*368990e9SJonas Jelonek  # A '-smbus'/'-i2c' compatible is an I2C attachment: it has 'reg' and
95*368990e9SJonas Jelonek  # cannot carry serial bus properties. A bare gen compatible is a UART
96*368990e9SJonas Jelonek  # attachment: no 'reg', the transport comes from the parent serial node.
97*368990e9SJonas Jelonek  - if:
98*368990e9SJonas Jelonek      properties:
99*368990e9SJonas Jelonek        compatible:
100*368990e9SJonas Jelonek          contains:
101*368990e9SJonas Jelonek            enum:
102*368990e9SJonas Jelonek              - realtek,pse-mcu-gen1-smbus
103*368990e9SJonas Jelonek              - realtek,pse-mcu-gen2-smbus
104*368990e9SJonas Jelonek              - realtek,pse-mcu-gen2-i2c
105*368990e9SJonas Jelonek    then:
106*368990e9SJonas Jelonek      required:
107*368990e9SJonas Jelonek        - reg
108*368990e9SJonas Jelonek      properties:
109*368990e9SJonas Jelonek        current-speed: false
110*368990e9SJonas Jelonek        max-speed: false
111*368990e9SJonas Jelonek    else:
112*368990e9SJonas Jelonek      allOf:
113*368990e9SJonas Jelonek        - $ref: /schemas/serial/serial-peripheral-props.yaml#
114*368990e9SJonas Jelonek
115*368990e9SJonas Jelonek      properties:
116*368990e9SJonas Jelonek        reg: false
117*368990e9SJonas Jelonek
118*368990e9SJonas JelonekunevaluatedProperties: false
119*368990e9SJonas Jelonek
120*368990e9SJonas Jelonekexamples:
121*368990e9SJonas Jelonek  # SMBus-framed I2C attachment
122*368990e9SJonas Jelonek  - |
123*368990e9SJonas Jelonek    i2c {
124*368990e9SJonas Jelonek        #address-cells = <1>;
125*368990e9SJonas Jelonek        #size-cells = <0>;
126*368990e9SJonas Jelonek
127*368990e9SJonas Jelonek        ethernet-pse@20 {
128*368990e9SJonas Jelonek            compatible = "zyxel,xs1930-12hp-pse", "realtek,pse-mcu-gen2-smbus";
129*368990e9SJonas Jelonek            reg = <0x20>;
130*368990e9SJonas Jelonek
131*368990e9SJonas Jelonek            pse-pis {
132*368990e9SJonas Jelonek                #address-cells = <1>;
133*368990e9SJonas Jelonek                #size-cells = <0>;
134*368990e9SJonas Jelonek
135*368990e9SJonas Jelonek                pse-pi@0 {
136*368990e9SJonas Jelonek                    reg = <0>;
137*368990e9SJonas Jelonek                    #pse-cells = <0>;
138*368990e9SJonas Jelonek                };
139*368990e9SJonas Jelonek            };
140*368990e9SJonas Jelonek        };
141*368990e9SJonas Jelonek    };
142*368990e9SJonas Jelonek
143*368990e9SJonas Jelonek  # Raw-I2C-framed attachment
144*368990e9SJonas Jelonek  - |
145*368990e9SJonas Jelonek    i2c {
146*368990e9SJonas Jelonek        #address-cells = <1>;
147*368990e9SJonas Jelonek        #size-cells = <0>;
148*368990e9SJonas Jelonek
149*368990e9SJonas Jelonek        ethernet-pse@20 {
150*368990e9SJonas Jelonek            compatible = "linksys,lgs328mpc-v2-pse", "realtek,pse-mcu-gen2-i2c";
151*368990e9SJonas Jelonek            reg = <0x20>;
152*368990e9SJonas Jelonek
153*368990e9SJonas Jelonek            pse-pis {
154*368990e9SJonas Jelonek                #address-cells = <1>;
155*368990e9SJonas Jelonek                #size-cells = <0>;
156*368990e9SJonas Jelonek
157*368990e9SJonas Jelonek                pse-pi@0 {
158*368990e9SJonas Jelonek                    reg = <0>;
159*368990e9SJonas Jelonek                    #pse-cells = <0>;
160*368990e9SJonas Jelonek                };
161*368990e9SJonas Jelonek            };
162*368990e9SJonas Jelonek        };
163*368990e9SJonas Jelonek    };
164*368990e9SJonas Jelonek
165*368990e9SJonas Jelonek  # UART attachment
166*368990e9SJonas Jelonek  - |
167*368990e9SJonas Jelonek    serial {
168*368990e9SJonas Jelonek        ethernet-pse {
169*368990e9SJonas Jelonek            compatible = "zyxel,gs1900-10hp-a1-pse", "realtek,pse-mcu-gen1";
170*368990e9SJonas Jelonek            current-speed = <19200>;
171*368990e9SJonas Jelonek
172*368990e9SJonas Jelonek            pse-pis {
173*368990e9SJonas Jelonek                #address-cells = <1>;
174*368990e9SJonas Jelonek                #size-cells = <0>;
175*368990e9SJonas Jelonek
176*368990e9SJonas Jelonek                pse-pi@0 {
177*368990e9SJonas Jelonek                    reg = <0>;
178*368990e9SJonas Jelonek                    #pse-cells = <0>;
179*368990e9SJonas Jelonek                };
180*368990e9SJonas Jelonek            };
181*368990e9SJonas Jelonek        };
182*368990e9SJonas Jelonek    };
183