diff options
Diffstat (limited to 'drivers/misc/apds990x.c')
| -rw-r--r-- | drivers/misc/apds990x.c | 67 | 
1 files changed, 31 insertions, 36 deletions
diff --git a/drivers/misc/apds990x.c b/drivers/misc/apds990x.c index 200311fea36..868a30a1b41 100644 --- a/drivers/misc/apds990x.c +++ b/drivers/misc/apds990x.c @@ -609,6 +609,7 @@ static int apds990x_detect(struct apds990x_chip *chip)  	return ret;  } +#if defined(CONFIG_PM) || defined(CONFIG_PM_RUNTIME)  static int apds990x_chip_on(struct apds990x_chip *chip)  {  	int err	 = regulator_bulk_enable(ARRAY_SIZE(chip->regs), @@ -624,6 +625,7 @@ static int apds990x_chip_on(struct apds990x_chip *chip)  	apds990x_mode_on(chip);  	return 0;  } +#endif  static int apds990x_chip_off(struct apds990x_chip *chip)  { @@ -694,12 +696,11 @@ static ssize_t apds990x_lux_calib_store(struct device *dev,  {  	struct apds990x_chip *chip = dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; - -	if (chip->lux_calib > APDS_RANGE) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	chip->lux_calib = value; @@ -760,8 +761,9 @@ static ssize_t apds990x_rate_store(struct device *dev,  	unsigned long value;  	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex);  	ret = apds990x_set_arate(chip, value); @@ -814,9 +816,11 @@ static ssize_t apds990x_prox_enable_store(struct device *dev,  {  	struct apds990x_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	mutex_lock(&chip->mutex); @@ -893,11 +897,12 @@ static ssize_t apds990x_lux_thresh_below_show(struct device *dev,  static ssize_t apds990x_set_lux_thresh(struct apds990x_chip *chip, u32 *target,  				const char *buf)  { -	int ret = 0;  	unsigned long thresh; +	int ret; -	if (strict_strtoul(buf, 0, &thresh)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &thresh); +	if (ret) +		return ret;  	if (thresh > APDS_RANGE)  		return -EINVAL; @@ -958,9 +963,11 @@ static ssize_t apds990x_prox_threshold_store(struct device *dev,  {  	struct apds990x_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL; +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret;  	if ((value > APDS_RANGE) || (value == 0) ||  		(value < APDS_PROX_HYSTERESIS)) @@ -991,9 +998,12 @@ static ssize_t apds990x_power_state_store(struct device *dev,  {  	struct apds990x_chip *chip =  dev_get_drvdata(dev);  	unsigned long value; +	int ret; + +	ret = kstrtoul(buf, 0, &value); +	if (ret) +		return ret; -	if (strict_strtoul(buf, 0, &value)) -		return -EINVAL;  	if (value) {  		pm_runtime_get_sync(dev);  		mutex_lock(&chip->mutex); @@ -1045,7 +1055,7 @@ static struct attribute_group apds990x_attribute_group[] = {  	{.attrs = sysfs_attrs_ctrl },  }; -static int __devinit apds990x_probe(struct i2c_client *client, +static int apds990x_probe(struct i2c_client *client,  				const struct i2c_device_id *id)  {  	struct apds990x_chip *chip; @@ -1179,7 +1189,7 @@ fail1:  	return err;  } -static int __devexit apds990x_remove(struct i2c_client *client) +static int apds990x_remove(struct i2c_client *client)  {  	struct apds990x_chip *chip = i2c_get_clientdata(client); @@ -1202,7 +1212,7 @@ static int __devexit apds990x_remove(struct i2c_client *client)  	return 0;  } -#ifdef CONFIG_PM +#ifdef CONFIG_PM_SLEEP  static int apds990x_suspend(struct device *dev)  {  	struct i2c_client *client = container_of(dev, struct i2c_client, dev); @@ -1225,10 +1235,6 @@ static int apds990x_resume(struct device *dev)  	return 0;  } -#else -#define apds990x_suspend  NULL -#define apds990x_resume	  NULL -#define apds990x_shutdown NULL  #endif  #ifdef CONFIG_PM_RUNTIME @@ -1273,23 +1279,12 @@ static struct i2c_driver apds990x_driver = {  		.pm	= &apds990x_pm_ops,  	},  	.probe	  = apds990x_probe, -	.remove	  = __devexit_p(apds990x_remove), +	.remove	  = apds990x_remove,  	.id_table = apds990x_id,  }; -static int __init apds990x_init(void) -{ -	return i2c_add_driver(&apds990x_driver); -} - -static void __exit apds990x_exit(void) -{ -	i2c_del_driver(&apds990x_driver); -} +module_i2c_driver(apds990x_driver);  MODULE_DESCRIPTION("APDS990X combined ALS and proximity sensor");  MODULE_AUTHOR("Samu Onkalo, Nokia Corporation");  MODULE_LICENSE("GPL v2"); - -module_init(apds990x_init); -module_exit(apds990x_exit);  | 
