Modem wakeup...

Harald Welte laforge at
Thu Jul 26 15:42:08 CEST 2007

Guys, I'll collect all the respective information and  put it in a
public wiki page.

Will let you know once that is done.

The general idea is that the gsm modem firmware checks if the handshake
lines currently permit sending another character to the phone.  If the
handshake permits it, the cpu must be alive and it proceeds sending

if the RTS/CTS handshake does not permit sending of any further
characters, the modem will assert a GPIO line (connected to an EINT
capable input of the S3C24xx).  The interrupt line will remain asserted
until the S3C24xx has changed the RTS/CTS handhsake to allow the modem
to send characters again.

So to do this, the following conditions need to be fulfilled:

1) a firmware post may-16-2007 needs to be present in the gsm modem
   This is true for all phones bought during phase 1 in the online
   shop.  However, I currently don't really know what firmware version
   was present in the GTA01Bv4 that we sent to phase 0.

2) the suspend code probably still needs to correctly configure the 
   RTS/CTS lines (i.e. put them in GPIO mode, and set them to their
   desired "don't send any more characters" level)

So in this case, any data from the GSM modem will wake up the cpu for
processing of that data.  The GSM modem has some internal buffer (I
don't know how big right now) that should be sufficient for buffering
the data until the CPU is alive.

This also means that gsmd will eventually have to re-program the GSM
modem to make sure only relevant unsolicited response codes are sent
during suspend.  You usually don't want a signal level change to cause
a CPU wake up, only things like incoming message / call.

As indicated, more details on the soon to be created public wiki page

- Harald Welte <laforge at>         
Software for the world's first truly open Free Software mobile phone

More information about the openmoko-kernel mailing list