forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'leds-for-5.2-rc1' of git://git.kernel.org/pub/scm/linux/ke…
…rnel/git/j.anaszewski/linux-leds Pull LED updates from Jacek Anaszewski: "LED core fixes and improvements: - avoid races with workqueue - Kconfig: pedantic cleanup - small fixes for Flash class description leds-lt3593: - remove unneeded assignment in lt3593_led_probe - drop pdata handling code leds-blinkm: - clean up double assignment to data->i2c_addr leds-pca955x, leds-pca963x: - revert ACPI support, as it turned out that there is no evidence of officially registered ACPI IDs for these devices. - make use of device property API leds-as3645a: - switch to fwnode property API LED related addition to ACPI documentation: - document how to refer to LEDs from remote nodes LED related fix to ALSA line6/toneport driver: - avoid polluting led_* namespace And lm3532 driver relocation from MFD to LED subsystem, accompanied by various improvements and optimizations; it entails also a change in omap4-droid4-xt894.dts: - leds: lm3532: Introduce the lm3532 LED driver - mfd: ti-lmu: Remove LM3532 backlight driver references - ARM: dts: omap4-droid4: Update backlight dt properties - dt: lm3532: Add lm3532 dt doc and update ti_lmu doc" * tag 'leds-for-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds: leds: avoid races with workqueue ALSA: line6: Avoid polluting led_* namespace leds: lm3532: Introduce the lm3532 LED driver mfd: ti-lmu: Remove LM3532 backlight driver references ARM: dts: omap4-droid4: Update backlight dt properties dt: lm3532: Add lm3532 dt doc and update ti_lmu doc leds: Small fixes for Flash class description leds: blinkm: clean up double assignment to data->i2c_addr leds: pca963x: Make use of device property API leds: pca955x: Make use of device property API leds: lt3593: Remove unneeded assignment in lt3593_led_probe leds: lt3593: drop pdata handling code leds: pca955x: Revert "Add ACPI support" leds: pca963x: Revert "Add ACPI support" drivers: leds: Kconfig: pedantic cleanups ACPI: Document how to refer to LEDs from remote nodes leds: as3645a: Switch to fwnode property API
- Loading branch information
Showing
18 changed files
with
1,023 additions
and
292 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
Describing and referring to LEDs in ACPI | ||
|
||
Individual LEDs are described by hierarchical data extension [6] nodes under the | ||
device node, the LED driver chip. The "reg" property in the LED specific nodes | ||
tells the numerical ID of each individual LED output to which the LEDs are | ||
connected. [3] The hierarchical data nodes are named "led@X", where X is the | ||
number of the LED output. | ||
|
||
Referring to LEDs in Device tree is documented in [4], in "flash-leds" property | ||
documentation. In short, LEDs are directly referred to by using phandles. | ||
|
||
While Device tree allows referring to any node in the tree[1], in ACPI | ||
references are limited to device nodes only [2]. For this reason using the same | ||
mechanism on ACPI is not possible. A mechanism to refer to non-device ACPI nodes | ||
is documented in [7]. | ||
|
||
ACPI allows (as does DT) using integer arguments after the reference. A | ||
combination of the LED driver device reference and an integer argument, | ||
referring to the "reg" property of the relevant LED, is used to identify | ||
individual LEDs. The value of the "reg" property is a contract between the | ||
firmware and software, it uniquely identifies the LED driver outputs. | ||
|
||
Under the LED driver device, The first hierarchical data extension package list | ||
entry shall contain the string "led@" followed by the number of the LED, | ||
followed by the referred object name. That object shall be named "LED" followed | ||
by the number of the LED. | ||
|
||
An ASL example of a camera sensor device and a LED driver device for two LEDs. | ||
Objects not relevant for LEDs or the references to them have been omitted. | ||
|
||
Device (LED) | ||
{ | ||
Name (_DSD, Package () { | ||
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), | ||
Package () { | ||
Package () { "led@0", LED0 }, | ||
Package () { "led@1", LED1 }, | ||
} | ||
}) | ||
Name (LED0, Package () { | ||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), | ||
Package () { | ||
Package () { "reg", 0 }, | ||
Package () { "flash-max-microamp", 1000000 }, | ||
Package () { "flash-timeout-us", 200000 }, | ||
Package () { "led-max-microamp", 100000 }, | ||
Package () { "label", "white:flash" }, | ||
} | ||
}) | ||
Name (LED1, Package () { | ||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), | ||
Package () { | ||
Package () { "reg", 1 }, | ||
Package () { "led-max-microamp", 10000 }, | ||
Package () { "label", "red:indicator" }, | ||
} | ||
}) | ||
} | ||
|
||
Device (SEN) | ||
{ | ||
Name (_DSD, Package () { | ||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), | ||
Package () { | ||
Package () { | ||
"flash-leds", | ||
Package () { ^LED, "led@0", ^LED, "led@1" }, | ||
} | ||
} | ||
}) | ||
} | ||
|
||
where | ||
|
||
LED LED driver device | ||
LED0 First LED | ||
LED1 Second LED | ||
SEN Camera sensor device (or another device the LED is | ||
related to) | ||
|
||
[1] Device tree. <URL:http://www.devicetree.org>, referenced 2019-02-21. | ||
|
||
[2] Advanced Configuration and Power Interface Specification. | ||
<URL:https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf>, | ||
referenced 2019-02-21. | ||
|
||
[3] Documentation/devicetree/bindings/leds/common.txt | ||
|
||
[4] Documentation/devicetree/bindings/media/video-interfaces.txt | ||
|
||
[5] Device Properties UUID For _DSD. | ||
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf>, | ||
referenced 2019-02-21. | ||
|
||
[6] Hierarchical Data Extension UUID For _DSD. | ||
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf>, | ||
referenced 2019-02-21. | ||
|
||
[7] Documentation/acpi/dsd/data-node-reference.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
* Texas Instruments - lm3532 White LED driver with ambient light sensing | ||
capability. | ||
|
||
The LM3532 provides the 3 high-voltage, low-side current sinks. The device is | ||
programmable over an I2C-compatible interface and has independent | ||
current control for all three channels. The adaptive current regulation | ||
method allows for different LED currents in each current sink thus allowing | ||
for a wide variety of backlight and keypad applications. | ||
|
||
The main features of the LM3532 include dual ambient light sensor inputs | ||
each with 32 internal voltage setting resistors, 8-bit logarithmic and linear | ||
brightness control, dual external PWM brightness control inputs, and up to | ||
1000:1 dimming ratio with programmable fade in and fade out settings. | ||
|
||
Required properties: | ||
- compatible : "ti,lm3532" | ||
- reg : I2C slave address | ||
- #address-cells : 1 | ||
- #size-cells : 0 | ||
|
||
Optional properties: | ||
- enable-gpios : gpio pin to enable (active high)/disable the device. | ||
- ramp-up-us - The Run time ramp rates/step are from one current | ||
set-point to another after the device has reached its | ||
initial target set point from turn-on | ||
- ramp-down-us - The Run time ramp rates/step are from one current | ||
set-point to another after the device has reached its | ||
initial target set point from turn-on | ||
Range for ramp settings: 8us - 65536us | ||
|
||
Optional properties if ALS mode is used: | ||
- ti,als-vmin - Minimum ALS voltage defined in Volts | ||
- ti,als-vmax - Maximum ALS voltage defined in Volts | ||
Per the data sheet the max ALS voltage is 2V and the min is 0V | ||
|
||
- ti,als1-imp-sel - ALS1 impedance resistor selection in Ohms | ||
- ti,als2-imp-sel - ALS2 impedance resistor selection in Ohms | ||
Range for impedance select: 37000 Ohms - 1190 Ohms | ||
Values above 37kohms will be set to the "High Impedance" setting | ||
|
||
- ti,als-avrg-time-us - Determines the length of time the device needs to | ||
average the two ALS inputs. This is only used if | ||
the input mode is LM3532_ALS_INPUT_AVRG. | ||
Range: 17920us - 2293760us | ||
- ti,als-input-mode - Determines how the device uses the attached ALS | ||
devices. | ||
0x00 - ALS1 and ALS2 input average | ||
0x01 - ALS1 Input | ||
0x02 - ALS2 Input | ||
0x03 - Max of ALS1 and ALS2 | ||
|
||
Required child properties: | ||
- reg : Indicates control bank the LED string is controlled by | ||
- led-sources : see Documentation/devicetree/bindings/leds/common.txt | ||
- ti,led-mode : Defines if the LED strings are manually controlled or | ||
if the LED strings are controlled by the ALS. | ||
0x00 - LED strings are I2C controlled via full scale | ||
brightness control register | ||
0x01 - LED strings are ALS controlled | ||
|
||
Optional LED child properties: | ||
- label : see Documentation/devicetree/bindings/leds/common.txt | ||
- linux,default-trigger : | ||
see Documentation/devicetree/bindings/leds/common.txt | ||
|
||
Example: | ||
led-controller@38 { | ||
compatible = "ti,lm3532"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
reg = <0x38>; | ||
|
||
enable-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>; | ||
ramp-up-us = <1024>; | ||
ramp-down-us = <65536>; | ||
|
||
ti,als-vmin = <0>; | ||
ti,als-vmax = <2000>; | ||
ti,als1-imp-sel = <4110>; | ||
ti,als2-imp-sel = <2180>; | ||
ti,als-avrg-time-us = <17920>; | ||
ti,als-input-mode = <0x00>; | ||
|
||
led@0 { | ||
reg = <0>; | ||
led-sources = <2>; | ||
ti,led-mode = <1>; | ||
label = ":backlight"; | ||
linux,default-trigger = "backlight"; | ||
}; | ||
|
||
led@1 { | ||
reg = <1>; | ||
led-sources = <1>; | ||
ti,led-mode = <0>; | ||
label = ":kbd_backlight"; | ||
}; | ||
}; | ||
|
||
For more product information please see the links below: | ||
http://www.ti.com/product/LM3532 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.