diff options
Diffstat (limited to 'drivers/leds/leds-lm3530.c')
| -rw-r--r-- | drivers/leds/leds-lm3530.c | 54 | 
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,  	},  }; |