laforge at openmoko.org
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 openmoko.org> http://openmoko.org/
Software for the world's first truly open Free Software mobile phone
More information about the openmoko-kernel