xref: /freebsd/sys/contrib/device-tree/Bindings/leds/leds-bcm6358.txt (revision 2eb4d8dc723da3cf7d735a3226ae49da4c8c5dbc)
1LEDs connected to Broadcom BCM6358 controller
2
3This controller is present on BCM6358 and BCM6368.
4In these SoCs there are Serial LEDs (LEDs connected to a 74x164 controller),
5which can either be controlled by software (exporting the 74x164 as spi-gpio.
6See Documentation/devicetree/bindings/gpio/fairchild,74hc595.yaml), or
7by hardware using this driver.
8
9Required properties:
10  - compatible : should be "brcm,bcm6358-leds".
11  - #address-cells : must be 1.
12  - #size-cells : must be 0.
13  - reg : BCM6358 LED controller address and size.
14
15Optional properties:
16  - brcm,clk-div : SCK signal divider. Possible values are 1, 2, 4 and 8.
17    Default : 1
18  - brcm,clk-dat-low : Boolean, makes clock and data signals active low.
19    Default : false
20
21Each LED is represented as a sub-node of the brcm,bcm6358-leds device.
22
23LED sub-node required properties:
24  - reg : LED pin number (only LEDs 0 to 31 are valid).
25
26LED sub-node optional properties:
27  - label : see Documentation/devicetree/bindings/leds/common.txt
28  - active-low : Boolean, makes LED active low.
29    Default : false
30  - default-state : see
31    Documentation/devicetree/bindings/leds/common.txt
32  - linux,default-trigger : see
33    Documentation/devicetree/bindings/leds/common.txt
34
35Examples:
36Scenario 1 : BCM6358
37	leds0: led-controller@fffe00d0 {
38		compatible = "brcm,bcm6358-leds";
39		#address-cells = <1>;
40		#size-cells = <0>;
41		reg = <0xfffe00d0 0x8>;
42
43		alarm_white {
44			reg = <0>;
45			active-low;
46			label = "white:alarm";
47		};
48		tv_white {
49			reg = <2>;
50			active-low;
51			label = "white:tv";
52		};
53		tel_white {
54			reg = <3>;
55			active-low;
56			label = "white:tel";
57		};
58		adsl_white {
59			reg = <4>;
60			active-low;
61			label = "white:adsl";
62		};
63	};
64
65Scenario 2 : BCM6368
66	leds0: led-controller@100000d0 {
67		compatible = "brcm,bcm6358-leds";
68		#address-cells = <1>;
69		#size-cells = <0>;
70		reg = <0x100000d0 0x8>;
71		brcm,pol-low;
72		brcm,clk-div = <4>;
73
74		power_red {
75			reg = <0>;
76			active-low;
77			label = "red:power";
78		};
79		power_green {
80			reg = <1>;
81			active-low;
82			label = "green:power";
83			default-state = "on";
84		};
85		power_blue {
86			reg = <2>;
87			label = "blue:power";
88		};
89		broadband_red {
90			reg = <3>;
91			active-low;
92			label = "red:broadband";
93		};
94		broadband_green {
95			reg = <4>;
96			label = "green:broadband";
97		};
98		broadband_blue {
99			reg = <5>;
100			active-low;
101			label = "blue:broadband";
102		};
103		wireless_red {
104			reg = <6>;
105			active-low;
106			label = "red:wireless";
107		};
108		wireless_green {
109			reg = <7>;
110			active-low;
111			label = "green:wireless";
112		};
113		wireless_blue {
114			reg = <8>;
115			label = "blue:wireless";
116		};
117		phone_red {
118			reg = <9>;
119			active-low;
120			label = "red:phone";
121		};
122		phone_green {
123			reg = <10>;
124			active-low;
125			label = "green:phone";
126		};
127		phone_blue {
128			reg = <11>;
129			label = "blue:phone";
130		};
131		upgrading_red {
132			reg = <12>;
133			active-low;
134			label = "red:upgrading";
135		};
136		upgrading_green {
137			reg = <13>;
138			active-low;
139			label = "green:upgrading";
140		};
141		upgrading_blue {
142			reg = <14>;
143			label = "blue:upgrading";
144		};
145	};
146