can openmoko be in suspend and keep the backlight on?

Nils Faerber nils.faerber at kernelconcepts.de
Wed Nov 25 18:27:50 CET 2009


Lars-Peter Clausen schrieb:
> Timo Juhani Lindfors wrote:
>> Hi,
> 
>> just out of curiosity, is it possible to suspend the main cpu but
>> still keep the display backlight on? (I have no practical use for
>> this, it would be useful only if we could keep screen contents
>> visible too).
> 
> Yes it could be done, but whould be quite hackish. For screen content
> the glamo needs to be running too.

And glamo gets the contents from where? The DRAM? The DRAM cannot go
into self-refresh and thus the CPU suspend mode only saves very little
power.
Keeping the display kind of on is a feature of certain displays that
have their own display controller, where you can do partial updates, the
controller can disable parts of the display RAM or updates, etc. while
the CPU can be almost or fully sleeping. This is what IMHO Nokia does
with most of their S60 smartphones. Quite different hardware architecture.
What we can also backward guess from what we know how the N810, N800 and
770 work, the Nokia smartphones, except for the new N900, will do very
aggressive downscaling of CPU frequencies and features. As far as I know
the tablets do almost never go into what we know as "suspend to RAM".
They are always ticking but very very slowly. This has the dramatic
advantage that the CPU can be active all the time and can do e.g. screen
updates from time to time without having to go through a resume-suspend
cycle. Very clever. But this requires heavy CPU support which most
smartphone CPUs that run Linux lack, like S3C we are using in the
Freerunner or the OMAP3 that is now used in the Nokia N900.

This also makes a lot of other uses pretty hard, like "always on"
becomes a real issue. Every time a potentially interesting network
packet arrives the CPU has to be woken up and is forced through the
resume-suspend cycle, eating lots of power. The kernel currently lacks
infrastructure for a "almost awake" state that would saveus from having
to through all resume functions before finding out that the resume was
actually not as interesting as it looked.

For the HTC G1 (Android) I found that they use a different scheme - they
simply delay the suspend. After pressing the power button the display
goes off immediately so the user gets the notion of suspend but the
device stays awake for some additional time, especially if WiFi is used.
If there is nothing happening for a certain amount of time, I think
something like 5 minutes, it really suspends, switching off the WiFi and
handing internet connection over to GSM/3G. This again is able to
wake-up the CPU upon certain network events.

Back in the iPaq days the guys at CRL implemented something similar for
battery charging, I think it was for the iPaqs 3870 and later, since
there the CPU controlled the charging. When gone into suspend, what
should happen? Stop charging? So they suspended but set a timer to
expire every, say, ten seconds which would wake up the CPU. If the
wakeup reason was this special timer then only the charging logic got
triggered and the kernel went into suspend again directly afterwards.
The user would not notice this at all.

I am drifting off topic ;)

> - Lars
Cheers
  nils

-- 
kernel concepts GbR        Tel: +49-271-771091-12
Sieghuetter Hauptweg 48    Fax: +49-271-771091-19
D-57072 Siegen             Mob: +49-176-21024535
http://www.kernelconcepts.de



More information about the hardware mailing list