RTC settings will be lost if power supply is cut off after hibernation
finished, but the current "restore" function does not restore RTC related
settings, this causes rtc_read_time failure and kernel panic:
rtc rtc0: **** DPM device timeout ****
Stack trace:
unwind_backtrace+0x0/0xf4
show_stack+0x10/0x14
dpm_wd_handler+0x24/0x28
call_timer_fn.isra.33+0x24/0x88
run_timer_softirq+0x178/0x1f0
__do_softirq+0x120/0x200
do_softirq+0x54/0x5c
irq_exit+0x9c/0xd0
handle_IRQ+0x44/0x90
__irq_svc+0x40/0x70
_raw_spin_unlock_irqrestore+0x10/0x48
sirfsoc_rtc_iobrg_readl+0x34/0x3c
sirfsoc_rtc_read_time+0x24/0x48
__rtc_read_time.isra.3+0x48/0x5c
rtc_read_time+0x30/0x44
rtc_resume.part.9+0x20/0x104
rtc_resume+0x5c/0x64
dpm_run_callback.isra.4+0x2c/0x74
device_resume+0x9c/0x144
dpm_resume+0x100/0x224
hibernation_snapshot+0x170/0x398
hibernate+0x13c/0x1d8
state_store+0xb4/0xb8
kobj_attr_store+0x14/0x20
sysfs_write_file+0x160/0x190
vfs_write+0xb4/0x194
SyS_write+0x3c/0x78
this patch uses SIMPLE_DEV_PM_OPS() to make restore() execute the
existing resume() function which will restore the set of RTC.
Signed-off-by: Xianglong Du <Xianglong.Du@csr.com>
Signed-off-by: Barry Song <Baohua.Song@csr.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>