[#5458] Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby

Document created by Aaronwu Employee on Sep 4, 2013
Version 1Show Document
  • View in full screen mode

[#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:

 

http://blackfin.uclinux.org/gf/project/uclinux-dist/forum/?action=ForumBrowse&_forum_action=MessageReply&message_id=79169

 

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

Attachments

    Outcomes