summaryrefslogtreecommitdiff
path: root/drivers/leds/leds-lm3530.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/leds/leds-lm3530.c')
-rw-r--r--drivers/leds/leds-lm3530.c54
1 files changed, 13 insertions, 41 deletions
diff --git a/drivers/leds/leds-lm3530.c b/drivers/leds/leds-lm3530.c
index 41b5f574ad0..c3d4a69655f 100644
--- a/drivers/leds/leds-lm3530.c
+++ b/drivers/leds/leds-lm3530.c
@@ -22,6 +22,7 @@
#include <linux/types.h>
#include <linux/regulator/consumer.h>
#include <linux/module.h>
+#include <linux/gpio.h>
#define LM3530_LED_DEV "lcd-backlight"
#define LM3530_NAME "lm3530-led"
@@ -92,6 +93,7 @@ struct lm3530_mode_map {
static struct lm3530_mode_map mode_map[] = {
{ "man", LM3530_BL_MODE_MANUAL },
+ { "man", LM3530_BL_MODE_SIMPLE_MANUAL },
{ "als", LM3530_BL_MODE_ALS },
{ "pwm", LM3530_BL_MODE_PWM },
};
@@ -246,6 +248,11 @@ static int lm3530_init_registers(struct lm3530_data *drvdata)
case LM3530_BL_MODE_MANUAL:
gen_config |= LM3530_ENABLE_I2C;
break;
+ case LM3530_BL_MODE_SIMPLE_MANUAL:
+ gen_config |= LM3530_ENABLE_I2C | LM3530_ENABLE_PWM_SIMPLE |
+ LM3530_ENABLE_PWM |
+ (pdata->pwm_pol_hi << LM3530_PWM_POL_SHIFT);
+ break;
case LM3530_BL_MODE_ALS:
gen_config |= LM3530_ENABLE_I2C;
lm3530_als_configure(pdata, &als);
@@ -317,6 +324,7 @@ static void lm3530_brightness_set(struct led_classdev *led_cdev,
switch (drvdata->mode) {
case LM3530_BL_MODE_MANUAL:
+ case LM3530_BL_MODE_SIMPLE_MANUAL:
if (!drvdata->enable) {
err = lm3530_init_registers(drvdata);
@@ -471,6 +479,11 @@ static int lm3530_probe(struct i2c_client *client,
goto err_create_file;
}
+ if (gpio_request_one(drvdata->pdata->pwm_gpio,
+ GPIOF_DIR_OUT | GPIOF_EXPORT | GPIOF_INIT_HIGH,
+ "backlight gpio"))
+ dev_err(&client->dev, "Failed to request gpio:\n");
+
return 0;
err_create_file:
@@ -507,46 +520,6 @@ static void lm3530_shutdown(struct i2c_client *client)
return;
}
-/**
- * lm3530_suspend - suspend backlight
- *
- * For now, off. Should also save the previous setting.
- */
-
-static int lm3530_suspend(struct device *dev) {
- struct led_classdev *led_cdev = dev_get_drvdata(dev);
-
- printk ("OLIO %s:%s Suspending\n", __FILE__, __FUNCTION__);
-
- lm3530_brightness_set(led_cdev, LED_OFF);
-
- return 0;
-}
-
-/**
- * lm3530_resume - reset backlight
- *
- * Turn the backlight on again (Does android take care of this for us?)
- * For now, leave this as a no-op - Android turns on the lights.
- */
-
-static int lm3530_resume(struct device *dev) {
- struct led_classdev *led_cdev = dev_get_drvdata(dev);
-
- printk ("OLIO %s:%s Resuming\n", __FILE__, __FUNCTION__);
-
- /* lm3530_brightness_set(led_cdev, 100); */
-
- return 0;
-}
-
-
-/* ---------------------------------------------------------------------- */
-
-static const struct dev_pm_ops lm3530_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(lm3530_suspend, lm3530_resume)
-};
-
static const struct i2c_device_id lm3530_id[] = {
{LM3530_NAME, 0},
{}
@@ -561,7 +534,6 @@ static struct i2c_driver lm3530_i2c_driver = {
.driver = {
.name = LM3530_NAME,
.owner = THIS_MODULE,
- .pm = &lm3530_pm_ops,
},
};