[lm-sensors] [RFC][PATCH]Add suspend and resume for LM75
Jean Delvare
khali at linux-fr.org
Thu Jun 3 09:06:33 CEST 2010
Hi Shubhrajyoti,
On Fri, 28 May 2010 11:31:23 +0530, Datta, Shubhrajyoti wrote:
>
> There is a shutdown feature at suspend it can be enabled
> to reduce current consumption and resume it can be switched
> off.
>
> Signed-off-by: Shubhrajyoti D <shubhrajyoti at ti.com>
Please use your full name.
> ---
> drivers/hwmon/lm75.c | 35 +++++++++++++++++++++++++++++++++++
> drivers/hwmon/lm75.h | 1 +
> 2 files changed, 36 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
> index 5646342..4ef1f59 100644
> --- a/drivers/hwmon/lm75.c
> +++ b/drivers/hwmon/lm75.c
> @@ -281,6 +281,39 @@ static int lm75_detect(struct i2c_client *new_client,
>
> return 0;
> }
> +#ifdef CONFIG_PM
> +static int lm75_suspend(struct device *dev)
> +{
> + int status;
> + struct i2c_client *client = to_i2c_client(dev);
> + status = lm75_read_value(client, LM75_REG_CONF);
> + if (status < 0) {
> + dev_dbg(&client->dev, "Can't read config? %d\n", status);
> + return status;
> + }
> + status = status | LM75_SHUTDOWN;
> + lm75_write_value(client, LM75_REG_CONF, status);
> + return 0;
> +}
> +
> +static int lm75_resume(struct device *dev)
> +{
> + int status;
> + struct i2c_client *client = to_i2c_client(dev);
> + status = lm75_read_value(client, LM75_REG_CONF);
> + if (status < 0) {
> + dev_dbg(&client->dev, "Can't read config? %d\n", status);
> + return status;
> + }
> + status = status & ~LM75_SHUTDOWN;
> + lm75_write_value(client, LM75_REG_CONF, status);
> + return 0;
> +}
> +#else
> +#define lm75_suspend NULL
> +#define lm75_resume NULL
> +#endif /* CONFIG_PM */
> +
>
> static struct i2c_driver lm75_driver = {
> .class = I2C_CLASS_HWMON,
> @@ -292,6 +325,8 @@ static struct i2c_driver lm75_driver = {
> .id_table = lm75_ids,
> .detect = lm75_detect,
> .address_list = normal_i2c,
> + .suspend = lm75_suspend,
> + .resume = lm75_resume,
I get the following warning:
drivers/hwmon/lm75.c:326: warning: initialization from incompatible pointer type
drivers/hwmon/lm75.c:327: warning: initialization from incompatible pointer type
so it can't be right. Look in <linux/i2c.h>, these functions want
struct i2c_client as a parameter, not struct device.
> };
>
> /*-----------------------------------------------------------------------*/
> diff --git a/drivers/hwmon/lm75.h b/drivers/hwmon/lm75.h
> index 7c93454..8e14253 100644
> --- a/drivers/hwmon/lm75.h
> +++ b/drivers/hwmon/lm75.h
> @@ -30,6 +30,7 @@
> /* straight from the datasheet */
> #define LM75_TEMP_MIN (-55000)
> #define LM75_TEMP_MAX 125000
> +#define LM75_SHUTDOWN 1
Would be better written 0x01, as this is a bit mask.
>
> /* TEMP: 0.001C/bit (-55C to +125C)
> REG: (0.5C/bit, two's complement) << 7 */
--
Jean Delvare
More information about the lm-sensors
mailing list