Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: bcm6328: fix signal source assignment for leds 4 to 7

Each nibble represents 4 LEDs, and in case of the higher register, bit 0
represents LED 4, so we need to use modulus for the LED number as well.

Fixes: fd7b025a238d0a5440bfa26c585eb78097bf48dc ("leds: add BCM6328 LED driver")
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Acked-by: Álvaro Fernández Rojas <noltari@gmail.com>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>

authored by

Jonas Gorski and committed by
Jacek Anaszewski
4f02b50e 2ea659a9

+2 -2
+2 -2
drivers/leds/leds-bcm6328.c
··· 242 242 243 243 spin_lock_irqsave(lock, flags); 244 244 val = bcm6328_led_read(addr); 245 - val |= (BIT(reg) << (((sel % 4) * 4) + 16)); 245 + val |= (BIT(reg % 4) << (((sel % 4) * 4) + 16)); 246 246 bcm6328_led_write(addr, val); 247 247 spin_unlock_irqrestore(lock, flags); 248 248 } ··· 269 269 270 270 spin_lock_irqsave(lock, flags); 271 271 val = bcm6328_led_read(addr); 272 - val |= (BIT(reg) << ((sel % 4) * 4)); 272 + val |= (BIT(reg % 4) << ((sel % 4) * 4)); 273 273 bcm6328_led_write(addr, val); 274 274 spin_unlock_irqrestore(lock, flags); 275 275 }