Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 358581
b: refs/heads/master
c: 5e3b7c6
h: refs/heads/master
i:
  358579: a3c0c18
v: v3
  • Loading branch information
Axel Lin authored and Bryan Wu committed Feb 2, 2013
1 parent 0222add commit 5101f10
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a1932edf8baaf2b09ad72b119c1f9749ad4397f2
refs/heads/master: 5e3b7c6b1cb1a579a65fa77c7f785d94013025be
58 changes: 40 additions & 18 deletions trunk/drivers/leds/leds-lm3530.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,40 @@ static void lm3530_als_configure(struct lm3530_platform_data *pdata,
(pdata->als2_resistor_sel << LM3530_ALS2_IMP_SHIFT);
}

static int lm3530_led_enable(struct lm3530_data *drvdata)
{
int ret;

if (drvdata->enable)
return 0;

ret = regulator_enable(drvdata->regulator);
if (ret) {
dev_err(drvdata->led_dev.dev, "Failed to enable vin:%d\n", ret);
return ret;
}

drvdata->enable = true;
return 0;
}

static void lm3530_led_disable(struct lm3530_data *drvdata)
{
int ret;

if (!drvdata->enable)
return;

ret = regulator_disable(drvdata->regulator);
if (ret) {
dev_err(drvdata->led_dev.dev, "Failed to disable vin:%d\n",
ret);
return;
}

drvdata->enable = false;
}

static int lm3530_init_registers(struct lm3530_data *drvdata)
{
int ret = 0;
Expand Down Expand Up @@ -245,15 +279,9 @@ static int lm3530_init_registers(struct lm3530_data *drvdata)
reg_val[12] = LM3530_DEF_ZT_3; /* LM3530_ALS_Z3T_REG */
reg_val[13] = LM3530_DEF_ZT_4; /* LM3530_ALS_Z4T_REG */

if (!drvdata->enable) {
ret = regulator_enable(drvdata->regulator);
if (ret) {
dev_err(&drvdata->client->dev,
"Enable regulator failed\n");
return ret;
}
drvdata->enable = true;
}
ret = lm3530_led_enable(drvdata);
if (ret)
return ret;

for (i = 0; i < LM3530_REG_MAX; i++) {
/* do not update brightness register when pwm mode */
Expand Down Expand Up @@ -305,13 +333,8 @@ static void lm3530_brightness_set(struct led_classdev *led_cdev,
else
drvdata->brightness = brt_val;

if (brt_val == 0) {
err = regulator_disable(drvdata->regulator);
if (err)
dev_err(&drvdata->client->dev,
"Disable regulator failed\n");
drvdata->enable = false;
}
if (brt_val == 0)
lm3530_led_disable(drvdata);
break;
case LM3530_BL_MODE_ALS:
break;
Expand Down Expand Up @@ -458,8 +481,7 @@ static int lm3530_remove(struct i2c_client *client)

device_remove_file(drvdata->led_dev.dev, &dev_attr_mode);

if (drvdata->enable)
regulator_disable(drvdata->regulator);
lm3530_led_disable(drvdata);
led_classdev_unregister(&drvdata->led_dev);
return 0;
}
Expand Down

0 comments on commit 5101f10

Please sign in to comment.