Commit 324c66ff authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'leds-fixes-for-3.13' of...

Merge branch 'leds-fixes-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds

Pull LED fix from Bryan Wu:
 "Pali Rohár and Pavel Machek reported the LED of Nokia N900 doesn't
  work with our latest 3.13-rc6 kernel.  Milo fixed the regression here"

* 'leds-fixes-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds:
  leds: lp5521/5523: Remove duplicate mutex
parents cff539b1 e70988d1
...@@ -244,18 +244,12 @@ static int lp5521_update_program_memory(struct lp55xx_chip *chip, ...@@ -244,18 +244,12 @@ static int lp5521_update_program_memory(struct lp55xx_chip *chip,
if (i % 2) if (i % 2)
goto err; goto err;
mutex_lock(&chip->lock);
for (i = 0; i < LP5521_PROGRAM_LENGTH; i++) { for (i = 0; i < LP5521_PROGRAM_LENGTH; i++) {
ret = lp55xx_write(chip, addr[idx] + i, pattern[i]); ret = lp55xx_write(chip, addr[idx] + i, pattern[i]);
if (ret) { if (ret)
mutex_unlock(&chip->lock);
return -EINVAL; return -EINVAL;
}
} }
mutex_unlock(&chip->lock);
return size; return size;
err: err:
...@@ -427,15 +421,17 @@ static ssize_t store_engine_load(struct device *dev, ...@@ -427,15 +421,17 @@ static ssize_t store_engine_load(struct device *dev,
{ {
struct lp55xx_led *led = i2c_get_clientdata(to_i2c_client(dev)); struct lp55xx_led *led = i2c_get_clientdata(to_i2c_client(dev));
struct lp55xx_chip *chip = led->chip; struct lp55xx_chip *chip = led->chip;
int ret;
mutex_lock(&chip->lock); mutex_lock(&chip->lock);
chip->engine_idx = nr; chip->engine_idx = nr;
lp5521_load_engine(chip); lp5521_load_engine(chip);
ret = lp5521_update_program_memory(chip, buf, len);
mutex_unlock(&chip->lock); mutex_unlock(&chip->lock);
return lp5521_update_program_memory(chip, buf, len); return ret;
} }
store_load(1) store_load(1)
store_load(2) store_load(2)
......
...@@ -337,18 +337,12 @@ static int lp5523_update_program_memory(struct lp55xx_chip *chip, ...@@ -337,18 +337,12 @@ static int lp5523_update_program_memory(struct lp55xx_chip *chip,
if (i % 2) if (i % 2)
goto err; goto err;
mutex_lock(&chip->lock);
for (i = 0; i < LP5523_PROGRAM_LENGTH; i++) { for (i = 0; i < LP5523_PROGRAM_LENGTH; i++) {
ret = lp55xx_write(chip, LP5523_REG_PROG_MEM + i, pattern[i]); ret = lp55xx_write(chip, LP5523_REG_PROG_MEM + i, pattern[i]);
if (ret) { if (ret)
mutex_unlock(&chip->lock);
return -EINVAL; return -EINVAL;
}
} }
mutex_unlock(&chip->lock);
return size; return size;
err: err:
...@@ -548,15 +542,17 @@ static ssize_t store_engine_load(struct device *dev, ...@@ -548,15 +542,17 @@ static ssize_t store_engine_load(struct device *dev,
{ {
struct lp55xx_led *led = i2c_get_clientdata(to_i2c_client(dev)); struct lp55xx_led *led = i2c_get_clientdata(to_i2c_client(dev));
struct lp55xx_chip *chip = led->chip; struct lp55xx_chip *chip = led->chip;
int ret;
mutex_lock(&chip->lock); mutex_lock(&chip->lock);
chip->engine_idx = nr; chip->engine_idx = nr;
lp5523_load_engine_and_select_page(chip); lp5523_load_engine_and_select_page(chip);
ret = lp5523_update_program_memory(chip, buf, len);
mutex_unlock(&chip->lock); mutex_unlock(&chip->lock);
return lp5523_update_program_memory(chip, buf, len); return ret;
} }
store_load(1) store_load(1)
store_load(2) store_load(2)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment