2013-03-10 13:32:38

by Lars-Peter Clausen

[permalink] [raw]
Subject: [PATCH 1/5] power: ds2782_battery: Use dev_pm_ops

Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.

Cc: Evgeny Romanov <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
---
drivers/power/ds2782_battery.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/power/ds2782_battery.c b/drivers/power/ds2782_battery.c
index e7301b3..4fdf700 100644
--- a/drivers/power/ds2782_battery.c
+++ b/drivers/power/ds2782_battery.c
@@ -332,31 +332,32 @@ static int ds278x_battery_remove(struct i2c_client *client)
return 0;
}

-#ifdef CONFIG_PM
+#ifdef CONFIG_PM_SLEEP

-static int ds278x_suspend(struct i2c_client *client,
- pm_message_t state)
+static int ds278x_suspend(struct device *dev)
{
+ struct i2c_client *client = to_i2c_client(dev);
struct ds278x_info *info = i2c_get_clientdata(client);

cancel_delayed_work(&info->bat_work);
return 0;
}

-static int ds278x_resume(struct i2c_client *client)
+static int ds278x_resume(struct device *dev)
{
+ struct i2c_client *client = to_i2c_client(dev);
struct ds278x_info *info = i2c_get_clientdata(client);

schedule_delayed_work(&info->bat_work, DS278x_DELAY);
return 0;
}

-#else
-
-#define ds278x_suspend NULL
-#define ds278x_resume NULL
+static SIMPLE_DEV_PM_OPS(ds278x_battery_pm_ops, ds278x_suspend, ds278x_resume);
+#define DS278X_BATTERY_PM_OPS (&ds278x_battery_pm_ops)

-#endif /* CONFIG_PM */
+#else
+#define DS278X_BATTERY_PM_OPS NULL
+#endif /* CONFIG_PM_SLEEP */


enum ds278x_num_id {
@@ -465,11 +466,10 @@ MODULE_DEVICE_TABLE(i2c, ds278x_id);
static struct i2c_driver ds278x_battery_driver = {
.driver = {
.name = "ds2782-battery",
+ .pm = DS278X_BATERY_PM_OPS,
},
.probe = ds278x_battery_probe,
.remove = ds278x_battery_remove,
- .suspend = ds278x_suspend,
- .resume = ds278x_resume,
.id_table = ds278x_id,
};
module_i2c_driver(ds278x_battery_driver);
--
1.8.0


2013-03-10 13:32:57

by Lars-Peter Clausen

[permalink] [raw]
Subject: [PATCH 3/5] power: sbs-battery: Use dev_pm_ops

Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.

Cc: Rhyland Klein <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
---
drivers/power/sbs-battery.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/drivers/power/sbs-battery.c b/drivers/power/sbs-battery.c
index 3960f0b..6a2e335 100644
--- a/drivers/power/sbs-battery.c
+++ b/drivers/power/sbs-battery.c
@@ -820,10 +820,11 @@ static int sbs_remove(struct i2c_client *client)
return 0;
}

