mmc: sdhci: fix abort due to missing runtime PM
When using i.MX ESDHC driver, while entering suspend while the device
is in runtime PM, the sdhci_(suspend|resume)_host function are called
with disabled clocks. Since this functions access the SDHC host
registers, this leads to an external abort on Vybrid SoC:
[ 37.772967] Unhandled fault: imprecise external abort (0x1c06) at 0x76f5f000
[ 37.780304] Internal error: : 1c06 [#1] ARM
[ 37.784670] Modules linked in:
[ 37.787908] CPU: 0 PID: 428 Comm: sh Not tainted
3.18.0-rc5-00119-geefd097-dirty #1540
[ 37.796142] task:
8e246c00 ti:
8ca6c000 task.ti:
8ca6c000
[ 37.801785] PC is at esdhc_writel_le+0x40/0xec
[ 37.806431] LR is at sdhci_set_card_detection+0xe0/0xe4
[ 37.811877] pc : [<
803f0584>] lr : [<
803eaaa0>] psr:
400f0013
[ 37.811877] sp :
8ca6dd28 ip :
00000001 fp :
8ca6dd3c
[ 37.823766] r10:
807a233c r9 :
00000000 r8 :
8e8b7210
[ 37.829194] r7 :
802d8a08 r6 :
8082e928 r5 :
00000000 r4 :
00000002
[ 37.835974] r3 :
8ea34e90 r2 :
00000038 r1 :
00000000 r0 :
8ea32ac0
...
Clocks need to be enabled to access the registers. Fix the issue by
add runtime PM enabled pltfm implementation of suspend/resume which
take care of clocks by using the runtime PM API properly.