Well, I just love it.
Right now I'm working in a driver for a couple of circuits with a DAC, ADC and a encoder to connect my old Gumstix Connex to a PLC Unitronics, and two Variable speed driver Altivar ATV31.
The driver basically read through SPI the data that the ADC get from a current loop. And through SPI the resulting data is send to the drivers. The encoder work with three GPIO interrupt.
I'll try to write later on this. For now, a couple of pages that are really helpful:
http://www.makelinux.net/ldd3/ (The chapters with locking techniques, procfs, and deferred work are great!!!)