CONFIG_IRQ_WORK=y
CONFIG_KEXEC=y
CONFIG_KEXEC_CORE=y
+CONFIG_LEDS_BCM6328=y
+CONFIG_LEDS_BCM6358=y
CONFIG_LEDS_GPIO=y
CONFIG_LIBFDT=y
CONFIG_MDIO_BOARDINFO=y
--- /dev/null
+From a3fac1cea8aa51782e788170818b0937e752b4e8 Mon Sep 17 00:00:00 2001
+From: Simon Arlott <simon@fire.lp0.eu>
+Date: Mon, 16 Nov 2015 20:24:59 +0000
+Subject: [PATCH] leds: bcm6328: Reuse bcm6328_led_set() instead of copying its
+ functionality
+
+When ensuring a consistent initial LED state in bcm6328_led (as they may
+be blinking instead of on/off), the LED register is set using an inverted
+copy of bcm6328_led_set(). To avoid further errors relating to active low
+handling, call this function directly instead.
+
+As bcm6328_led_set() acquires the same spinlock again when updating the
+register, it is called after unlocking.
+
+Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -314,14 +314,10 @@ static int bcm6328_led(struct device *de
+ } else {
+ led->cdev.brightness = LED_OFF;
+ }
+-
+- if ((led->active_low && led->cdev.brightness == LED_FULL) ||
+- (!led->active_low && led->cdev.brightness == LED_OFF))
+- bcm6328_led_mode(led, BCM6328_LED_MODE_ON);
+- else
+- bcm6328_led_mode(led, BCM6328_LED_MODE_OFF);
+ spin_unlock_irqrestore(lock, flags);
+
++ bcm6328_led_set(&led->cdev, led->cdev.brightness);
++
+ led->cdev.brightness_set = bcm6328_led_set;
+ led->cdev.blink_set = bcm6328_blink_set;
+
--- /dev/null
+From 37555e92b4693d8bd96cb5131d1b621941ec3ab6 Mon Sep 17 00:00:00 2001
+From: Simon Arlott <simon@fire.lp0.eu>
+Date: Sun, 15 Nov 2015 13:34:37 +0000
+Subject: [PATCH] leds: bcm6328: Swap LED ON and OFF definitions
+
+The values of BCM6328_LED_MODE_ON and BCM6328_LED_MODE_OFF were named
+for active low LEDs. These should be swapped so that they are named for
+the default case of active high LEDs.
+
+Signed-off-by: Simon Arlott <simon@fire.lp0.eu>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -48,10 +48,10 @@
+ BCM6328_SERIAL_LED_SHIFT_DIR)
+
+ #define BCM6328_LED_MODE_MASK 3
+-#define BCM6328_LED_MODE_OFF 0
++#define BCM6328_LED_MODE_ON 0
+ #define BCM6328_LED_MODE_FAST 1
+ #define BCM6328_LED_MODE_BLINK 2
+-#define BCM6328_LED_MODE_ON 3
++#define BCM6328_LED_MODE_OFF 3
+ #define BCM6328_LED_SHIFT(X) ((X) << 1)
+
+ /**
+@@ -126,9 +126,9 @@ static void bcm6328_led_set(struct led_c
+ *(led->blink_leds) &= ~BIT(led->pin);
+ if ((led->active_low && value == LED_OFF) ||
+ (!led->active_low && value != LED_OFF))
+- bcm6328_led_mode(led, BCM6328_LED_MODE_OFF);
+- else
+ bcm6328_led_mode(led, BCM6328_LED_MODE_ON);
++ else
++ bcm6328_led_mode(led, BCM6328_LED_MODE_OFF);
+ spin_unlock_irqrestore(led->lock, flags);
+ }
+
+@@ -303,8 +303,8 @@ static int bcm6328_led(struct device *de
+ val = bcm6328_led_read(mode) >>
+ BCM6328_LED_SHIFT(shift % 16);
+ val &= BCM6328_LED_MODE_MASK;
+- if ((led->active_low && val == BCM6328_LED_MODE_ON) ||
+- (!led->active_low && val == BCM6328_LED_MODE_OFF))
++ if ((led->active_low && val == BCM6328_LED_MODE_OFF) ||
++ (!led->active_low && val == BCM6328_LED_MODE_ON))
+ led->cdev.brightness = LED_FULL;
+ else
+ led->cdev.brightness = LED_OFF;
--- /dev/null
+From 486ead409ac7f0bcf3f4194c299691118eb3cb3c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:45 +0100
+Subject: [PATCH] leds: bcm6328: code cleaning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+- Remove double whitespace
+- Add missing brackets
+- Add spinlock info
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -42,7 +42,7 @@
+ #define BCM6328_LED_SHIFT_TEST BIT(30)
+ #define BCM6328_LED_TEST BIT(31)
+ #define BCM6328_INIT_MASK (BCM6328_SERIAL_LED_EN | \
+- BCM6328_SERIAL_LED_MUX | \
++ BCM6328_SERIAL_LED_MUX | \
+ BCM6328_SERIAL_LED_CLK_NPOL | \
+ BCM6328_SERIAL_LED_DATA_PPOL | \
+ BCM6328_SERIAL_LED_SHIFT_DIR)
+@@ -151,9 +151,9 @@ static int bcm6328_blink_set(struct led_
+ }
+
+ delay = *delay_on / BCM6328_LED_INTERVAL_MS;
+- if (delay == 0)
++ if (delay == 0) {
+ delay = 1;
+- else if (delay > BCM6328_LED_INTV_MASK) {
++ } else if (delay > BCM6328_LED_INTV_MASK) {
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay > %ums)\n",
+ BCM6328_LED_INTV_MASK * BCM6328_LED_INTERVAL_MS);
+@@ -337,7 +337,7 @@ static int bcm6328_leds_probe(struct pla
+ struct device_node *child;
+ struct resource *mem_r;
+ void __iomem *mem;
+- spinlock_t *lock;
++ spinlock_t *lock; /* memory lock */
+ unsigned long val, *blink_leds, *blink_delay;
+
+ mem_r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
--- /dev/null
+From 535d28f143e4eadb8f675885f29f7564dce5acab Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:46 +0100
+Subject: [PATCH] leds: bcm6328: remove unneded lock when checking initial LED
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This lock isn't really needed, since we're only reading the register and
+changes made to other LEDs aren't relevant.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -264,7 +264,6 @@ static int bcm6328_led(struct device *de
+ unsigned long *blink_leds, unsigned long *blink_delay)
+ {
+ struct bcm6328_led *led;
+- unsigned long flags;
+ const char *state;
+ int rc;
+
+@@ -286,7 +285,6 @@ static int bcm6328_led(struct device *de
+ "linux,default-trigger",
+ NULL);
+
+- spin_lock_irqsave(lock, flags);
+ if (!of_property_read_string(nc, "default-state", &state)) {
+ if (!strcmp(state, "on")) {
+ led->cdev.brightness = LED_FULL;
+@@ -314,7 +312,6 @@ static int bcm6328_led(struct device *de
+ } else {
+ led->cdev.brightness = LED_OFF;
+ }
+- spin_unlock_irqrestore(lock, flags);
+
+ bcm6328_led_set(&led->cdev, led->cdev.brightness);
+
--- /dev/null
+From 240d3bc917249c27fd45b081c1948bd0fff88389 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:47 +0100
+Subject: [PATCH] leds: bcm6358: Use bcm6358_led_set() in order to get rid of
+ the lock
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Replaces bcm6358_led_mode with bcm6358_led_set so we don't need to handle
+the lock.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6358.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/leds/leds-bcm6358.c
++++ b/drivers/leds/leds-bcm6358.c
+@@ -141,9 +141,10 @@ static int bcm6358_led(struct device *de
+ } else {
+ led->cdev.brightness = LED_OFF;
+ }
+- bcm6358_led_mode(led, led->cdev.brightness);
+ spin_unlock_irqrestore(lock, flags);
+
++ bcm6358_led_set(&led->cdev, led->cdev.brightness);
++
+ led->cdev.brightness_set = bcm6358_led_set;
+
+ rc = led_classdev_register(dev, &led->cdev);
--- /dev/null
+From a43fde32adcb39be4ee33c2f57c3ad5e2e750fbc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:48 +0100
+Subject: [PATCH] leds: bcm6358: remove unneded lock when checking initial LED
+ status
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This lock isn't really needed, since we're only reading the register and
+changes made to other LEDs aren't relevant.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6358.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/leds/leds-bcm6358.c
++++ b/drivers/leds/leds-bcm6358.c
+@@ -99,7 +99,6 @@ static int bcm6358_led(struct device *de
+ void __iomem *mem, spinlock_t *lock)
+ {
+ struct bcm6358_led *led;
+- unsigned long flags;
+ const char *state;
+ int rc;
+
+@@ -119,7 +118,6 @@ static int bcm6358_led(struct device *de
+ "linux,default-trigger",
+ NULL);
+
+- spin_lock_irqsave(lock, flags);
+ if (!of_property_read_string(nc, "default-state", &state)) {
+ if (!strcmp(state, "on")) {
+ led->cdev.brightness = LED_FULL;
+@@ -141,7 +139,6 @@ static int bcm6358_led(struct device *de
+ } else {
+ led->cdev.brightness = LED_OFF;
+ }
+- spin_unlock_irqrestore(lock, flags);
+
+ bcm6358_led_set(&led->cdev, led->cdev.brightness);
+
--- /dev/null
+From 4dac45ffbd2a58d7d74b9a07954c5b96108abf19 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:49 +0100
+Subject: [PATCH] leds: bcm6328: add little endian support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This adds little endian support while keeping big endian support.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -76,12 +76,20 @@ struct bcm6328_led {
+
+ static void bcm6328_led_write(void __iomem *reg, unsigned long data)
+ {
++#ifdef CONFIG_CPU_BIG_ENDIAN
+ iowrite32be(data, reg);
++#else
++ writel(data, reg);
++#endif
+ }
+
+ static unsigned long bcm6328_led_read(void __iomem *reg)
+ {
++#ifdef CONFIG_CPU_BIG_ENDIAN
+ return ioread32be(reg);
++#else
++ return readl(reg);
++#endif
+ }
+
+ /**
--- /dev/null
+From 9cadc2eff18c892bf8d11ac8115cbc1aa1172175 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:50 +0100
+Subject: [PATCH] leds: bcm6358: add little endian support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This adds little endian support while keeping big endian support.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6358.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/leds/leds-bcm6358.c
++++ b/drivers/leds/leds-bcm6358.c
+@@ -49,12 +49,20 @@ struct bcm6358_led {
+
+ static void bcm6358_led_write(void __iomem *reg, unsigned long data)
+ {
++#ifdef CONFIG_CPU_BIG_ENDIAN
+ iowrite32be(data, reg);
++#else
++ writel(data, reg);
++#endif
+ }
+
+ static unsigned long bcm6358_led_read(void __iomem *reg)
+ {
++#ifdef CONFIG_CPU_BIG_ENDIAN
+ return ioread32be(reg);
++#else
++ return readl(reg);
++#endif
+ }
+
+ static unsigned long bcm6358_led_busy(void __iomem *mem)
--- /dev/null
+From 6798b85bb625a0c8dbf12614083f1145ed7ddfd5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:51 +0100
+Subject: [PATCH] leds: bcm6328: simplify duplicated unlock in
+ bcm6328_blink_set
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Instead of duplicating the unlock we can store the return value and use a
+single unlock before returning that value, which simplifies the code.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -146,6 +146,7 @@ static int bcm6328_blink_set(struct led_
+ struct bcm6328_led *led =
+ container_of(led_cdev, struct bcm6328_led, cdev);
+ unsigned long delay, flags;
++ int rc;
+
+ if (!*delay_on)
+ *delay_on = BCM6328_LED_DEF_DELAY;
+@@ -183,16 +184,15 @@ static int bcm6328_blink_set(struct led_
+ bcm6328_led_write(led->mem + BCM6328_REG_INIT, val);
+
+ bcm6328_led_mode(led, BCM6328_LED_MODE_BLINK);
+-
+- spin_unlock_irqrestore(led->lock, flags);
++ rc = 0;
+ } else {
+- spin_unlock_irqrestore(led->lock, flags);
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay already set)\n");
+- return -EINVAL;
++ rc = -EINVAL;
+ }
++ spin_unlock_irqrestore(led->lock, flags);
+
+- return 0;
++ return rc;
+ }
+
+ static int bcm6328_hwled(struct device *dev, struct device_node *nc, u32 reg,
--- /dev/null
+From c48c89866ffa61cc209828f8daa06f4f6380028e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Tue, 15 Dec 2015 21:03:52 +0100
+Subject: [PATCH] leds: bcm6358: merge bcm6358_led_mode and bcm6358_led_set
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+bcm6358_led_mode is now only called by bcm6358_led_set, so merge both
+in one single function.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6358.c | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+--- a/drivers/leds/leds-bcm6358.c
++++ b/drivers/leds/leds-bcm6358.c
+@@ -76,12 +76,15 @@ static unsigned long bcm6358_led_busy(vo
+ return val;
+ }
+
+-static void bcm6358_led_mode(struct bcm6358_led *led, unsigned long value)
++static void bcm6358_led_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
+ {
+- unsigned long val;
++ struct bcm6358_led *led =
++ container_of(led_cdev, struct bcm6358_led, cdev);
++ unsigned long flags, val;
+
++ spin_lock_irqsave(led->lock, flags);
+ bcm6358_led_busy(led->mem);
+-
+ val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
+ if ((led->active_low && value == LED_OFF) ||
+ (!led->active_low && value != LED_OFF))
+@@ -89,17 +92,6 @@ static void bcm6358_led_mode(struct bcm6
+ else
+ val &= ~(BIT(led->pin));
+ bcm6358_led_write(led->mem + BCM6358_REG_MODE, val);
+-}
+-
+-static void bcm6358_led_set(struct led_classdev *led_cdev,
+- enum led_brightness value)
+-{
+- struct bcm6358_led *led =
+- container_of(led_cdev, struct bcm6358_led, cdev);
+- unsigned long flags;
+-
+- spin_lock_irqsave(led->lock, flags);
+- bcm6358_led_mode(led, value);
+ spin_unlock_irqrestore(led->lock, flags);
+ }
+
--- /dev/null
+From b5b7aea24c62d8b334520a3aab6e590d2be28e77 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Wed, 16 Dec 2015 21:13:48 +0100
+Subject: [PATCH] leds: bcm6328: improve blink support
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+BCM6328 controller has a margin of 20ms per blink step, which means that
+we can only set it to 20, 40, 60 ... 1260 ms (0x3f * 20ms).
+However, when checking if delay_on == delay_off, we were not considering
+the case when the user had set delay_on=20 and delay_off=21, since this
+will cause the driver to fallback to software blinking.
+This update fixes this issue and improves blink steps by rounding them
+in a more sensible way. Now 30-49ms is rounded to 40 ms, and previous
+behaviour implied 40-59ms being rounded to 40 ms.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6328.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+--- a/drivers/leds/leds-bcm6328.c
++++ b/drivers/leds/leds-bcm6328.c
+@@ -140,6 +140,18 @@ static void bcm6328_led_set(struct led_c
+ spin_unlock_irqrestore(led->lock, flags);
+ }
+
++static unsigned long bcm6328_blink_delay(unsigned long delay)
++{
++ unsigned long bcm6328_delay;
++
++ bcm6328_delay = delay + BCM6328_LED_INTERVAL_MS / 2;
++ bcm6328_delay = bcm6328_delay / BCM6328_LED_INTERVAL_MS;
++ if (bcm6328_delay == 0)
++ bcm6328_delay = 1;
++
++ return bcm6328_delay;
++}
++
+ static int bcm6328_blink_set(struct led_classdev *led_cdev,
+ unsigned long *delay_on, unsigned long *delay_off)
+ {
+@@ -153,16 +165,14 @@ static int bcm6328_blink_set(struct led_
+ if (!*delay_off)
+ *delay_off = BCM6328_LED_DEF_DELAY;
+
+- if (*delay_on != *delay_off) {
++ delay = bcm6328_blink_delay(*delay_on);
++ if (delay != bcm6328_blink_delay(*delay_off)) {
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay_on != delay_off)\n");
+ return -EINVAL;
+ }
+
+- delay = *delay_on / BCM6328_LED_INTERVAL_MS;
+- if (delay == 0) {
+- delay = 1;
+- } else if (delay > BCM6328_LED_INTV_MASK) {
++ if (delay > BCM6328_LED_INTV_MASK) {
+ dev_dbg(led_cdev->dev,
+ "fallback to soft blinking (delay > %ums)\n",
+ BCM6328_LED_INTV_MASK * BCM6328_LED_INTERVAL_MS);
--- /dev/null
+From 376886d44f4cba72c4942aa1ac834ba00f6f222d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
+Date: Wed, 16 Dec 2015 21:13:49 +0100
+Subject: [PATCH] leds: bcm6358: remove unneeded busy status check
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The busy status checking isn't needed while reading initial LED status.
+
+Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
+Signed-off-by: Jacek Anaszewski <j.anaszewski@samsung.com>
+---
+ drivers/leds/leds-bcm6358.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+--- a/drivers/leds/leds-bcm6358.c
++++ b/drivers/leds/leds-bcm6358.c
+@@ -123,9 +123,6 @@ static int bcm6358_led(struct device *de
+ led->cdev.brightness = LED_FULL;
+ } else if (!strcmp(state, "keep")) {
+ unsigned long val;
+-
+- bcm6358_led_busy(led->mem);
+-
+ val = bcm6358_led_read(led->mem + BCM6358_REG_MODE);
+ val &= BIT(led->pin);
+ if ((led->active_low && !val) ||