linux/drivers/leds
Johan Adolfsson 944c8bd674 leds: leds-lp50xx: Handle reg to get correct multi_index
[ Upstream commit 2e84a5e537 ]

mc_subled used for multi_index needs well defined array indexes,
to guarantee the desired result, use reg for that.

If devicetree child nodes is processed in random or reverse order
you may end up with multi_index "blue green red" instead of the expected
"red green blue".
If user space apps uses multi_index to deduce how to control the leds
they would most likely be broken without this patch if devicetree
processing is reversed (which it appears to be).

arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-fuji.dts has reg set
but I don't see how it can have worked without this change.

If reg is not set, an error is returned,
If reg is out of range, an error is returned.
reg within led child nodes starts with 0, to map to the iout in each bank.

Signed-off-by: Johan Adolfsson <johan.adolfsson@axis.com>
Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Link: https://lore.kernel.org/r/20250617-led-fix-v7-1-cdbe8efc88fa@axis.com
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-08-20 18:30:43 +02:00
..
blink leds: bcm63138: Add MODULE_DESCRIPTION() 2024-06-21 11:57:15 +01:00
flash leds: flash: leds-qcom-flash: Fix registry access after re-bind 2025-08-20 18:30:13 +02:00
rgb leds: pwm-multicolor: Add check for fwnode_property_read_u32 2025-05-29 11:02:36 +02:00
simple leds: simatic-ipc-leds: Add missing MODULE_DESCRIPTION() macros 2024-06-21 11:57:14 +01:00
trigger Revert "leds: trigger: netdev: Configure LED blink interval for HW offload" 2025-08-20 18:30:13 +02:00
Kconfig leds: blinkm: Fix CONFIG_LEDS_CLASS_MULTICOLOR dependency 2024-08-16 17:04:42 +01:00
led-class-flash.c led-class-flash: fix -Wrestrict warning 2021-09-27 16:09:42 +02:00
led-class-multicolor.c leds: multicolor: Fix intensity setting while SW blinking 2025-07-06 11:01:32 +02:00
led-class.c leds: class: Protect brightness_show() with led_cdev->led_access mutex 2024-12-14 20:04:01 +01:00
led-core.c leds: Fix LED_OFF brightness race 2025-04-10 14:39:21 +02:00
led-triggers.c leds: triggers: Flush pending brightness before activating trigger 2024-06-26 16:56:07 +01:00
leds-88pm860x.c leds: 88pm860x: Simplify with scoped for each OF child loop 2024-08-22 14:23:03 +01:00
leds-acer-a500.c leds: Add driver for Acer Iconia Tab A500 2020-09-26 21:56:42 +02:00
leds-adp5520.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-an30259a.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-apu.c leds: apu: Remove duplicate DMI lookup data 2024-04-12 09:47:15 +01:00
leds-ariel.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-aw200xx.c leds: aw200xx: Use devm API to cleanup module's resources 2024-04-11 17:34:57 +01:00
leds-aw2013.c leds: aw2013: Simplify with scoped for each OF child loop 2024-08-22 14:23:03 +01:00
leds-bcm6328.c leds: bcm6328: Simplify with scoped for each OF child loop 2024-08-22 14:23:04 +01:00
leds-bcm6358.c leds: bcm6358: Simplify with scoped for each OF child loop 2024-08-22 14:23:05 +01:00
leds-bd2606mvv.c leds: bd2606mvv: Fix device child node usage in bd2606mvv_probe() 2024-08-01 13:40:07 +01:00
leds-bd2802.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-blinkm.c leds: Add multicolor support to BlinkM LED driver 2024-08-01 13:40:02 +01:00
leds-cht-wcove.c leds: cht-wcove: Use devm_led_classdev_register() to avoid memory leak 2025-02-08 09:57:11 +01:00
leds-clevo-mail.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-cobalt-qube.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
leds-cobalt-raq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
leds-cpcap.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-cr0014114.c leds: cr0014114: Annotate struct cr0014114 with __counted_by 2023-11-01 11:28:26 +00:00
leds-cros_ec.c leds: Add ChromeOS EC driver 2024-06-21 11:41:46 +01:00
leds-da903x.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-da9052.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-dac124s085.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
leds-el15203000.c leds: el15203000: Annotate struct el15203000 with __counted_by 2023-11-01 11:28:28 +00:00
leds-expresswire.c leds: expresswire: Don't use "proxy" headers 2024-03-07 08:45:31 +00:00
leds-gpio-register.c leds: leds-gpio-register: Supply description for param 'id' 2021-05-28 11:38:54 +02:00
leds-gpio.c leds: gpio: Set num_leds after allocation 2024-08-23 08:40:43 +01:00
leds-hp6xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-ip30.c leds: ip30: Convert to devm_platform_ioremap_resource() 2023-07-28 09:26:21 +01:00
leds-ipaq-micro.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-is31fl32xx.c leds: is31fl32xx: Simplify with scoped for each OF child loop 2024-08-22 14:23:06 +01:00
leds-is31fl319x.c leds: is31fl319x: Use device_for_each_child_node_scoped() to access child nodes 2024-08-01 13:40:08 +01:00
leds-lm355x.c leds: Switch i2c drivers back to use .probe() 2023-05-25 12:16:22 +01:00
leds-lm3530.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lm3532.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lm3533.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-lm3642.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lm3692x.c leds: lm392x: Convert to use maple tree register cache 2023-11-01 11:29:02 +00:00
leds-lm3697.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lm36274.c leds: lm36274: Add missed property.h 2021-05-30 23:03:48 +02:00
leds-locomo.c ARM: pxa: split up mach/hardware.h 2022-04-19 16:27:05 +02:00
leds-lp50xx.c leds: leds-lp50xx: Handle reg to get correct multi_index 2025-08-20 18:30:43 +02:00
leds-lp55xx-common.c leds: lp55xx: Remove redundant test for invalid channel number 2024-12-09 10:41:02 +01:00
leds-lp55xx-common.h leds: lp55xx: Use devm_clk_get_enabled() helpers 2024-08-22 14:48:24 +01:00
leds-lp3944.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lp3952.c leds: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-06-21 11:57:11 +01:00
leds-lp5521.c leds: leds-lp55xx: Convert mutex lock/unlock to guard API 2024-07-11 12:46:25 +01:00
leds-lp5523.c leds: leds-lp55xx: Convert mutex lock/unlock to guard API 2024-07-11 12:46:25 +01:00
leds-lp5562.c leds: leds-lp55xx: Convert mutex lock/unlock to guard API 2024-07-11 12:46:25 +01:00
leds-lp5569.c leds: leds-lp5569: Enable chip after chip configuration 2024-07-12 08:32:37 +01:00
leds-lp8501.c leds: leds-lp55xx: Drop deprecated defines 2024-06-26 17:08:31 +01:00
leds-lp8788.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-lp8860.c leds: lp8860: Write full EEPROM, not only half of it 2025-02-17 10:05:02 +01:00
leds-lt3593.c leds: lt3593: Put fwnode in any case during ->probe() 2021-08-03 23:49:31 +02:00
leds-max5970.c leds: max5970: Fix unreleased fwnode_handle in probe function 2024-12-05 14:02:10 +01:00
leds-max8997.c leds: max8997: Don't error if there is no pdata 2022-10-22 11:55:03 +02:00
leds-max77650.c leds: parse linux,default-trigger DT property in LED core 2020-09-26 21:56:43 +02:00
leds-mc13783.c leds: mc13783: Use scoped device node handling to simplify error paths 2024-08-22 14:23:07 +01:00
leds-menf21bmc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
leds-mlxcpld.c leds: leds-mlxcpld: Fix struct mlxcpld_led_priv member name 2024-03-07 08:48:16 +00:00
leds-mlxreg.c leds: mlxreg: Use devm_mutex_init() for mutex initialization 2024-04-11 17:35:18 +01:00
leds-mt6323.c leds: mt6323: Simplify with scoped for each OF child loop 2024-08-22 14:23:08 +01:00
leds-net48xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds-netxbig.c leds: netxbig: Fix an OF node reference leak in netxbig_leds_get_of_pdata() 2025-02-08 09:57:05 +01:00
leds-nic78bx.c leds: nic78bx: Use devm API to cleanup module's resources 2024-04-11 17:35:13 +01:00
leds-ns2.c leds: ns2: Slightly simplify a memory allocation 2023-07-28 11:58:04 +01:00
leds-ot200.c leds: leds-ot200: Use devm_led_classdev_register 2015-11-03 08:59:13 +01:00
leds-pca955x.c leds: pca955x: Cleanup OF/ID table terminators 2023-11-01 11:28:55 +00:00
leds-pca963x.c leds: pca963x: Add support for suspend and resume 2024-03-07 08:48:06 +00:00
leds-pca995x.c leds: pca995x: Fix device child node usage in pca995x_probe() 2024-08-16 17:01:19 +01:00
leds-pca9532.c leds: pca9532: Remove irrelevant blink configuration error message 2024-08-30 09:01:08 +01:00
leds-pm8058.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-powernv.c leds: powernv: Replace of_node_put to __free 2024-06-26 16:56:11 +01:00
leds-pwm.c leds: pwm: Disable PWM when going to suspend 2024-05-02 18:02:01 +01:00
leds-rb532.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-regulator.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-sc27xx-bltc.c leds: sc27xx: Simplify with scoped for each OF child loop 2024-08-22 14:23:10 +01:00
leds-spi-byte.c leds: spi-byte: Move OF ID table closer to their user 2024-06-26 16:56:07 +01:00
leds-ss4200.c leds: ss4200: Convert PCIBIOS_* return codes to errnos 2024-06-21 11:57:16 +01:00
leds-sun50i-a100.c leds: sun50i-a100: Replace msleep() with usleep_range() 2024-08-22 11:39:47 +01:00
leds-sunfire.c Normalise "name (ad@dr)" MODULE_AUTHORs to "name <ad@dr>" 2024-03-06 13:07:39 -08:00
leds-syscon.c leds: syscon: Support 'reg' in addition to 'offset' for register address 2023-12-13 11:28:26 +00:00
leds-tca6507.c leds: tca6507: Use devm_led_classdev_register() to simplify remove path 2023-12-13 11:28:41 +00:00
leds-ti-lmu-common.c leds: Explicitly include correct DT includes 2023-07-28 10:02:32 +01:00
leds-tlc591xx.c leds: tlc591xx: Replace of_node_put to __free 2024-06-26 16:56:09 +01:00
leds-tps6105x.c leds: tps6105x: add driver for MFD chip LED mode 2019-12-21 20:10:02 +01:00
leds-turris-omnia.c leds: turris-omnia: Fix module autoloading with MODULE_DEVICE_TABLE() 2024-08-30 09:05:08 +01:00
leds-wm831x-status.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-wm8350.c leds: Convert all platform drivers to return void 2023-11-01 11:28:35 +00:00
leds-wrap.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
leds.h leds: core: Unexport led_colors[] array 2024-06-21 11:41:39 +01:00
Makefile leds: leds-lp5569: Add support for Texas Instruments LP5569 2024-06-26 17:08:31 +01:00
TODO leds: TODO: Add documentation about possible subsystem improvements 2020-09-30 19:15:33 +02:00
uleds.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00