The Linux Kernel Hackers' Guide (the KHG) contains descriptions of many of the functions that you need to use to write a device driver. Version 0.6 (and later, if I have been very active between the time I write this and by the time you read it) should be more up-to-date than the older version 0.5.
Barring disaster, the most recent version can always be found at tsx-11.mit.edu in the /pub/linux/docs/LDP/ directory.