The book is at http://www.xml.com/ldd/chapter/book/index.html.

UnixWorld Online has a tutorial about kernel driver programming
with lots of code examples:
http://www.networkcomputing.com/unixworld/tutorial/010/010.txt.html
 
This is a site with links to tutorials on how to write several different kinds
of device drivers; SCSI, Ethernet, Block, Character, etc. From what I have
seen, the different sections do go into specifics.
http://www.linuxdoc.org/LDP/khg/HyperNews/get/devices/devices.html
 
For those in the class who haven't done much, or any, assembly-level
programming, I found a site that details some of the basics of how it is
done on x86 Linux systems. We will most likely need this information
to get some of our drivers to work properly.
http://www-106.ibm.com/developerworks/linux/library/l-ia.html
(I know that I'll be digging into this one, as the only other compiler that
I've done inline Asm in is Borland's C compiler, and for DOS at that.)
 
Searching google, I found the following web address:
 
http://lxr.linux.no/ident?i=sleep_on
 
Apperantly this site contains a whole bunch of linux source code in HTML format which is searchable and has about a billion clickable links for every function. I thought this
might be worthy of pointing out to the class.

VGA Graphics card programming http://www.brackeen.com/home/vga/basics.html

A PC Memory Map can be found at http://www.pcguide.com/ref/ram/umaMap-c.html