[#5458] Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby
Submitted By: Michael Hennerich
Open Date
2009-08-25 04:40:26 Close Date
2009-09-02 22:54:13
Priority:
Medium Assignee:
Sonic Zhang
Status:
Closed Fixed In Release:
N/A
Found In Release:
2009R1-RC6 Release:
Category:
Drivers Board:
N/A
Processor:
ALL Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Rejected
Uboot version or rev.:
Toolchain version or rev.:
2009R1
App binary format:
N/A
Summary: Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby
Details:
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)
Follow-ups
--- 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
Sonic,
A wake from suspend standby is triggered by an UART Interrupt.
Before going into standby we enable the corresponding bit in the SIC_IWR
registers.
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
interrupt triggers.
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.
-Michael
--- 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.
-Michael
--- 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
sleep_deep mode.
This bug is rejected.
--- Michael Hennerich 2009-09-03 03:55:20
close it
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
No Files Were Found