Some useful sources of information on this subject might include:
1. Looking at existing kernel drivers (/usr/src/linux/drivers/*). Also
check out the "Linux Source Navigator":
http://www.ice.k12.il.us/~ben/linux/navigator.html This will answer
general questions.
2. "The New Linux Kernel Hackers Guide":
http://www.redhat.com:8080/HyperNews/get/khg.html Here you may find
answers to specific questions. This is also the place to ask
specific questions.
3. Some general info on loadable modules:
http://www.pi.se/blox/modules/docs.html
4. "Writing Linux Device Drivers":
http://www.ssc.com/ssc/Employees/johnsonm/devices.html
Sebastian