Patchwork [V2,2/5] rtc: tegra: Use struct dev_pm_ops for power management

login
register
mail settings
Submitter Laxman Dewangan
Date March 11, 2013, 8:44 a.m.
Message ID <1362991468-30226-3-git-send-email-ldewangan@nvidia.com>
Download mbox | patch
Permalink /patch/226492/
State New
Headers show

Comments

Laxman Dewangan - March 11, 2013, 8:44 a.m.
Make the Tegra RTC controller driver define its PM callbacks through
a struct dev_pm_ops object rather than by using legacy PM hooks
in struct platform_driver.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
Changes from V1:
- Use SIMPLE_DEV_PM_OPS

 drivers/rtc/rtc-tegra.c |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)
Thierry Reding - March 11, 2013, 8:51 a.m.
On Mon, Mar 11, 2013 at 02:14:25PM +0530, Laxman Dewangan wrote:
[...]
> diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c
[...]
> @@ -431,6 +430,8 @@ static int tegra_rtc_resume(struct platform_device *pdev)
>  }
>  #endif
>  
> +SIMPLE_DEV_PM_OPS(tegra_rtc_pm_ops, tegra_rtc_suspend, tegra_rtc_resume);

I should've been more explicit. Since you had this marked as static in
the previous patch, this needs to be static SIMPLE_DEV_PM_OPS.

With that change,

Reviewed-by: Thierry Reding <thierry.reding@avionic-design.de>
Laxman Dewangan - March 11, 2013, 8:56 a.m.
On Monday 11 March 2013 02:21 PM, Thierry Reding wrote:
> * PGP Signed by an unknown key
>
> On Mon, Mar 11, 2013 at 02:14:25PM +0530, Laxman Dewangan wrote:
> [...]
>> diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c
> [...]
>> @@ -431,6 +430,8 @@ static int tegra_rtc_resume(struct platform_device *pdev)
>>   }
>>   #endif
>>   
>> +SIMPLE_DEV_PM_OPS(tegra_rtc_pm_ops, tegra_rtc_suspend, tegra_rtc_resume);
> I should've been more explicit. Since you had this marked as static in
> the previous patch, this needs to be static SIMPLE_DEV_PM_OPS.
Yaah, I should keep the static.

I think I will need to respin this patch only in place of whole series.

Andrew,

Let me know if this is fine.

Thanks,
Laxman
Stephen Warren - March 11, 2013, 5:18 p.m.
On 03/11/2013 02:56 AM, Laxman Dewangan wrote:
> On Monday 11 March 2013 02:21 PM, Thierry Reding wrote:
>> * PGP Signed by an unknown key
>>
>> On Mon, Mar 11, 2013 at 02:14:25PM +0530, Laxman Dewangan wrote:
>> [...]
>>> diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c
>> [...]
>>> @@ -431,6 +430,8 @@ static int tegra_rtc_resume(struct
>>> platform_device *pdev)
>>>   }
>>>   #endif
>>>   +SIMPLE_DEV_PM_OPS(tegra_rtc_pm_ops, tegra_rtc_suspend,
>>> tegra_rtc_resume);
>> I should've been more explicit. Since you had this marked as static in
>> the previous patch, this needs to be static SIMPLE_DEV_PM_OPS.
> Yaah, I should keep the static.
> 
> I think I will need to respin this patch only in place of whole series.
> 
> Andrew,
> 
> Let me know if this is fine.

