0001 LEDs connected to Broadcom BCM6358 controller
0002
0003 This controller is present on BCM6358 and BCM6368.
0004 In these SoCs there are Serial LEDs (LEDs connected to a 74x164 controller),
0005 which can either be controlled by software (exporting the 74x164 as spi-gpio.
0006 See Documentation/devicetree/bindings/gpio/fairchild,74hc595.yaml), or
0007 by hardware using this driver.
0008
0009 Required properties:
0010 - compatible : should be "brcm,bcm6358-leds".
0011 - #address-cells : must be 1.
0012 - #size-cells : must be 0.
0013 - reg : BCM6358 LED controller address and size.
0014
0015 Optional properties:
0016 - brcm,clk-div : SCK signal divider. Possible values are 1, 2, 4 and 8.
0017 Default : 1
0018 - brcm,clk-dat-low : Boolean, makes clock and data signals active low.
0019 Default : false
0020
0021 Each LED is represented as a sub-node of the brcm,bcm6358-leds device.
0022
0023 LED sub-node required properties:
0024 - reg : LED pin number (only LEDs 0 to 31 are valid).
0025
0026 LED sub-node optional properties:
0027 - label : see Documentation/devicetree/bindings/leds/common.txt
0028 - active-low : Boolean, makes LED active low.
0029 Default : false
0030 - default-state : see
0031 Documentation/devicetree/bindings/leds/common.txt
0032 - linux,default-trigger : see
0033 Documentation/devicetree/bindings/leds/common.txt
0034
0035 Examples:
0036 Scenario 1 : BCM6358
0037 leds0: led-controller@fffe00d0 {
0038 compatible = "brcm,bcm6358-leds";
0039 #address-cells = <1>;
0040 #size-cells = <0>;
0041 reg = <0xfffe00d0 0x8>;
0042
0043 alarm_white {
0044 reg = <0>;
0045 active-low;
0046 label = "white:alarm";
0047 };
0048 tv_white {
0049 reg = <2>;
0050 active-low;
0051 label = "white:tv";
0052 };
0053 tel_white {
0054 reg = <3>;
0055 active-low;
0056 label = "white:tel";
0057 };
0058 adsl_white {
0059 reg = <4>;
0060 active-low;
0061 label = "white:adsl";
0062 };
0063 };
0064
0065 Scenario 2 : BCM6368
0066 leds0: led-controller@100000d0 {
0067 compatible = "brcm,bcm6358-leds";
0068 #address-cells = <1>;
0069 #size-cells = <0>;
0070 reg = <0x100000d0 0x8>;
0071 brcm,pol-low;
0072 brcm,clk-div = <4>;
0073
0074 power_red {
0075 reg = <0>;
0076 active-low;
0077 label = "red:power";
0078 };
0079 power_green {
0080 reg = <1>;
0081 active-low;
0082 label = "green:power";
0083 default-state = "on";
0084 };
0085 power_blue {
0086 reg = <2>;
0087 label = "blue:power";
0088 };
0089 broadband_red {
0090 reg = <3>;
0091 active-low;
0092 label = "red:broadband";
0093 };
0094 broadband_green {
0095 reg = <4>;
0096 label = "green:broadband";
0097 };
0098 broadband_blue {
0099 reg = <5>;
0100 active-low;
0101 label = "blue:broadband";
0102 };
0103 wireless_red {
0104 reg = <6>;
0105 active-low;
0106 label = "red:wireless";
0107 };
0108 wireless_green {
0109 reg = <7>;
0110 active-low;
0111 label = "green:wireless";
0112 };
0113 wireless_blue {
0114 reg = <8>;
0115 label = "blue:wireless";
0116 };
0117 phone_red {
0118 reg = <9>;
0119 active-low;
0120 label = "red:phone";
0121 };
0122 phone_green {
0123 reg = <10>;
0124 active-low;
0125 label = "green:phone";
0126 };
0127 phone_blue {
0128 reg = <11>;
0129 label = "blue:phone";
0130 };
0131 upgrading_red {
0132 reg = <12>;
0133 active-low;
0134 label = "red:upgrading";
0135 };
0136 upgrading_green {
0137 reg = <13>;
0138 active-low;
0139 label = "green:upgrading";
0140 };
0141 upgrading_blue {
0142 reg = <14>;
0143 label = "blue:upgrading";
0144 };
0145 };