accel/qaic: Add AIC200 support
[drm/drm-misc.git] / Documentation / devicetree / bindings / leds / leds-bcm6328.yaml
blobf3a3ef99292995be183c0fe98e16c601ecfb3792
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/leds/leds-bcm6328.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: LEDs connected to Broadcom BCM6328 controller
9 maintainers:
10   - Álvaro Fernández Rojas <noltari@gmail.com>
12 description: |
13   This controller is present on BCM6318, BCM6328, BCM6362 and BCM63268.
14   In these SoCs it's possible to control LEDs both as GPIOs or by hardware.
15   However, on some devices there are Serial LEDs (LEDs connected to a 74x164
16   controller), which can either be controlled by software (exporting the 74x164
17   as spi-gpio. See
18   Documentation/devicetree/bindings/gpio/fairchild,74hc595.yaml), or by hardware
19   using this driver.
20   Some of these Serial LEDs are hardware controlled (e.g. ethernet LEDs) and
21   exporting the 74x164 as spi-gpio prevents those LEDs to be hardware
22   controlled, so the only chance to keep them working is by using this driver.
24   BCM6328 LED controller has a HWDIS register, which controls whether a LED
25   should be controlled by a hardware signal instead of the MODE register value,
26   with 0 meaning hardware control enabled and 1 hardware control disabled. This
27   is usually 1:1 for hardware to LED signals, but through the activity/link
28   registers you have some limited control over rerouting the LEDs (as
29   explained later in brcm,link-signal-sources). Even if a LED is hardware
30   controlled you are still able to make it blink or light it up if it isn't,
31   but you can't turn it off if the hardware decides to light it up. For this
32   reason, hardware controlled LEDs aren't registered as LED class devices.
34   Each LED is represented as a sub-node of the brcm,bcm6328-leds device.
36 properties:
37   compatible:
38     const: brcm,bcm6328-leds
40   reg:
41     maxItems: 1
43   brcm,serial-leds:
44     type: boolean
45     description: Enables Serial LEDs.
47   brcm,serial-mux:
48     type: boolean
49     description: Enables Serial LEDs multiplexing.
51   brcm,serial-clk-low:
52     type: boolean
53     description: Makes clock signal active low.
55   brcm,serial-dat-low:
56     type: boolean
57     description: Makes data signal active low.
59   brcm,serial-shift-inv:
60     type: boolean
61     description: Inverts Serial LEDs shift direction.
63   "#address-cells":
64     const: 1
66   "#size-cells":
67     const: 0
69 patternProperties:
70   "@[a-f0-9]+$":
71     type: object
73     $ref: common.yaml#
75     properties:
76       reg:
77         items:
78           - maximum: 23
79         description: LED pin number (only LEDs 0 to 23 are valid).
81       brcm,hardware-controlled:
82         type: boolean
83         description: Makes this LED hardware controlled.
85       brcm,link-signal-sources:
86         $ref: /schemas/types.yaml#/definitions/uint32-array
87         minItems: 1
88         maxItems: 4
89         description: >
90           An array of hardware link signal sources. Up to four link hardware
91           signals can get muxed into these LEDs. Only valid for LEDs 0 to 7,
92           where LED signals 0 to 3 may be muxed to LEDs 0 to 3, and signals 4 to
93           7 may be muxed to LEDs 4 to 7. A signal can be muxed to more than one
94           LED, and one LED can have more than one source signal.
96       brcm,activity-signal-sources:
97         $ref: /schemas/types.yaml#/definitions/uint32-array
98         minItems: 1
99         maxItems: 4
100         description: >
101           An array of hardware activity signal sources. Up to four activity
102           hardware signals can get muxed into these LEDs. Only valid for LEDs 0
103           to 7, where LED signals 0 to 3 may be muxed to LEDs 0 to 3, and
104           signals 4 to 7 may be muxed to LEDs 4 to 7. A signal can be muxed to
105           more than one LED, and one LED can have more than one source signal.
107     required:
108       - reg
110     unevaluatedProperties: false
112 required:
113   - reg
114   - "#address-cells"
115   - "#size-cells"
117 additionalProperties: false
119 examples:
120   - |
121     /* BCM6328 with 4 EPHY LEDs */
122     led-controller@10000800 {
123         compatible = "brcm,bcm6328-leds";
124         #address-cells = <1>;
125         #size-cells = <0>;
126         reg = <0x10000800 0x24>;
128         alarm_red@2 {
129             reg = <2>;
130             active-low;
131             label = "red:alarm";
132         };
134         inet_green@3 {
135             reg = <3>;
136             active-low;
137             label = "green:inet";
138         };
140         power_green@4 {
141             reg = <4>;
142             active-low;
143             label = "green:power";
144             default-state = "on";
145         };
147         ephy0_spd@17 {
148             reg = <17>;
149             brcm,hardware-controlled;
150         };
152         ephy1_spd@18 {
153             reg = <18>;
154             brcm,hardware-controlled;
155         };
157         ephy2_spd@19 {
158             reg = <19>;
159             brcm,hardware-controlled;
160         };
162         ephy3_spd@20 {
163             reg = <20>;
164             brcm,hardware-controlled;
165         };
166     };
167   - |
168     /* BCM63268 with Serial/GPHY0 LEDs */
169     led-controller@10001900 {
170         compatible = "brcm,bcm6328-leds";
171         #address-cells = <1>;
172         #size-cells = <0>;
173         reg = <0x10001900 0x24>;
174         brcm,serial-leds;
175         brcm,serial-dat-low;
176         brcm,serial-shift-inv;
178         gphy0_spd0@0 {
179             reg = <0>;
180             brcm,hardware-controlled;
181             brcm,link-signal-sources = <0>;
182         };
184         gphy0_spd1@1 {
185             reg = <1>;
186             brcm,hardware-controlled;
187             brcm,link-signal-sources = <1>;
188         };
190         inet_red@2 {
191             reg = <2>;
192             active-low;
193             label = "red:inet";
194         };
196         dsl_green@3 {
197             reg = <3>;
198             active-low;
199             label = "green:dsl";
200         };
202         usb_green@4 {
203             reg = <4>;
204             active-low;
205             label = "green:usb";
206         };
208         wps_green@7 {
209             reg = <7>;
210             active-low;
211             label = "green:wps";
212         };
214         inet_green@8 {
215             reg = <8>;
216             active-low;
217             label = "green:inet";
218         };
220         ephy0_act@9 {
221             reg = <9>;
222             brcm,hardware-controlled;
223         };
225         ephy1_act@10 {
226             reg = <10>;
227             brcm,hardware-controlled;
228         };
230         ephy2_act@11 {
231             reg = <11>;
232             brcm,hardware-controlled;
233         };
235         gphy0_act@12 {
236             reg = <12>;
237             brcm,hardware-controlled;
238         };
240         ephy0_spd@13 {
241             reg = <13>;
242             brcm,hardware-controlled;
243         };
245         ephy1_spd@14 {
246             reg = <14>;
247             brcm,hardware-controlled;
248         };
250         ephy2_spd@15 {
251             reg = <15>;
252             brcm,hardware-controlled;
253         };
255         power_green@20 {
256             reg = <20>;
257             active-low;
258             label = "green:power";
259             default-state = "on";
260         };
261     };
262   - |
263     /* BCM6362 with 1 LED for each EPHY */
264     led-controller@10001900 {
265         compatible = "brcm,bcm6328-leds";
266         #address-cells = <1>;
267         #size-cells = <0>;
268         reg = <0x10001900 0x24>;
270         usb@0 {
271             reg = <0>;
272             brcm,hardware-controlled;
273             brcm,link-signal-sources = <0>;
274             brcm,activity-signal-sources = <0>;
275             /* USB link/activity routed to USB LED */
276         };
278         inet@1 {
279             reg = <1>;
280             brcm,hardware-controlled;
281             brcm,activity-signal-sources = <1>;
282             /* INET activity routed to INET LED */
283         };
285         ephy0@4 {
286             reg = <4>;
287             brcm,hardware-controlled;
288             brcm,link-signal-sources = <4>;
289             /* EPHY0 link routed to EPHY0 LED */
290         };
292         ephy1@5 {
293             reg = <5>;
294             brcm,hardware-controlled;
295             brcm,link-signal-sources = <5>;
296             /* EPHY1 link routed to EPHY1 LED */
297         };
299         ephy2@6 {
300             reg = <6>;
301             brcm,hardware-controlled;
302             brcm,link-signal-sources = <6>;
303             /* EPHY2 link routed to EPHY2 LED */
304         };
306         ephy3@7 {
307             reg = <7>;
308             brcm,hardware-controlled;
309             brcm,link-signal-sources = <7>;
310             /* EPHY3 link routed to EPHY3 LED */
311         };
313         power_green@20 {
314             reg = <20>;
315             active-low;
316             label = "green:power";
317             default-state = "on";
318         };
319     };
320   - |
321     /* BCM6362 with 1 LED for all EPHYs */
322     led-controller@10001900 {
323         compatible = "brcm,bcm6328-leds";
324         #address-cells = <1>;
325         #size-cells = <0>;
326         reg = <0x10001900 0x24>;
328         usb@0 {
329             reg = <0>;
330             brcm,hardware-controlled;
331             brcm,link-signal-sources = <0 1>;
332             brcm,activity-signal-sources = <0 1>;
333             /* USB/INET link/activity routed to USB LED */
334         };
336         ephy@4 {
337             reg = <4>;
338             brcm,hardware-controlled;
339             brcm,link-signal-sources = <4 5 6 7>;
340             /* EPHY0/1/2/3 link routed to EPHY0 LED */
341         };
343         power_green@20 {
344             reg = <20>;
345             active-low;
346             label = "green:power";
347             default-state = "on";
348         };
349     };
350   - |
351     /* BCM6362 with EPHY LEDs swapped */
352     led-controller@10001900 {
353         compatible = "brcm,bcm6328-leds";
354         #address-cells = <1>;
355         #size-cells = <0>;
356         reg = <0x10001900 0x24>;
358         usb@0 {
359             reg = <0>;
360             brcm,hardware-controlled;
361             brcm,link-signal-sources = <0>;
362             brcm,activity-signal-sources = <0 1>;
363             /* USB link/act and INET act routed to USB LED */
364         };
366         ephy0@4 {
367             reg = <4>;
368             brcm,hardware-controlled;
369             brcm,link-signal-sources = <7>;
370             /* EPHY3 link routed to EPHY0 LED */
371         };
373         ephy1@5 {
374             reg = <5>;
375             brcm,hardware-controlled;
376             brcm,link-signal-sources = <6>;
377             /* EPHY2 link routed to EPHY1 LED */
378         };
380         ephy2@6 {
381             reg = <6>;
382             brcm,hardware-controlled;
383             brcm,link-signal-sources = <5>;
384             /* EPHY1 link routed to EPHY2 LED */
385         };
387         ephy3@7 {
388             reg = <7>;
389             brcm,hardware-controlled;
390             brcm,link-signal-sources = <4>;
391             /* EPHY0 link routed to EPHY3 LED */
392         };
394         power_green@20 {
395             reg = <20>;
396             active-low;
397             label = "green:power";
398             default-state = "on";
399         };
400     };