Zahari Petkov
44d748f2ab
leds: pca963x: Fix open-drain initialization
...
[ Upstream commit 697529091ac7a0a90ca349b914bb30641c13c753 ]
Before commit bb29b9cccd ("leds: pca963x: Add bindings to invert
polarity") Mode register 2 was initialized directly with either 0x01
or 0x05 for open-drain or totem pole (push-pull) configuration.
Afterwards, MODE2 initialization started using bitwise operations on
top of the default MODE2 register value (0x05). Using bitwise OR for
setting OUTDRV with 0x01 and 0x05 does not produce correct results.
When open-drain is used, instead of setting OUTDRV to 0, the driver
keeps it as 1:
Open-drain: 0x05 | 0x01 -> 0x05 (0b101 - incorrect)
Totem pole: 0x05 | 0x05 -> 0x05 (0b101 - correct but still wrong)
Now OUTDRV setting uses correct bitwise operations for initialization:
Open-drain: 0x05 & ~0x04 -> 0x01 (0b001 - correct)
Totem pole: 0x05 | 0x04 -> 0x05 (0b101 - correct)
Additional MODE2 register definitions are introduced now as well.
Fixes: bb29b9cccd ("leds: pca963x: Add bindings to invert polarity")
Signed-off-by: Zahari Petkov <zahari@balena.io>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-24 08:34:35 +01:00
..
trigger
leds: trigger: netdev: fix handling on interface rename
2019-12-17 20:35:54 +01:00
Kconfig
leds: Modify PC Engines apu/apu2 driver to support apu3
2018-06-28 21:34:43 +02:00
led-class-flash.c
leds: flash: Remove checking for state < 1 in flash_strobe_store()
2016-01-04 09:57:37 +01:00
led-class.c
leds: class: ensure workqueue is initialized before setting brightness
2018-05-24 22:08:26 +02:00
led-core.c
leds: core: Fix regression caused by commit 2b83ff96f5
2018-01-07 13:27:07 +01:00
led-triggers.c
led: triggers: Fix dereferencing of null pointer
2020-01-27 14:51:10 +01:00
leds-88pm860x.c
leds: 88pm860x: Use devm_led_classdev_register
2016-03-14 09:22:22 +01:00
leds-aat1290.c
LED updates for 4.14
2017-09-07 14:33:13 -07:00
leds-adp5520.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-apu.c
leds: Modify PC Engines apu/apu2 driver to support apu3
2018-06-28 21:34:43 +02:00
leds-as3645a.c
leds: as3645a: Fix line over 80 characters
2018-01-08 21:28:11 +01:00
leds-asic3.c
leds: drop owner assignment from platform_drivers
2014-10-20 16:20:43 +02:00
leds-bcm6328.c
leds: bcm6328: fix signal source assignment for leds 4 to 7
2017-06-13 20:36:56 +02:00
leds-bcm6358.c
leds: bcm6358: remove unneeded busy status check
2016-01-04 09:57:40 +01:00
leds-bd2802.c
leds: bd2802: Remove work queue
2016-01-04 09:57:32 +01:00
leds-blinkm.c
leds: blinkm: avoid uninitialized data use
2018-01-08 21:28:10 +01:00
leds-clevo-mail.c
dmi: Mark all struct dmi_system_id instances const
2017-09-14 11:59:30 +02:00
leds-cobalt-qube.c
leds: leds-cobalt-qube: Use devm_led_classdev_register
2015-11-03 08:59:09 +01:00
leds-cobalt-raq.c
leds: leds-cobalt-raq: use builtin_platform_driver
2016-11-23 16:38:01 +01:00
leds-cpcap.c
leds: cpcap: new driver
2017-03-29 21:02:27 +02:00
leds-cr0014114.c
leds: Use struct_size() in allocation
2018-06-12 16:19:22 -07:00
leds-da903x.c
leds: da903x: Use devm_led_classdev_register
2016-03-14 09:22:22 +01:00
leds-da9052.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-dac124s085.c
leds: dac124d085: Remove work queue
2016-01-04 09:57:34 +01:00
leds-fsg.c
leds: leds-fsg: Use devm_led_classdev_register
2015-08-28 14:06:23 +02:00
leds-gpio-register.c
led: gpio: Fix possible ZERO_SIZE_PTR pointer dereferencing error.
2014-09-29 10:21:01 -07:00
leds-gpio.c
leds: gpio: Allow LED to retain state at shutdown
2017-08-29 21:10:40 +02:00
leds-hp6xx.c
leds: convert IDE trigger to common disk trigger
2016-06-20 09:57:56 +02:00
leds-ipaq-micro.c
leds: ipaq-micro: Implement brightness_set_blocking op
2016-01-04 09:57:38 +01:00
leds-is31fl32xx.c
leds: Convert to using %pOF instead of full_name
2017-08-12 23:50:07 +02:00
leds-is31fl319x.c
leds: is31fl319x: 1/3/6/9-channel light effect led driver
2016-08-15 14:02:31 +02:00
leds-ktd2692.c
leds: ktd2692: avoid harmless maybe-uninitialized warning
2017-01-26 21:16:38 +01:00
leds-lm355x.c
leds: lm355x: Remove work queue
2016-01-04 09:57:36 +01:00
leds-lm3530.c
leds: Drop owner assignment from i2c_driver
2015-08-28 14:06:02 +02:00
leds-lm3533.c
leds: lm3533: constify attribute_group structure
2017-08-29 21:10:37 +02:00
leds-lm3601x.c
leds: lm3601x: Introduce the lm3601x LED driver
2018-05-23 21:44:47 +02:00
leds-lm3642.c
leds: lm3642: Remove work queue
2016-01-04 09:57:32 +01:00
leds-lm3692x.c
leds: lm3692x: Handle failure to probe the regulator
2020-01-04 19:12:43 +01:00
leds-locomo.c
leds: leds-locomo.c: Use devm_led_classdev_register
2015-11-03 08:59:50 +01:00
leds-lp55xx-common.c
leds: lp55xx: fix null deref on firmware load failure
2019-04-05 22:33:07 +02:00
leds-lp55xx-common.h
leds: lp55xx: Remove work queue
2016-01-04 09:57:33 +01:00
leds-lp3944.c
leds: lp3944: improve wording and formatting in a comment
2016-03-14 09:22:20 +01:00
leds-lp3952.c
leds: lp3952: Use 'if (ret)' pattern
2017-03-23 20:33:59 +01:00
leds-lp5521.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-lp5523.c
leds: lp5523: fix a missing check of return value of lp55xx_read
2019-02-27 10:08:57 +01:00
leds-lp5562.c
leds: leds-lp5562 allow firmware files up to the maximum length
2019-10-05 13:09:34 +02:00
leds-lp8501.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-lp8788.c
leds: lp8788: Use devm_led_classdev_register
2016-03-14 09:22:22 +01:00
leds-lp8860.c
leds: lp8860: Various fixes to align with LED framework
2018-01-08 21:28:12 +01:00
leds-lt3593.c
leds: lt3593: update email address and switch to SPDX license header
2018-07-03 22:12:41 +02:00
leds-max8997.c
leds: max8997: use mode when calling max8997_led_set_mode
2018-07-03 22:12:41 +02:00
leds-max77693.c
media: v4l2-flash-led-class: Create separate sub-devices for indicators
2017-08-26 20:26:35 -04:00
leds-mc13783.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-menf21bmc.c
leds: leds-menf21bmc.c: Use devm_led_class_register
2015-11-03 08:59:52 +01:00
leds-mlxcpld.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-mlxreg.c
leds: add driver for support Mellanox regmap LEDs for BMC and x86 platform
2018-02-19 21:09:20 +01:00
leds-mt6323.c
leds: mt6323: Fix an off by one bug in probe
2017-03-23 20:23:57 +01:00
leds-net48xx.c
leds: leds-net48xx: Use devm_led_classdev_register
2015-11-03 08:59:54 +01:00
leds-netxbig.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-nic78bx.c
leds: Add user LED driver for NIC78bx device
2016-11-22 12:07:04 +01:00
leds-ns2.c
leds: ns2: Change unsigned to unsigned int
2018-08-06 23:03:12 +02:00
leds-ot200.c
leds: leds-ot200: Use devm_led_classdev_register
2015-11-03 08:59:13 +01:00
leds-pca955x.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-pca963x.c
leds: pca963x: Fix open-drain initialization
2020-02-24 08:34:35 +01:00
leds-pca9532.c
leds: pca9532: fix a potential NULL pointer dereference
2019-05-04 09:20:22 +02:00
leds-pm8058.c
leds: pm8058: Silence pointer to integer size warning
2017-12-01 08:57:42 +00:00
leds-powernv.c
leds: powernv: Delete an error message for a failed memory allocation in powernv_led_create()
2017-08-29 21:10:39 +02:00
leds-pwm.c
leds: pwm: silently error out on EPROBE_DEFER
2019-01-13 09:51:08 +01:00
leds-rb532.c
leds: drop owner assignment from platform_drivers
2014-10-20 16:20:43 +02:00
leds-regulator.c
leds: regulator: Remove work queue
2016-01-04 09:57:35 +01:00
leds-s3c24xx.c
leds: s3c24xx: Use devm_led_classdev_register
2016-03-14 09:22:22 +01:00
leds-sc27xx-bltc.c
leds: sc27xx: Fix return value check in sc27xx_led_probe()
2018-05-22 21:57:59 +02:00
leds-ss4200.c
dmi: Mark all struct dmi_system_id instances const
2017-09-14 11:59:30 +02:00
leds-sunfire.c
leds: sunfire: Use platform_register/unregister_drivers()
2016-01-04 09:57:38 +01:00
leds-syscon.c
leds: syscon: Make the driver explicitly non-modular
2016-01-04 09:57:39 +01:00
leds-tca6507.c
treewide: devm_kzalloc() -> devm_kcalloc()
2018-06-12 16:19:22 -07:00
leds-tlc591xx.c
leds: tlc591xx: add missing of_node_put
2017-07-16 18:45:43 +02:00
leds-wm831x-status.c
leds: wm831x-status: Use sysfs_match_string() helper
2018-05-03 21:50:13 +02:00
leds-wm8350.c
leds: wm8350: Remove work queue
2016-01-04 09:57:35 +01:00
leds-wrap.c
leds: leds-wrap.c: Use devm_led_classdev_register
2015-11-03 08:59:58 +01:00
leds.h
leds: triggers: Allow to switch the trigger to "panic" on a kernel panic
2016-05-06 10:22:09 +02:00
Makefile
leds: lm3601x: Introduce the lm3601x LED driver
2018-05-23 21:44:47 +02:00
uleds.c
vfs: do bulk POLL* -> EPOLL* replacement
2018-02-11 14:34:03 -08:00