xref: /OK3568_Linux_fs/u-boot/doc/device-tree-bindings/leds/leds-bcm6328.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunLEDs connected to Broadcom BCM6328 controller
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThis controller is present on BCM6318, BCM6328, BCM6362 and BCM63268.
4*4882a593SmuzhiyunIn these SoCs it's possible to control LEDs both as GPIOs or by hardware.
5*4882a593SmuzhiyunHowever, on some devices there are Serial LEDs (LEDs connected to a 74x164
6*4882a593Smuzhiyuncontroller), which can either be controlled by software (exporting the 74x164
7*4882a593Smuzhiyunas spi-gpio. See Documentation/devicetree/bindings/gpio/gpio-74x164.txt), or
8*4882a593Smuzhiyunby hardware using this driver.
9*4882a593SmuzhiyunSome of these Serial LEDs are hardware controlled (e.g. ethernet LEDs) and
10*4882a593Smuzhiyunexporting the 74x164 as spi-gpio prevents those LEDs to be hardware
11*4882a593Smuzhiyuncontrolled, so the only chance to keep them working is by using this driver.
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunRequired properties:
14*4882a593Smuzhiyun  - compatible : should be "brcm,bcm6328-leds".
15*4882a593Smuzhiyun  - #address-cells : must be 1.
16*4882a593Smuzhiyun  - #size-cells : must be 0.
17*4882a593Smuzhiyun  - reg : BCM6328 LED controller address and size.
18*4882a593Smuzhiyun
19*4882a593SmuzhiyunOptional properties:
20*4882a593Smuzhiyun  - brcm,serial-leds : Boolean, enables Serial LEDs.
21*4882a593Smuzhiyun    Default : false
22*4882a593Smuzhiyun  - brcm,serial-mux : Boolean, enables Serial LEDs multiplexing.
23*4882a593Smuzhiyun    Default : false
24*4882a593Smuzhiyun  - brcm,serial-clk-low : Boolean, makes clock signal active low.
25*4882a593Smuzhiyun    Default : false
26*4882a593Smuzhiyun  - brcm,serial-dat-low : Boolean, makes data signal active low.
27*4882a593Smuzhiyun    Default : false
28*4882a593Smuzhiyun  - brcm,serial-shift-inv : Boolean, inverts Serial LEDs shift direction.
29*4882a593Smuzhiyun    Default : false
30*4882a593Smuzhiyun
31*4882a593SmuzhiyunEach LED is represented as a sub-node of the brcm,bcm6328-leds device.
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunLED sub-node required properties:
34*4882a593Smuzhiyun  - reg : LED pin number (only LEDs 0 to 23 are valid).
35*4882a593Smuzhiyun
36*4882a593SmuzhiyunLED sub-node optional properties:
37*4882a593Smuzhiyun  - label : see Documentation/devicetree/bindings/leds/common.txt
38*4882a593Smuzhiyun  - active-low : Boolean, makes LED active low.
39*4882a593Smuzhiyun    Default : false
40*4882a593Smuzhiyun
41*4882a593SmuzhiyunExamples:
42*4882a593SmuzhiyunScenario 1 : BCM6328 with 4 GPIO LEDs
43*4882a593Smuzhiyun	leds0: led-controller@10000800 {
44*4882a593Smuzhiyun		compatible = "brcm,bcm6328-leds";
45*4882a593Smuzhiyun		#address-cells = <1>;
46*4882a593Smuzhiyun		#size-cells = <0>;
47*4882a593Smuzhiyun		reg = <0x10000800 0x24>;
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun		alarm_red@2 {
50*4882a593Smuzhiyun			reg = <2>;
51*4882a593Smuzhiyun			active-low;
52*4882a593Smuzhiyun			label = "red:alarm";
53*4882a593Smuzhiyun		};
54*4882a593Smuzhiyun		inet_green@3 {
55*4882a593Smuzhiyun			reg = <3>;
56*4882a593Smuzhiyun			active-low;
57*4882a593Smuzhiyun			label = "green:inet";
58*4882a593Smuzhiyun		};
59*4882a593Smuzhiyun		power_green@4 {
60*4882a593Smuzhiyun			reg = <4>;
61*4882a593Smuzhiyun			active-low;
62*4882a593Smuzhiyun			label = "green:power";
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun	};
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunScenario 2 : BCM63268 with Serial LEDs
67*4882a593Smuzhiyun	leds0: led-controller@10001900 {
68*4882a593Smuzhiyun		compatible = "brcm,bcm6328-leds";
69*4882a593Smuzhiyun		#address-cells = <1>;
70*4882a593Smuzhiyun		#size-cells = <0>;
71*4882a593Smuzhiyun		reg = <0x10001900 0x24>;
72*4882a593Smuzhiyun		brcm,serial-leds;
73*4882a593Smuzhiyun		brcm,serial-dat-low;
74*4882a593Smuzhiyun		brcm,serial-shift-inv;
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun		inet_red@2 {
77*4882a593Smuzhiyun			reg = <2>;
78*4882a593Smuzhiyun			active-low;
79*4882a593Smuzhiyun			label = "red:inet";
80*4882a593Smuzhiyun		};
81*4882a593Smuzhiyun		dsl_green@3 {
82*4882a593Smuzhiyun			reg = <3>;
83*4882a593Smuzhiyun			active-low;
84*4882a593Smuzhiyun			label = "green:dsl";
85*4882a593Smuzhiyun		};
86*4882a593Smuzhiyun		usb_green@4 {
87*4882a593Smuzhiyun			reg = <4>;
88*4882a593Smuzhiyun			active-low;
89*4882a593Smuzhiyun			label = "green:usb";
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun		wps_green@7 {
92*4882a593Smuzhiyun			reg = <7>;
93*4882a593Smuzhiyun			active-low;
94*4882a593Smuzhiyun			label = "green:wps";
95*4882a593Smuzhiyun		};
96*4882a593Smuzhiyun		inet_green@8 {
97*4882a593Smuzhiyun			reg = <8>;
98*4882a593Smuzhiyun			active-low;
99*4882a593Smuzhiyun			label = "green:inet";
100*4882a593Smuzhiyun		};
101*4882a593Smuzhiyun		power_green@20 {
102*4882a593Smuzhiyun			reg = <20>;
103*4882a593Smuzhiyun			active-low;
104*4882a593Smuzhiyun			label = "green:power";
105*4882a593Smuzhiyun		};
106*4882a593Smuzhiyun	};
107