Hi, Not exactly kernel issue, but since it is very low-level and affects all distributions, i hope this ML is appropriate enough.
Short summary: Calypso will not generate any interrupt until it sees CTS_MODEM fall for the first time after powering on. That leads to inability to trigger a first resume by calling or sending an SMS after turning on GSM and suspending. Userspace workaround: After the Calypso is powered on, do "echo 1 > /sys/bus/platform/devices/neo1973-pm-gsm.0/flowcontrolled; echo 0 > /sys/bus/platform/devices/neo1973-pm-gsm.0/flowcontrolled" Long story: For quite some time i wondered why sometimes my FR doesn't resume on incoming call while pressing power button works perfectly. Joerg was extremely helpful on IRC and spent considerable time discussing all kinds of wild guesses, ways to reproduce, possible races, irq handling techniques, testpoints access etc. Without his help i'd given up long time ago. Werner, mwester, lindi and Kensan also took part in discussions and gave plenty of good hints. Finally a reproducible testcase was constructed and with a help of Werner's gpio tool it became obvious how the interrupt line works and why it fails for the first time. Calypso is supposed to generate interrupt (via IO1 line, connected to EINT1/GPF1 at SoC side) in every case when it has some data to send to SoC but CTS_MODEM (NRTS0/GPH1) prohibits sending. It does that by pulling the line up and pulls the line down after CTS_MODEM is de-asserted (pulled down). The kernel is configured to react on edge rise, so the interrupt is generated and if device is suspended, resume is initiated. The problem can be seen right after powering on the modem because it doesn't pull the IRQ line low on init and therefore it is unable to generate rise. Joerg believes that it's a firmware bug and should be fixed in the next version. If CTS_MODEM fall is somehow generated once (with sysfs node or suspending and resuming by other means), calypso finally pulls the line low and after that works as expected. Sounds easy, doesn't it? ;) -- Be free, use free (http://www.gnu.org/philosophy/free-sw.html) software! mailto:[email protected]
