[PATCH] staging:iio: Use dev_pm_ops
Lars-Peter Clausen
lars at metafoo.de
Wed Feb 22 10:01:13 UTC 2012
Hi Shubhrajyoti,
On 02/22/2012 07:24 AM, Shubhrajyoti Datta wrote:
>> diff --git a/drivers/staging/iio/addac/adt7316-i2c.c b/drivers/staging/iio/addac/adt7316-i2c.c
>> index 2c03a39..9e128dd 100644
>> --- a/drivers/staging/iio/addac/adt7316-i2c.c
>> +++ b/drivers/staging/iio/addac/adt7316-i2c.c
>> @@ -125,30 +125,14 @@ static const struct i2c_device_id adt7316_i2c_id[] = {
>>
>> MODULE_DEVICE_TABLE(i2c, adt7316_i2c_id);
>>
>> -#ifdef CONFIG_PM
>> -static int adt7316_i2c_suspend(struct i2c_client *client, pm_message_t message)
>> -{
>> - return adt7316_disable(&client->dev);
>> -}
>> -
>> -static int adt7316_i2c_resume(struct i2c_client *client)
>> -{
>> - return adt7316_enable(&client->dev);
>> -}
>> -#else
>> -# define adt7316_i2c_suspend NULL
>> -# define adt7316_i2c_resume NULL
>> -#endif
>> -
>> static struct i2c_driver adt7316_driver = {
>> .driver = {
>> .name = "adt7316",
>> + .pm = ADT7316_PM_OPS,
> Could we use simple dev pm ops here?
We do, ADT7316_PM_OPS is defined as a pointer to adt7316_pm_ops, which is
defined with SIMPLE_DEV_PM_OPS. It is just in another module, because
adt7316_i2c and adt7316_par share the same set of suspend/resume functions.
>> .owner = THIS_MODULE,
>> },
>> .probe = adt7316_i2c_probe,
>> .remove = __devexit_p(adt7316_i2c_remove),
>> - .suspend = adt7316_i2c_suspend,
>> - .resume = adt7316_i2c_resume,
>> .id_table = adt7316_i2c_id,
>> };
>> module_i2c_driver(adt7316_driver);
>> diff --git a/drivers/staging/iio/addac/adt7316-spi.c b/drivers/staging/iio/addac/adt7316-spi.c
>> index 1ea3cd0..985f7d8 100644
>> --- a/drivers/staging/iio/addac/adt7316-spi.c
>> +++ b/drivers/staging/iio/addac/adt7316-spi.c
>> @@ -133,30 +133,14 @@ static const struct spi_device_id adt7316_spi_id[] = {
>>
>> MODULE_DEVICE_TABLE(spi, adt7316_spi_id);
>>
>> -#ifdef CONFIG_PM
>> -static int adt7316_spi_suspend(struct spi_device *spi_dev, pm_message_t message)
>> -{
>> - return adt7316_disable(&spi_dev->dev);
>> -}
>> -
>> -static int adt7316_spi_resume(struct spi_device *spi_dev)
>> -{
>> - return adt7316_enable(&spi_dev->dev);
>> -}
>> -#else
>> -# define adt7316_spi_suspend NULL
>> -# define adt7316_spi_resume NULL
>> -#endif
>> -
>> static struct spi_driver adt7316_driver = {
>> .driver = {
>> .name = "adt7316",
>> + .pm = ADT7316_PM_OPS,
>
> Could we use simple dev pm ops here?
>
>> .owner = THIS_MODULE,
>> },
>> .probe = adt7316_spi_probe,
>> .remove = __devexit_p(adt7316_spi_remove),
>> - .suspend = adt7316_spi_suspend,
>> - .resume = adt7316_spi_resume,
>> .id_table = adt7316_spi_id,
>> };
>> module_spi_driver(adt7316_driver);
>> diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c
>> index 13c3929..fd6a454 100644
>> --- a/drivers/staging/iio/addac/adt7316.c
>> +++ b/drivers/staging/iio/addac/adt7316.c
>> @@ -2089,24 +2089,25 @@ static struct attribute_group adt7516_event_attribute_group = {
>> .name = "events",
>> };
>>
>> -#ifdef CONFIG_PM
>> -int adt7316_disable(struct device *dev)
>> +#ifdef CONFIG_PM_SLEEP
>> +static int adt7316_disable(struct device *dev)
>> {
>> struct iio_dev *dev_info = dev_get_drvdata(dev);
>> struct adt7316_chip_info *chip = iio_priv(dev_info);
>>
>> return _adt7316_store_enabled(chip, 0);
>> }
>> -EXPORT_SYMBOL(adt7316_disable);
>>
>> -int adt7316_enable(struct device *dev)
>> +static int adt7316_enable(struct device *dev)
>> {
>> struct iio_dev *dev_info = dev_get_drvdata(dev);
>> struct adt7316_chip_info *chip = iio_priv(dev_info);
>>
>> return _adt7316_store_enabled(chip, 1);
>> }
>> -EXPORT_SYMBOL(adt7316_enable);
>> +
>> +SIMPLE_DEV_PM_OPS(adt7316_pm_ops, adt7316_disable, adt7316_enable);
>> +EXPORT_SYMBOL_GPL(adt7316_pm_ops);
>> #endif
>>
>> static const struct iio_info adt7316_info = {
>> diff --git a/drivers/staging/iio/addac/adt7316.h b/drivers/staging/iio/addac/adt7316.h
>> index d34bd67..4d3efff 100644
>> --- a/drivers/staging/iio/addac/adt7316.h
>> +++ b/drivers/staging/iio/addac/adt7316.h
>> @@ -10,6 +10,7 @@
>> #define _ADT7316_H_
>>
>> #include <linux/types.h>
>> +#include <linux/pm.h>
>>
>> #define ADT7316_REG_MAX_ADDR 0x3F
>>
>> @@ -23,9 +24,11 @@ struct adt7316_bus {
>> int (*multi_write) (void *client, u8 first_reg, u8 count, u8 *data);
>> };
>>
>> -#ifdef CONFIG_PM
>> -int adt7316_disable(struct device *dev);
>> -int adt7316_enable(struct device *dev);
>> +#ifdef CONFIG_PM_SLEEP
>> +extern const struct dev_pm_ops adt7316_pm_ops;
>> +#define ADT7316_PM_OPS (&adt7316_pm_ops)
>> +#else
>> +#define ADT7316_PM_OPS NULL
>> #endif
>> int adt7316_probe(struct device *dev, struct adt7316_bus *bus, const char *name);
>> int adt7316_remove(struct device *dev);
More information about the devel
mailing list