Skip to content

Commit

Permalink
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
Browse files Browse the repository at this point in the history
…git/j.anaszewski/linux-leds

Pull LED driver updates from Jacek Anaszewski:
 "Three new LED class drivers and some minor fixes and improvementes to
  the leds-gpio driver, LED Trigger core and documentation"

* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
  leds: triggers: Check return value of kobject_uevent_env()
  leds: triggers: Return from led_trigger_set() if there is nothing to do
  leds: gpio: fix and simplify error handling in gpio_leds_create
  leds: gpio: switch to managed version of led_classdev_register
  leds: gpio: fix and simplify reading property "label"
  leds: gpio: simplify gpio_leds_create
  leds: gpio: add helper cdev_to_gpio_led_data
  leds: gpio: fix an unhandled error case in create_gpio_led
  leds: gpio: introduce gpio_blink_set_t
  leds: add driver for Mellanox systems LEDs
  Documentation: move oneshot trigger attributes documentation to ABI
  leds: centralize definition of "default-state" property
  leds: add PM8058 LEDs driver
  leds: pm8058: add device tree bindings
  leds: do not overflow sysfs buffer in led_trigger_show
  leds: make triggers explicitly non-modular
  DT: leds: Add bindings for ISSI is31fl319x
  leds: is31fl319x: 1/3/6/9-channel light effect led driver
  • Loading branch information
torvalds committed Oct 4, 2016
2 parents 21f54dd + 6f3bad9 commit f80fa18
Show file tree
Hide file tree
Showing 20 changed files with 1,446 additions and 99 deletions.
3 changes: 2 additions & 1 deletion Documentation/ABI/testing/sysfs-class-led
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ Description:
of led events.
You can change triggers in a similar manner to the way an IO
scheduler is chosen. Trigger specific parameters can appear in
/sys/class/leds/<led> once a given trigger is selected.
/sys/class/leds/<led> once a given trigger is selected. For
their documentation see sysfs-class-led-trigger-*.

What: /sys/class/leds/<led>/inverted
Date: January 2011
Expand Down
36 changes: 36 additions & 0 deletions Documentation/ABI/testing/sysfs-class-led-trigger-oneshot
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
What: /sys/class/leds/<led>/delay_on
Date: Jun 2012
KernelVersion: 3.6
Contact: [email protected]
Description:
Specifies for how many milliseconds the LED has to stay at
LED_FULL brightness after it has been armed.
Defaults to 100 ms.

What: /sys/class/leds/<led>/delay_off
Date: Jun 2012
KernelVersion: 3.6
Contact: [email protected]
Description:
Specifies for how many milliseconds the LED has to stay at
LED_OFF brightness after it has been armed.
Defaults to 100 ms.

What: /sys/class/leds/<led>/invert
Date: Jun 2012
KernelVersion: 3.6
Contact: [email protected]
Description:
Reverse the blink logic. If set to 0 (default) blink on for
delay_on ms, then blink off for delay_off ms, leaving the LED
normally off. If set to 1, blink off for delay_off ms, then
blink on for delay_on ms, leaving the LED normally on.
Setting this value also immediately changes the LED state.

What: /sys/class/leds/<led>/shot
Date: Jun 2012
KernelVersion: 3.6
Contact: [email protected]
Description:
Write any non-empty string to signal an events, this starts a
blink sequence if not already running.
7 changes: 7 additions & 0 deletions Documentation/devicetree/bindings/leds/common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,13 @@ Optional properties for child nodes:
a device, i.e. no other LED class device can be assigned the same
label.

- default-state : The initial state of the LED. Valid values are "on", "off",
and "keep". If the LED is already on or off and the default-state property is
set the to same value, then no glitch should be produced where the LED
momentarily turns off (or on). The "keep" setting will keep the LED at
whatever its current state is, without producing a glitch. The default is
off if this property is not present.

- linux,default-trigger : This parameter, if present, is a
string defining the trigger assigned to the LED. Current triggers are:
"backlight" - LED will act as a back-light, controlled by the framebuffer
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/leds/leds-bcm6328.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ LED sub-node optional properties:
- active-low : Boolean, makes LED active low.
Default : false
- default-state : see
Documentation/devicetree/bindings/leds/leds-gpio.txt
Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : see
Documentation/devicetree/bindings/leds/common.txt

Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/leds/leds-bcm6358.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ LED sub-node optional properties:
- active-low : Boolean, makes LED active low.
Default : false
- default-state : see
Documentation/devicetree/bindings/leds/leds-gpio.txt
Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : see
Documentation/devicetree/bindings/leds/common.txt