In general, it's much easier if you repost a whole series. Otherwise,
you make the maintainer manually piece together the series from bits of
V2 and bits of V3, which is harder than just grabbing all of V3.
Laxman Dewangan - March 11, 2013, 5:51 p.m.
On Monday 11 March 2013 10:48 PM, Stephen Warren wrote:
> On 03/11/2013 02:56 AM, Laxman Dewangan wrote:
>> On Monday 11 March 2013 02:21 PM, Thierry Reding wrote:
>>> * PGP Signed by an unknown key
>>>
>>> On Mon, Mar 11, 2013 at 02:14:25PM +0530, Laxman Dewangan wrote:
>>> [...]
>>>> diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c
>>> [...]
>>>> @@ -431,6 +430,8 @@ static int tegra_rtc_resume(struct
>>>> platform_device *pdev)
>>>>    }
>>>>    #endif
>>>>    +SIMPLE_DEV_PM_OPS(tegra_rtc_pm_ops, tegra_rtc_suspend,
>>>> tegra_rtc_resume);
>>> I should've been more explicit. Since you had this marked as static in
>>> the previous patch, this needs to be static SIMPLE_DEV_PM_OPS.
>> Yaah, I should keep the static.
>>
>> I think I will need to respin this patch only in place of whole series.
>>
>> Andrew,
>>
>> Let me know if this is fine.
> In general, it's much easier if you repost a whole series. Otherwise,
> you make the maintainer manually piece together the series from bits of
> V2 and bits of V3, which is harder than just grabbing all of V3.

yaah, this will be easy. I will respin 3rd version.

Thanks,
Laxman

Patch

diff --git a/drivers/rtc/rtc-tegra.c b/drivers/rtc/rtc-tegra.c
index d64cde6..6373eb7 100644
--- a/drivers/rtc/rtc-tegra.c
+++ b/drivers/rtc/rtc-tegra.c
@@ -26,6 +26,7 @@ 
 #include <linux/delay.h>
 #include <linux/rtc.h>
 #include <linux/platform_device.h>
+#include <linux/pm.h>
 
 /* set to 1 = busy every eight 32kHz clocks during copy of sec+msec to AHB */
 #define TEGRA_RTC_REG_BUSY			0x004
@@ -391,10 +392,9 @@  static int __exit tegra_rtc_remove(struct platform_device *pdev)
 }
 
 #ifdef CONFIG_PM_SLEEP
-static int tegra_rtc_suspend(struct platform_device *pdev, pm_message_t state)
+static int tegra_rtc_suspend(struct device *dev)
 {
-	struct device *dev = &pdev->dev;
-	struct tegra_rtc_info *info = platform_get_drvdata(pdev);
+	struct tegra_rtc_info *info = dev_get_drvdata(dev);
 
 	tegra_rtc_wait_while_busy(dev);
 
@@ -416,10 +416,9 @@  static int tegra_rtc_suspend(struct platform_device *pdev, pm_message_t state)
 	return 0;
 }
 
-static int tegra_rtc_resume(struct platform_device *pdev)
+static int tegra_rtc_resume(struct device *dev)
 {
-	struct device *dev = &pdev->dev;
-	struct tegra_rtc_info *info = platform_get_drvdata(pdev);
+	struct tegra_rtc_info *info = dev_get_drvdata(dev);
 
 	dev_vdbg(dev, "Resume (device_may_wakeup=%d)\n",
 		device_may_wakeup(dev));
@@ -431,6 +430,8 @@  static int tegra_rtc_resume(struct platform_device *pdev)
 }
 #endif
 
+SIMPLE_DEV_PM_OPS(tegra_rtc_pm_ops, tegra_rtc_suspend, tegra_rtc_resume);
+
 static void tegra_rtc_shutdown(struct platform_device *pdev)
 {
 	dev_vdbg(&pdev->dev, "disabling interrupts.\n");
@@ -445,11 +446,8 @@  static struct platform_driver tegra_rtc_driver = {
 		.name	= "tegra_rtc",
 		.owner	= THIS_MODULE,
 		.of_match_table = tegra_rtc_dt_match,
+		.pm	= &tegra_rtc_pm_ops,
 	},
-#ifdef CONFIG_PM_SLEEP
-	.suspend	= tegra_rtc_suspend,
-	.resume		= tegra_rtc_resume,
-#endif
 };
 
 static int __init tegra_rtc_init(void)