162306a36Sopenharmony_ciLEDs connected to Broadcom BCM6358 controller
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThis controller is present on BCM6358 and BCM6368.
462306a36Sopenharmony_ciIn these SoCs there are Serial LEDs (LEDs connected to a 74x164 controller),
562306a36Sopenharmony_ciwhich can either be controlled by software (exporting the 74x164 as spi-gpio.
662306a36Sopenharmony_ciSee Documentation/devicetree/bindings/gpio/fairchild,74hc595.yaml), or
762306a36Sopenharmony_ciby hardware using this driver.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciRequired properties:
1062306a36Sopenharmony_ci  - compatible : should be "brcm,bcm6358-leds".
1162306a36Sopenharmony_ci  - #address-cells : must be 1.
1262306a36Sopenharmony_ci  - #size-cells : must be 0.
1362306a36Sopenharmony_ci  - reg : BCM6358 LED controller address and size.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciOptional properties:
1662306a36Sopenharmony_ci  - brcm,clk-div : SCK signal divider. Possible values are 1, 2, 4 and 8.
1762306a36Sopenharmony_ci    Default : 1
1862306a36Sopenharmony_ci  - brcm,clk-dat-low : Boolean, makes clock and data signals active low.
1962306a36Sopenharmony_ci    Default : false
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciEach LED is represented as a sub-node of the brcm,bcm6358-leds device.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciLED sub-node required properties:
2462306a36Sopenharmony_ci  - reg : LED pin number (only LEDs 0 to 31 are valid).
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciLED sub-node optional properties:
2762306a36Sopenharmony_ci  - label : see Documentation/devicetree/bindings/leds/common.txt
2862306a36Sopenharmony_ci  - active-low : Boolean, makes LED active low.
2962306a36Sopenharmony_ci    Default : false
3062306a36Sopenharmony_ci  - default-state : see
3162306a36Sopenharmony_ci    Documentation/devicetree/bindings/leds/common.txt
3262306a36Sopenharmony_ci  - linux,default-trigger : see
3362306a36Sopenharmony_ci    Documentation/devicetree/bindings/leds/common.txt
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciExamples:
3662306a36Sopenharmony_ciScenario 1 : BCM6358
3762306a36Sopenharmony_ci	leds0: led-controller@fffe00d0 {
3862306a36Sopenharmony_ci		compatible = "brcm,bcm6358-leds";
3962306a36Sopenharmony_ci		#address-cells = <1>;
4062306a36Sopenharmony_ci		#size-cells = <0>;
4162306a36Sopenharmony_ci		reg = <0xfffe00d0 0x8>;
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci		alarm_white {
4462306a36Sopenharmony_ci			reg = <0>;
4562306a36Sopenharmony_ci			active-low;
4662306a36Sopenharmony_ci			label = "white:alarm";
4762306a36Sopenharmony_ci		};
4862306a36Sopenharmony_ci		tv_white {
4962306a36Sopenharmony_ci			reg = <2>;
5062306a36Sopenharmony_ci			active-low;
5162306a36Sopenharmony_ci			label = "white:tv";
5262306a36Sopenharmony_ci		};
5362306a36Sopenharmony_ci		tel_white {
5462306a36Sopenharmony_ci			reg = <3>;
5562306a36Sopenharmony_ci			active-low;
5662306a36Sopenharmony_ci			label = "white:tel";
5762306a36Sopenharmony_ci		};
5862306a36Sopenharmony_ci		adsl_white {
5962306a36Sopenharmony_ci			reg = <4>;
6062306a36Sopenharmony_ci			active-low;
6162306a36Sopenharmony_ci			label = "white:adsl";
6262306a36Sopenharmony_ci		};
6362306a36Sopenharmony_ci	};
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciScenario 2 : BCM6368
6662306a36Sopenharmony_ci	leds0: led-controller@100000d0 {
6762306a36Sopenharmony_ci		compatible = "brcm,bcm6358-leds";
6862306a36Sopenharmony_ci		#address-cells = <1>;
6962306a36Sopenharmony_ci		#size-cells = <0>;
7062306a36Sopenharmony_ci		reg = <0x100000d0 0x8>;
7162306a36Sopenharmony_ci		brcm,pol-low;
7262306a36Sopenharmony_ci		brcm,clk-div = <4>;
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		power_red {
7562306a36Sopenharmony_ci			reg = <0>;
7662306a36Sopenharmony_ci			active-low;
7762306a36Sopenharmony_ci			label = "red:power";
7862306a36Sopenharmony_ci		};
7962306a36Sopenharmony_ci		power_green {
8062306a36Sopenharmony_ci			reg = <1>;
8162306a36Sopenharmony_ci			active-low;
8262306a36Sopenharmony_ci			label = "green:power";
8362306a36Sopenharmony_ci			default-state = "on";
8462306a36Sopenharmony_ci		};
8562306a36Sopenharmony_ci		power_blue {
8662306a36Sopenharmony_ci			reg = <2>;
8762306a36Sopenharmony_ci			label = "blue:power";
8862306a36Sopenharmony_ci		};
8962306a36Sopenharmony_ci		broadband_red {
9062306a36Sopenharmony_ci			reg = <3>;
9162306a36Sopenharmony_ci			active-low;
9262306a36Sopenharmony_ci			label = "red:broadband";
9362306a36Sopenharmony_ci		};
9462306a36Sopenharmony_ci		broadband_green {
9562306a36Sopenharmony_ci			reg = <4>;
9662306a36Sopenharmony_ci			label = "green:broadband";
9762306a36Sopenharmony_ci		};
9862306a36Sopenharmony_ci		broadband_blue {
9962306a36Sopenharmony_ci			reg = <5>;
10062306a36Sopenharmony_ci			active-low;
10162306a36Sopenharmony_ci			label = "blue:broadband";
10262306a36Sopenharmony_ci		};
10362306a36Sopenharmony_ci		wireless_red {
10462306a36Sopenharmony_ci			reg = <6>;
10562306a36Sopenharmony_ci			active-low;
10662306a36Sopenharmony_ci			label = "red:wireless";
10762306a36Sopenharmony_ci		};
10862306a36Sopenharmony_ci		wireless_green {
10962306a36Sopenharmony_ci			reg = <7>;
11062306a36Sopenharmony_ci			active-low;
11162306a36Sopenharmony_ci			label = "green:wireless";
11262306a36Sopenharmony_ci		};
11362306a36Sopenharmony_ci		wireless_blue {
11462306a36Sopenharmony_ci			reg = <8>;
11562306a36Sopenharmony_ci			label = "blue:wireless";
11662306a36Sopenharmony_ci		};
11762306a36Sopenharmony_ci		phone_red {
11862306a36Sopenharmony_ci			reg = <9>;
11962306a36Sopenharmony_ci			active-low;
12062306a36Sopenharmony_ci			label = "red:phone";
12162306a36Sopenharmony_ci		};
12262306a36Sopenharmony_ci		phone_green {
12362306a36Sopenharmony_ci			reg = <10>;
12462306a36Sopenharmony_ci			active-low;
12562306a36Sopenharmony_ci			label = "green:phone";
12662306a36Sopenharmony_ci		};
12762306a36Sopenharmony_ci		phone_blue {
12862306a36Sopenharmony_ci			reg = <11>;
12962306a36Sopenharmony_ci			label = "blue:phone";
13062306a36Sopenharmony_ci		};
13162306a36Sopenharmony_ci		upgrading_red {
13262306a36Sopenharmony_ci			reg = <12>;
13362306a36Sopenharmony_ci			active-low;
13462306a36Sopenharmony_ci			label = "red:upgrading";
13562306a36Sopenharmony_ci		};
13662306a36Sopenharmony_ci		upgrading_green {
13762306a36Sopenharmony_ci			reg = <13>;
13862306a36Sopenharmony_ci			active-low;
13962306a36Sopenharmony_ci			label = "green:upgrading";
14062306a36Sopenharmony_ci		};
14162306a36Sopenharmony_ci		upgrading_blue {
14262306a36Sopenharmony_ci			reg = <14>;
14362306a36Sopenharmony_ci			label = "blue:upgrading";
14462306a36Sopenharmony_ci		};
14562306a36Sopenharmony_ci	};
146