Expand Down
9 changes: 2 additions & 7 deletions Documentation/devicetree/bindings/leds/leds-gpio.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,8 @@ LED sub-node properties:
see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : (optional)
see Documentation/devicetree/bindings/leds/common.txt
- default-state: (optional) The initial state of the LED. Valid
values are "on", "off", and "keep". If the LED is already on or off
and the default-state property is set the to same value, then no
glitch should be produced where the LED momentarily turns off (or
on). The "keep" setting will keep the LED at whatever its current
state is, without producing a glitch. The default is off if this
property is not present.
- default-state: (optional) The initial state of the LED.
see Documentation/devicetree/bindings/leds/common.txt
- retain-state-suspended: (optional) The suspend state can be retained.Such
as charge-led gpio.
- panic-indicator : (optional)
Expand Down
59 changes: 59 additions & 0 deletions Documentation/devicetree/bindings/leds/leds-is31fl319x.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
LEDs connected to is31fl319x LED controller chip

Required properties:
- compatible : Should be any of
"issi,is31fl3190"
"issi,is31fl3191"
"issi,is31fl3193"
"issi,is31fl3196"
"issi,is31fl3199"
"si-en,sn3199".
- #address-cells: Must be 1.
- #size-cells: Must be 0.
- reg: 0x64, 0x65, 0x66, or 0x67.

Optional properties:
- audio-gain-db : audio gain selection for external analog modulation input.
Valid values: 0 - 21, step by 3 (rounded down)
Default: 0

Each led is represented as a sub-node of the issi,is31fl319x device.
There can be less leds subnodes than the chip can support but not more.

Required led sub-node properties:
- reg : number of LED line
Valid values: 1 - number of leds supported by the chip variant.

Optional led sub-node properties:
- label : see Documentation/devicetree/bindings/leds/common.txt.
- linux,default-trigger :
see Documentation/devicetree/bindings/leds/common.txt.
- led-max-microamp : (optional)
Valid values: 5000 - 40000, step by 5000 (rounded down)
Default: 20000 (20 mA)
Note: a driver will take the lowest of all led limits since the
chip has a single global setting. The lowest value will be chosen
due to the PWM specificity, where lower brightness is achieved
by reducing the dury-cycle of pulses and not the current, which
will always have its peak value equal to led-max-microamp.

Examples:

fancy_leds: leds@65 {
compatible = "issi,is31fl3196";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x65>;

red_aux: led@1 {
label = "red:aux";
reg = <1>;
led-max-microamp = <10000>;
};

green_power: led@5 {
label = "green:power";
reg = <5>;
linux,default-trigger = "default-on";
};
};
67 changes: 67 additions & 0 deletions Documentation/devicetree/bindings/leds/leds-pm8058.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
Qualcomm PM8058 LED driver

The Qualcomm PM8058 is a multi-functional device which contains
an LED driver block for up to six LEDs: three normal LEDs, two
"flash" LEDs and one "keypad backlight" LED. The names are
quoted because sometimes these LED drivers are used for wildly
different things than flash or keypad backlight: their names
are more of a suggestion than a hard-wired usecase.

Hardware-wise the different LEDs support slightly different
output currents. The "flash" LEDs do not need to charge nor
do they support external triggers. They are just powerful LED
drivers.

The LEDs appear as children to the PM8058 device, with the
proper compatible string. For the PM8058 bindings see:
mfd/qcom-pm8xxx.txt.

Each LED is represented as a sub-node of the syscon device. Each
node's name represents the name of the corresponding LED.

LED sub-node properties:

Required properties:
- compatible: one of
"qcom,pm8058-led" (for the normal LEDs at 0x131, 0x132 and 0x133)
"qcom,pm8058-keypad-led" (for the "keypad" LED at 0x48)
"qcom,pm8058-flash-led" (for the "flash" LEDs at 0x49 and 0xFB)

Optional properties:
- label: see Documentation/devicetree/bindings/leds/common.txt
- default-state: see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger: see Documentation/devicetree/bindings/leds/common.txt

Example:

qcom,ssbi@500000 {
pmicintc: pmic@0 {
compatible = "qcom,pm8058";
led@48 {
compatible = "qcom,pm8058-keypad-led";
reg = <0x48>;
label = "pm8050:white:keypad";
default-state = "off";
};
led@131 {
compatible = "qcom,pm8058-led";
reg = <0x131>;
label = "pm8058:red";
default-state = "off";
};
led@132 {
compatible = "qcom,pm8058-led";
reg = <0x132>;
label = "pm8058:yellow";
default-state = "off";
linux,default-trigger = "mmc0";
};
led@133 {
compatible = "qcom,pm8058-led";
reg = <0x133>;
label = "pm8058:green";
default-state = "on";
linux,default-trigger = "heartbeat";
};
};
};
9 changes: 2 additions & 7 deletions Documentation/devicetree/bindings/leds/register-bit-led.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,8 @@ Optional properties:
see Documentation/devicetree/bindings/leds/common.txt
- linux,default-trigger : (optional)
see Documentation/devicetree/bindings/leds/common.txt
- default-state: (optional) The initial state of the LED. Valid
values are "on", "off", and "keep". If the LED is already on or off
and the default-state property is set the to same value, then no
glitch should be produced where the LED momentarily turns off (or
on). The "keep" setting will keep the LED at whatever its current
state is, without producing a glitch. The default is off if this
property is not present.
- default-state: (optional) The initial state of the LED
see Documentation/devicetree/bindings/leds/common.txt

Example:

