aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2015-10-08 06:35:54 -0400
committerJacek Anaszewski <j.anaszewski@samsung.com>2015-11-03 02:59:44 -0500
commit9f82c778ce17789a038351a411ff65cd41033c7a (patch)
treea6aaeeb31a26452b9dad9b5290d9aaba069c8312
parentd8fe1606d1a7181c877d8b1727cdcfb82f76e91c (diff)
leds-bcm6328: add more init configuration options
This patch adds more init register configuration options: - Serial LEDs multiplexing. - Serial LEDs clock signal low/high polarity. - Serial LEDs data signal low/high polarity. - Serial LEDs shift direction inverted/normal. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
-rw-r--r--drivers/leds/leds-bcm6328.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/leds/leds-bcm6328.c b/drivers/leds/leds-bcm6328.c
index bf063fae4ad0..18de0942c795 100644
--- a/drivers/leds/leds-bcm6328.c
+++ b/drivers/leds/leds-bcm6328.c
@@ -41,6 +41,11 @@
41#define BCM6328_SERIAL_LED_SHIFT_DIR BIT(16) 41#define BCM6328_SERIAL_LED_SHIFT_DIR BIT(16)
42#define BCM6328_LED_SHIFT_TEST BIT(30) 42#define BCM6328_LED_SHIFT_TEST BIT(30)
43#define BCM6328_LED_TEST BIT(31) 43#define BCM6328_LED_TEST BIT(31)
44#define BCM6328_INIT_MASK (BCM6328_SERIAL_LED_EN | \
45 BCM6328_SERIAL_LED_MUX | \
46 BCM6328_SERIAL_LED_CLK_NPOL | \
47 BCM6328_SERIAL_LED_DATA_PPOL | \
48 BCM6328_SERIAL_LED_SHIFT_DIR)
44 49
45#define BCM6328_LED_MODE_MASK 3 50#define BCM6328_LED_MODE_MASK 3
46#define BCM6328_LED_MODE_OFF 0 51#define BCM6328_LED_MODE_OFF 0
@@ -366,9 +371,17 @@ static int bcm6328_leds_probe(struct platform_device *pdev)
366 bcm6328_led_write(mem + BCM6328_REG_LNKACTSEL_LO, 0); 371 bcm6328_led_write(mem + BCM6328_REG_LNKACTSEL_LO, 0);
367 372
368 val = bcm6328_led_read(mem + BCM6328_REG_INIT); 373 val = bcm6328_led_read(mem + BCM6328_REG_INIT);
369 val &= ~BCM6328_SERIAL_LED_EN; 374 val &= ~(BCM6328_INIT_MASK);
370 if (of_property_read_bool(np, "brcm,serial-leds")) 375 if (of_property_read_bool(np, "brcm,serial-leds"))
371 val |= BCM6328_SERIAL_LED_EN; 376 val |= BCM6328_SERIAL_LED_EN;
377 if (of_property_read_bool(np, "brcm,serial-mux"))
378 val |= BCM6328_SERIAL_LED_MUX;
379 if (of_property_read_bool(np, "brcm,serial-clk-low"))
380 val |= BCM6328_SERIAL_LED_CLK_NPOL;
381 if (!of_property_read_bool(np, "brcm,serial-dat-low"))
382 val |= BCM6328_SERIAL_LED_DATA_PPOL;
383 if (!of_property_read_bool(np, "brcm,serial-shift-inv"))
384 val |= BCM6328_SERIAL_LED_SHIFT_DIR;
372 bcm6328_led_write(mem + BCM6328_REG_INIT, val); 385 bcm6328_led_write(mem + BCM6328_REG_INIT, val);
373 386
374 for_each_available_child_of_node(np, child) { 387 for_each_available_child_of_node(np, child) {