[#5458] Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby
Submitted By: Michael Hennerich
2009-08-25 04:40:26 Close Date
Closed Fixed In Release:
Found In Release:
ALL Silicon Revision:
Is this bug repeatable?:
Uboot version or rev.:
Toolchain version or rev.:
App binary format:
Summary: Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby
Issue reported here:
root:/> echo enabled > /sys/class/tty/ttyBF0/power/wakeup
root:/> echo standby > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.00 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
--- Sonic Zhang 2009-08-26 04:09:23
In PIO mode, keep inputing ramdom chars by 2 hands in the console as faster as
possible. It will wake up sometime later.
But, in DMA mode, no such luck.
What kind of serial port configure may affect the hardware wakeup process
before resuming from the suspend point?
--- Michael Hennerich 2009-08-26 04:31:35
A wake from suspend standby is triggered by an UART Interrupt.
Before going into standby we enable the corresponding bit in the SIC_IWR
There are two different cases you need to take into considerations:
1) Standby Power Saving Mode (Sleep)
This mode works immediately in UART PIO mode, and in DMA mode when the DMA
This is typically the case when DMA count expires. So you have to enter more
than one char.
2) Standby Power Saving Mode (Sleep Deeper)
In this mode we set SCLK to a minimum of approx 3.3MHz - this means that the
UART won't receive chars at the default BAUD rate. So when using wakeups from
peripherals that require precise SLCK timings Standby Power Saving Mode (Sleep)
is the option of choice.
Might be interesting to evaluate if UART ERROR interrupt triggers instead...
Wake from suspend mem (hibernate) doesn't work with UART at all, since in
hibernate there is NO SCLK and CCLK.
--- Sonic Zhang 2009-08-26 04:51:56
No, UART ERROR interrupt won't wake up.
I think the root cause is the slow 3.3M sclk in sleep deeper mode.
--- Michael Hennerich 2009-08-26 04:59:11
I agree - and the workarounds is to use "Standby Power Saving Mode
(Sleep)" when wakeups from Serial are desired.
--- Sonic Zhang 2009-08-27 00:30:46
Because the sclk in sleep_deep mode is only 3.3MHz. UART clocks can't be
generated accurately by UART divisor. So, don't try to wake up from serial in
This bug is rejected.
--- Michael Hennerich 2009-09-03 03:55:20
File Name File Type File Size Posted By
No Files Were Found