Expand Down
110 changes: 110 additions & 0 deletions Documentation/leds/leds-mlxcpld.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
Kernel driver for Mellanox systems LEDs
=======================================

Provide system LED support for the nex Mellanox systems:
"msx6710", "msx6720", "msb7700", "msn2700", "msx1410",
"msn2410", "msb7800", "msn2740", "msn2100".

Description
-----------
Driver provides the following LEDs for the systems "msx6710", "msx6720",
"msb7700", "msn2700", "msx1410", "msn2410", "msb7800", "msn2740":
mlxcpld:fan1:green
mlxcpld:fan1:red
mlxcpld:fan2:green
mlxcpld:fan2:red
mlxcpld:fan3:green
mlxcpld:fan3:red
mlxcpld:fan4:green
mlxcpld:fan4:red
mlxcpld:psu:green
mlxcpld:psu:red
mlxcpld:status:green
mlxcpld:status:red

"status"
CPLD reg offset: 0x20
Bits [3:0]

"psu"
CPLD reg offset: 0x20
Bits [7:4]

"fan1"
CPLD reg offset: 0x21
Bits [3:0]

"fan2"
CPLD reg offset: 0x21
Bits [7:4]

"fan3"
CPLD reg offset: 0x22
Bits [3:0]

"fan4"
CPLD reg offset: 0x22
Bits [7:4]

Color mask for all the above LEDs:
[bit3,bit2,bit1,bit0] or
[bit7,bit6,bit5,bit4]:
[0,0,0,0] = LED OFF
[0,1,0,1] = Red static ON
[1,1,0,1] = Green static ON
[0,1,1,0] = Red blink 3Hz
[1,1,1,0] = Green blink 3Hz
[0,1,1,1] = Red blink 6Hz
[1,1,1,1] = Green blink 6Hz

Driver provides the following LEDs for the system "msn2100":
mlxcpld:fan:green
mlxcpld:fan:red
mlxcpld:psu1:green
mlxcpld:psu1:red
mlxcpld:psu2:green
mlxcpld:psu2:red
mlxcpld:status:green
mlxcpld:status:red
mlxcpld:uid:blue

"status"
CPLD reg offset: 0x20
Bits [3:0]

"fan"
CPLD reg offset: 0x21
Bits [3:0]

"psu1"
CPLD reg offset: 0x23
Bits [3:0]

"psu2"
CPLD reg offset: 0x23
Bits [7:4]

"uid"
CPLD reg offset: 0x24
Bits [3:0]

Color mask for all the above LEDs, excepted uid:
[bit3,bit2,bit1,bit0] or
[bit7,bit6,bit5,bit4]:
[0,0,0,0] = LED OFF
[0,1,0,1] = Red static ON
[1,1,0,1] = Green static ON
[0,1,1,0] = Red blink 3Hz
[1,1,1,0] = Green blink 3Hz
[0,1,1,1] = Red blink 6Hz
[1,1,1,1] = Green blink 6Hz

Color mask for uid LED:
[bit3,bit2,bit1,bit0]:
[0,0,0,0] = LED OFF
[1,1,0,1] = Blue static ON
[1,1,1,0] = Blue blink 3Hz
[1,1,1,1] = Blue blink 6Hz

Driver supports HW blinking at 3Hz and 6Hz frequency (50% duty cycle).
For 3Hz duty cylce is about 167 msec, for 6Hz is about 83 msec.
20 changes: 2 additions & 18 deletions Documentation/leds/ledtrig-oneshot.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,8 @@ below:

echo oneshot > trigger

This adds the following sysfs attributes to the LED:

delay_on - specifies for how many milliseconds the LED has to stay at
LED_FULL brightness after it has been armed.
Default to 100 ms.

delay_off - specifies for how many milliseconds the LED has to stay at
LED_OFF brightness after it has been armed.
Default to 100 ms.

invert - reverse the blink logic. If set to 0 (default) blink on for delay_on
ms, then blink off for delay_off ms, leaving the LED normally off. If
set to 1, blink off for delay_off ms, then blink on for delay_on ms,
leaving the LED normally on.
Setting this value also immediately change the LED state.

shot - write any non-empty string to signal an events, this starts a blink
sequence if not already running.
This adds sysfs attributes to the LED that are documented in:
Documentation/ABI/testing/sysfs-class-led-trigger-oneshot

Example use-case: network devices, initialization:

Expand Down
7 changes: 7 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -7678,6 +7678,13 @@ W: http://www.mellanox.com
Q: http://patchwork.ozlabs.org/project/netdev/list/
F: drivers/net/ethernet/mellanox/mlxsw/

MELLANOX MLXCPLD LED DRIVER
M: Vadim Pasternak <[email protected]>
L: [email protected]
S: Supported
F: drivers/leds/leds-mlxcpld.c
F: Documentation/leds/leds-mlxcpld.txt

MELLANOX PLATFORM DRIVER
M: Vadim Pasternak <[email protected]>
L: [email protected]
Expand Down
Loading

0 comments on commit f80fa18

Please sign in to comment.