Customer report mx28 can't enter suspend correctly, when only with 5V power supply, no battery.
The root cause is in arch\arm\mach-mx28\pm.c, it call mx28_cpu_standby_ptr() cause system hang up.
This function is realized in arch\arm\mach-mx28\sleep.s, it will change VDDD VDDIO VDDA power register, but it cause system hang up when USB 5V power supply. I change these functions to nop, so it won't change these voltage. These features: DDR self-refresh and reduce CPU frequency are still in there.
Hello Friends,
We are using I.MX280 series of processor in our product based on 5V only mode. I have tried using the above 325-sleep.S but the evt fails to resume.
Below is the console output using 325-sleep.S:
imx28evk login: root
root@imx28evk:~# echo standby > /sys/power/state
[ 169.297895] PM: Syncing filesystems ... done.
[ 169.405838] Freezing user space processes ... (elapsed 0.02 seconds) done.
[ 169.434612] Freezing remaining freezable tasks ... (elapsed 0.02 seconds) done.
[ 169.484880] PM: suspend of devices complete after 14.998 msecs
[ 169.496738] PM: late suspend of devices complete after 5.942 msecs
[ 169.509180] PM: noirq suspend of devices complete after 6.034 msecs
[ 169.516050] 107 do_standby cpu 454736842
[ 169.516050] 108 do_standby osc 24000000
[ 169.516050] 109 do_standby pll 480000000
[ 169.516050] 110 do_standby hbus 151578947
///
/// EVT is hanged and is not resuming on any external event
///
Though, interesting point is the same code works for I.MX287 processor on EVK. Addition thing I found is the suspend/resume works if before putting DRAM into self refresh mode the processor is made to run on ref_xtal instead of ref_cpu. The reverse to be done on resuming cycle.
Please find the attached sleep.S with switching of ref. clock for CPU clock domain. (Line#168 - Switching to XTAL clock and Line#450 - Switching to REF_CPU clock on resume)
Console Output with Switching to XTAL clock on Suspend and Back to CPU clock on resume:
root@imx28evk:~# echo standby > /sys/power/state
[ 101.707717] PM: Syncing filesystems ... done.
[ 101.749925] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 101.775009] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[ 101.800996] wlcore: down
[ 101.826305] PM: suspend of devices complete after 26.089 msecs
[ 101.838184] PM: late suspend of devices complete after 5.801 msecs
[ 101.850484] PM: noirq suspend of devices complete after 5.904 msecs
[ 101.857131] 107 do_standby cpu 454736842
[ 101.857131] 108 do_standby osc 24000000
[ 101.857131] 109 do_standby pll 480000000
[ 101.857131] 110 do_standby hbus 151578947
[ 101.857131] 149 do_standby Resuming..
[ 101.860527] PM: noirq resume of devices complete after 3.064 msecs
[ 101.873245] PM: early resume of devices complete after 4.489 msecs
[ 103.274914] wlcore: PHY firmware version: Rev 8.2.0.0.195
[ 103.393093] wlcore: firmware booted (Rev 8.8.0.0.13)
[ 103.450657] PM: resume of devices complete after 1571.143 msecs
[ 103.463636] Restarting tasks ... done.
root@imx28evk:~#
The problem with the above solution is it sometime fails to resume the system.
Based on that I have below concerns:
1) Is there any difference in the clocks domain b/w I.MX280 and I.MX287 ?
2) Is there any additional configuration needs to be done to achieve suspend/resume on I.MX280 processor?
Please feel free to share your thoughts. This issue is show stopper now!
Regards,
Ankur.