-#if defined CONFIG_PM
-static int sbs_suspend(struct i2c_client *client,
- pm_message_t state)
+#if defined CONFIG_PM_SLEEP
+
+static int sbs_suspend(struct device *dev)
{
+ struct i2c_client *client = to_i2c_client(dev);
struct sbs_info *chip = i2c_get_clientdata(client);
s32 ret;

@@ -838,11 +839,13 @@ static int sbs_suspend(struct i2c_client *client,

return 0;
}
+
+static SIMPLE_DEV_PM_OPS(sbs_pm_ops, sbs_suspend, NULL);
+#define SBS_PM_OPS (&sbs_pm_ops)
+
#else
-#define sbs_suspend NULL
+#define SBS_PM_OPS NULL
#endif
-/* any smbus transaction will wake up sbs */
-#define sbs_resume NULL

static const struct i2c_device_id sbs_id[] = {
{ "bq20z75", 0 },
@@ -854,12 +857,11 @@ MODULE_DEVICE_TABLE(i2c, sbs_id);
static struct i2c_driver sbs_battery_driver = {
.probe = sbs_probe,
.remove = sbs_remove,
- .suspend = sbs_suspend,
- .resume = sbs_resume,
.id_table = sbs_id,
.driver = {
.name = "sbs-battery",
.of_match_table = sbs_dt_ids,
+ .pm = SBS_PM_OPS,
},
};
module_i2c_driver(sbs_battery_driver);
--
1.8.0

2013-03-10 13:32:47

by Lars-Peter Clausen

[permalink] [raw]
Subject: [PATCH 2/5] power: max17040_battery: Use dev_pm_ops

Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.

Cc: Minkyu Kang <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
---
drivers/power/max17040_battery.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/power/max17040_battery.c b/drivers/power/max17040_battery.c
index 74a0bd9..4e698d8 100644
--- a/drivers/power/max17040_battery.c
+++ b/drivers/power/max17040_battery.c
@@ -246,31 +246,34 @@ static int max17040_remove(struct i2c_client *client)
return 0;
}

-#ifdef CONFIG_PM
+#ifdef CONFIG_PM_SLEEP

-static int max17040_suspend(struct i2c_client *client,
- pm_message_t state)
+static int max17040_suspend(struct device *dev)
{
+ struct i2c_client *client = to_i2c_client(dev);
struct max17040_chip *chip = i2c_get_clientdata(client);

cancel_delayed_work(&chip->work);
return 0;
}

-static int max17040_resume(struct i2c_client *client)
+static int max17040_resume(struct device *dev)
{
+ struct i2c_client *client = to_i2c_client(dev);
struct max17040_chip *chip = i2c_get_clientdata(client);

schedule_delayed_work(&chip->work, MAX17040_DELAY);
return 0;
}

+static SIMPLE_DEV_PM_OPS(max17040_pm_ops, max17040_suspend, max17040_resume);
+#define MAX17040_PM_OPS (&max17040_pm_ops)
+
#else

-#define max17040_suspend NULL
-#define max17040_resume NULL
+#define MAX17040_PM_OPS NULL

-#endif /* CONFIG_PM */
+#endif /* CONFIG_PM_SLEEP */

static const struct i2c_device_id max17040_id[] = {
{ "max17040", 0 },
@@ -278,14 +281,14 @@ static const struct i2c_device_id max17040_id[] = {
};
MODULE_DEVICE_TABLE(i2c, max17040_id);

+
static struct i2c_driver max17040_i2c_driver = {
.driver = {
.name = "max17040",
+ .pm = MAX17040_PM_OPS,
},
.probe = max17040_probe,
.remove = max17040_remove,
- .suspend = max17040_suspend,
- .resume = max17040_resume,
.id_table = max17040_id,
};
module_i2c_driver(max17040_i2c_driver);
--
1.8.0

2013-03-10 13:33:22

by Lars-Peter Clausen

[permalink] [raw]
Subject: [PATCH 4/5] power: pm2301_charger: Remove __dev* annotations

The removal of __devinit and friends seems to have overlapped with the addition
of the pm2301_charger driver. Currently the driver fails to build with the
following errors:

drivers/power/pm2301_charger.c:843:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pm2xxx_wall_charger_probe'
drivers/power/pm2301_charger.c:1013:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pm2xxx_wall_charger_remove'
drivers/power/pm2301_charger.c:1049:11: error: 'pm2xxx_wall_charger_probe' undeclared here (not in a function)
drivers/power/pm2301_charger.c:1050:2: error: implicit declaration of function '__devexit_p'
drivers/power/pm2301_charger.c:1050:24: error: 'pm2xxx_wall_charger_remove' undeclared here (not in a function)

This patch removes the __dev* annotations, which fixes the build errors.

Cc: Lee Jones <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
---
drivers/power/pm2301_charger.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/power/pm2301_charger.c b/drivers/power/pm2301_charger.c
index ed48d75..ca424b8 100644
--- a/drivers/power/pm2301_charger.c
+++ b/drivers/power/pm2301_charger.c
@@ -851,7 +851,7 @@ static int pm2xxx_wall_charger_suspend(struct i2c_client *i2c_client,
return 0;
}

-static int __devinit pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
+static int pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
const struct i2c_device_id *id)
{
struct pm2xxx_platform_data *pl_data = i2c_client->dev.platform_data;
@@ -1021,7 +1021,7 @@ free_device_info:
return ret;
}

-static int __devexit pm2xxx_wall_charger_remove(struct i2c_client *i2c_client)
+static int pm2xxx_wall_charger_remove(struct i2c_client *i2c_client)
{
struct pm2xxx_charger *pm2 = i2c_get_clientdata(i2c_client);

@@ -1058,7 +1058,7 @@ MODULE_DEVICE_TABLE(i2c, pm2xxx_id);

static struct i2c_driver pm2xxx_charger_driver = {
.probe = pm2xxx_wall_charger_probe,
- .remove = __devexit_p(pm2xxx_wall_charger_remove),
+ .remove = pm2xxx_wall_charger_remove,
.suspend = pm2xxx_wall_charger_suspend,
.resume = pm2xxx_wall_charger_resume,
.driver = {
--
1.8.0

2013-03-10 13:33:20

by Lars-Peter Clausen

[permalink] [raw]
Subject: [PATCH 5/5] power: pm2301_charger: Remove no-op suspend/resume callbacks

Having suspend/resume callbacks which do nothing other then return 0 are
functional equivalent to having no suspend/resume callbacks. So just remove
these no-op suspend/resume callbacks.

Cc: Lee Jones <[email protected]>
Signed-off-by: Lars-Peter Clausen <[email protected]>
---
drivers/power/pm2301_charger.c | 13 -------------
1 file changed, 13 deletions(-)

diff --git a/drivers/power/pm2301_charger.c b/drivers/power/pm2301_charger.c
index ca424b8..e8aaa9d 100644
--- a/drivers/power/pm2301_charger.c
+++ b/drivers/power/pm2301_charger.c
@@ -840,17 +840,6 @@ static struct pm2xxx_irq pm2xxx_charger_irq[] = {
{"PM2XXX_IRQ_INT", pm2xxx_irq_int},
};

-static int pm2xxx_wall_charger_resume(struct i2c_client *i2c_client)
-{
- return 0;
-}
-
-static int pm2xxx_wall_charger_suspend(struct i2c_client *i2c_client,
- pm_message_t state)
-{
- return 0;
-}
-
static int pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
const struct i2c_device_id *id)
{
@@ -1059,8 +1048,6 @@ MODULE_DEVICE_TABLE(i2c, pm2xxx_id);
static struct i2c_driver pm2xxx_charger_driver = {
.probe = pm2xxx_wall_charger_probe,
.remove = pm2xxx_wall_charger_remove,
- .suspend = pm2xxx_wall_charger_suspend,
- .resume = pm2xxx_wall_charger_resume,
.driver = {
.name = "pm2xxx-wall_charger",
.owner = THIS_MODULE,
--
1.8.0

2013-03-11 18:05:55

by Rhyland Klein

[permalink] [raw]
Subject: Re: [PATCH 3/5] power: sbs-battery: Use dev_pm_ops

On 3/10/2013 9:34 AM, Lars-Peter Clausen wrote:
> Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.
>
> Cc: Rhyland Klein <[email protected]>
> Signed-off-by: Lars-Peter Clausen <[email protected]>
> ---
> drivers/power/sbs-battery.c | 18 ++++++++++--------
> 1 file changed, 10 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/power/sbs-battery.c b/drivers/power/sbs-battery.c
> index 3960f0b..6a2e335 100644
> --- a/drivers/power/sbs-battery.c
> +++ b/drivers/power/sbs-battery.c
> @@ -820,10 +820,11 @@ static int sbs_remove(struct i2c_client *client)
> return 0;
> }
>
> -#if defined CONFIG_PM
> -static int sbs_suspend(struct i2c_client *client,
> - pm_message_t state)
> +#if defined CONFIG_PM_SLEEP
> +
> +static int sbs_suspend(struct device *dev)
> {
> + struct i2c_client *client = to_i2c_client(dev);
> struct sbs_info *chip = i2c_get_clientdata(client);
> s32 ret;
>
> @@ -838,11 +839,13 @@ static int sbs_suspend(struct i2c_client *client,
>
> return 0;
> }
> +
> +static SIMPLE_DEV_PM_OPS(sbs_pm_ops, sbs_suspend, NULL);
> +#define SBS_PM_OPS (&sbs_pm_ops)
> +
> #else
> -#define sbs_suspend NULL
> +#define SBS_PM_OPS NULL
> #endif
> -/* any smbus transaction will wake up sbs */
> -#define sbs_resume NULL
>
> static const struct i2c_device_id sbs_id[] = {
> { "bq20z75", 0 },
> @@ -854,12 +857,11 @@ MODULE_DEVICE_TABLE(i2c, sbs_id);
> static struct i2c_driver sbs_battery_driver = {
> .probe = sbs_probe,
> .remove = sbs_remove,
> - .suspend = sbs_suspend,
> - .resume = sbs_resume,
> .id_table = sbs_id,
> .driver = {
> .name = "sbs-battery",
> .of_match_table = sbs_dt_ids,
> + .pm = SBS_PM_OPS,
> },
> };
> module_i2c_driver(sbs_battery_driver);
Looks got to me!
Acked-By Rhyland Klein <[email protected]>

--
nvpublic

2013-03-12 05:59:49

by Minkyu Kang

[permalink] [raw]
Subject: Re: [PATCH 2/5] power: max17040_battery: Use dev_pm_ops

On 10/03/13 22:34, Lars-Peter Clausen wrote:
> Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.
>
> Cc: Minkyu Kang <[email protected]>
> Signed-off-by: Lars-Peter Clausen <[email protected]>
> ---
> drivers/power/max17040_battery.c | 21 ++++++++++++---------
> 1 file changed, 12 insertions(+), 9 deletions(-)
>

Acked-by: Minkyu Kang <[email protected]>

Thanks,
Minkyu Kang.

2013-03-25 03:13:55

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH 4/5] power: pm2301_charger: Remove __dev* annotations

On Sun, Mar 10, 2013 at 02:34:08PM +0100, Lars-Peter Clausen wrote:
> The removal of __devinit and friends seems to have overlapped with the addition
> of the pm2301_charger driver. Currently the driver fails to build with the
> following errors:
>
> drivers/power/pm2301_charger.c:843:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pm2xxx_wall_charger_probe'
> drivers/power/pm2301_charger.c:1013:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pm2xxx_wall_charger_remove'
> drivers/power/pm2301_charger.c:1049:11: error: 'pm2xxx_wall_charger_probe' undeclared here (not in a function)
> drivers/power/pm2301_charger.c:1050:2: error: implicit declaration of function '__devexit_p'
> drivers/power/pm2301_charger.c:1050:24: error: 'pm2xxx_wall_charger_remove' undeclared here (not in a function)
>
> This patch removes the __dev* annotations, which fixes the build errors.
>
> Cc: Lee Jones <[email protected]>
> Signed-off-by: Lars-Peter Clausen <[email protected]>

Applied to battery-urgent.git, thanks a lot!

> ---
> drivers/power/pm2301_charger.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/power/pm2301_charger.c b/drivers/power/pm2301_charger.c
> index ed48d75..ca424b8 100644
> --- a/drivers/power/pm2301_charger.c
> +++ b/drivers/power/pm2301_charger.c
> @@ -851,7 +851,7 @@ static int pm2xxx_wall_charger_suspend(struct i2c_client *i2c_client,
> return 0;
> }
>
> -static int __devinit pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
> +static int pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
> const struct i2c_device_id *id)
> {
> struct pm2xxx_platform_data *pl_data = i2c_client->dev.platform_data;
> @@ -1021,7 +1021,7 @@ free_device_info:
> return ret;
> }
>
> -static int __devexit pm2xxx_wall_charger_remove(struct i2c_client *i2c_client)
> +static int pm2xxx_wall_charger_remove(struct i2c_client *i2c_client)
> {
> struct pm2xxx_charger *pm2 = i2c_get_clientdata(i2c_client);
>
> @@ -1058,7 +1058,7 @@ MODULE_DEVICE_TABLE(i2c, pm2xxx_id);
>
> static struct i2c_driver pm2xxx_charger_driver = {
> .probe = pm2xxx_wall_charger_probe,
> - .remove = __devexit_p(pm2xxx_wall_charger_remove),
> + .remove = pm2xxx_wall_charger_remove,
> .suspend = pm2xxx_wall_charger_suspend,
> .resume = pm2xxx_wall_charger_resume,
> .driver = {
> --
> 1.8.0
>
>

2013-04-01 06:04:00

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH 2/5] power: max17040_battery: Use dev_pm_ops

On Sun, Mar 10, 2013 at 02:34:06PM +0100, Lars-Peter Clausen wrote:
> Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.
>
> Cc: Minkyu Kang <[email protected]>
> Signed-off-by: Lars-Peter Clausen <[email protected]>
> ---

Patches 1-3 applied, thanks a lot!

[...]
> @@ -278,14 +281,14 @@ static const struct i2c_device_id max17040_id[] = {
> };
> MODULE_DEVICE_TABLE(i2c, max17040_id);
>
> +

(Stray new line...)

> static struct i2c_driver max17040_i2c_driver = {
> .driver = {
> .name = "max17040",
> + .pm = MAX17040_PM_OPS,
> },
> .probe = max17040_probe,
> .remove = max17040_remove,
> - .suspend = max17040_suspend,
> - .resume = max17040_resume,
> .id_table = max17040_id,
> };
> module_i2c_driver(max17040_i2c_driver);
> --
> 1.8.0

2013-04-01 06:04:52

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH 1/5] power: ds2782_battery: Use dev_pm_ops

On Sun, Mar 10, 2013 at 02:34:05PM +0100, Lars-Peter Clausen wrote:
> Use dev_pm_ops instead of the deprecated legacy suspend/resume callbacks.
>
> Cc: Evgeny Romanov <[email protected]>
> Signed-off-by: Lars-Peter Clausen <[email protected]>
> ---
[...]
> @@ -465,11 +466,10 @@ MODULE_DEVICE_TABLE(i2c, ds278x_id);
> static struct i2c_driver ds278x_battery_driver = {
> .driver = {
> .name = "ds2782-battery",
> + .pm = DS278X_BATERY_PM_OPS,

Typo: BATTERY.

CHECK drivers/power/ds2782_battery.c
drivers/power/ds2782_battery.c:464:27: error: undefined identifier 'DS278X_BATERY_PM_OPS'
CC drivers/power/ds2782_battery.o
drivers/power/ds2782_battery.c:464:9: error: ‘DS278X_BATERY_PM_OPS’ undeclared here (not in a function)
make[1]: *** [drivers/power/ds2782_battery.o] Error 1

I fixed it up and applied the patch...

Thanks,

Anton

> },
> .probe = ds278x_battery_probe,
> .remove = ds278x_battery_remove,
> - .suspend = ds278x_suspend,
> - .resume = ds278x_resume,
> .id_table = ds278x_id,
> };
> module_i2c_driver(ds278x_battery_driver);