GSM flow-control non-functional on GTA01 (and possibly GTA02)

Andy Green andy at
Mon Apr 28 12:44:26 CEST 2008

Hash: SHA1

Somebody in the thread at some point said:

| B) Can we use a FIQ for this?  I'm envisioning an FIQ handler that does
| nothing other than empty the FIFO into a small kernel ring-buffer, and
| then signals the standard UART driver to read data from that ring
| buffer.  (Is it possible to logically connect both the normal RX IRQ and
| the FIQ together, so that the FIQ runs, and the IRQ is also triggered?
| This would eliminate the need for notification.)

Current FIQ infrastructure too in GTA02 and the PWM timers specifically
are also all part of this suspend / resume management merry-go-round.

But the FIQ + IRQ method is actually a really powerful technique, I have
used it in another design.  It solves the issue that FIQ ISR is unable
to use most Linux kernel APIs, such as semaphore for example to "signal
the standard UART driver".  But if you have FIQ and standard IRQ
operating together, you can perform time-critical actions in the FIQ
which will have very low latencies at all times, and Linux interfacing
actions in the normal IRQ handler, which may have extreme latencies and
even miss interrupts.  Using the two together you can have extremely
hard realtime response without losing ability to interface to "Normal

In practical terms, FIQ on S3C24xx works that you can cherrypick ONE
normal interrupt source and elevate it to "FIQ power".  So it should be
possible if I understood it to create an "Uber serial driver" to solve
this.  See the FIQ-related mokopatches;a=commitdiff;h=f83b2007a1e3552a5f15faacf42f7383cd73129a;a=commitdiff;h=4ef3bf9d0e7ffd1e70f24e47b7ede98258c8b8f4

for a quick cribsheet to get FIQ ISR working.

- -Andy
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora -


More information about the openmoko-kernel mailing list