mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
rtc: at91rm9200 fixes
Fix two new-ish runtime warnings in the at91rm9200 (etc) RTC: Platform driver 'at91_rtc' needs updating - please use dev_pm_ops ... by just switching IRQ 1/at91_rtc: IRQF_DISABLED is not guaranteed on shared IRQs ... no longer needed now that rtc_update_irq() changed Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Acked-by: Alessandro Zummo <a.zummo@towertech.it> Cc: Andrew Victor <linux@maxim.org.za> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
971370cc18
commit
dac94d9ec9
1 changed files with 15 additions and 9 deletions
|
@ -289,7 +289,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
|
||||||
AT91_RTC_CALEV);
|
AT91_RTC_CALEV);
|
||||||
|
|
||||||
ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
|
ret = request_irq(AT91_ID_SYS, at91_rtc_interrupt,
|
||||||
IRQF_DISABLED | IRQF_SHARED,
|
IRQF_SHARED,
|
||||||
"at91_rtc", pdev);
|
"at91_rtc", pdev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printk(KERN_ERR "at91_rtc: IRQ %d already in use.\n",
|
printk(KERN_ERR "at91_rtc: IRQ %d already in use.\n",
|
||||||
|
@ -340,7 +340,7 @@ static int __exit at91_rtc_remove(struct platform_device *pdev)
|
||||||
|
|
||||||
static u32 at91_rtc_imr;
|
static u32 at91_rtc_imr;
|
||||||
|
|
||||||
static int at91_rtc_suspend(struct platform_device *pdev, pm_message_t state)
|
static int at91_rtc_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
/* this IRQ is shared with DBGU and other hardware which isn't
|
/* this IRQ is shared with DBGU and other hardware which isn't
|
||||||
* necessarily doing PM like we are...
|
* necessarily doing PM like we are...
|
||||||
|
@ -348,7 +348,7 @@ static int at91_rtc_suspend(struct platform_device *pdev, pm_message_t state)
|
||||||
at91_rtc_imr = at91_sys_read(AT91_RTC_IMR)
|
at91_rtc_imr = at91_sys_read(AT91_RTC_IMR)
|
||||||
& (AT91_RTC_ALARM|AT91_RTC_SECEV);
|
& (AT91_RTC_ALARM|AT91_RTC_SECEV);
|
||||||
if (at91_rtc_imr) {
|
if (at91_rtc_imr) {
|
||||||
if (device_may_wakeup(&pdev->dev))
|
if (device_may_wakeup(dev))
|
||||||
enable_irq_wake(AT91_ID_SYS);
|
enable_irq_wake(AT91_ID_SYS);
|
||||||
else
|
else
|
||||||
at91_sys_write(AT91_RTC_IDR, at91_rtc_imr);
|
at91_sys_write(AT91_RTC_IDR, at91_rtc_imr);
|
||||||
|
@ -356,28 +356,34 @@ static int at91_rtc_suspend(struct platform_device *pdev, pm_message_t state)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int at91_rtc_resume(struct platform_device *pdev)
|
static int at91_rtc_resume(struct device *dev)
|
||||||
{
|
{
|
||||||
if (at91_rtc_imr) {
|
if (at91_rtc_imr) {
|
||||||
if (device_may_wakeup(&pdev->dev))
|
if (device_may_wakeup(dev))
|
||||||
disable_irq_wake(AT91_ID_SYS);
|
disable_irq_wake(AT91_ID_SYS);
|
||||||
else
|
else
|
||||||
at91_sys_write(AT91_RTC_IER, at91_rtc_imr);
|
at91_sys_write(AT91_RTC_IER, at91_rtc_imr);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const struct dev_pm_ops at91_rtc_pm = {
|
||||||
|
.suspend = at91_rtc_suspend,
|
||||||
|
.resume = at91_rtc_resume,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define at91_rtc_pm_ptr &at91_rtc_pm
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define at91_rtc_suspend NULL
|
#define at91_rtc_pm_ptr NULL
|
||||||
#define at91_rtc_resume NULL
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct platform_driver at91_rtc_driver = {
|
static struct platform_driver at91_rtc_driver = {
|
||||||
.remove = __exit_p(at91_rtc_remove),
|
.remove = __exit_p(at91_rtc_remove),
|
||||||
.suspend = at91_rtc_suspend,
|
|
||||||
.resume = at91_rtc_resume,
|
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "at91_rtc",
|
.name = "at91_rtc",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
.pm = at91_rtc_pm_ptr,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue