Originally Posted by demon007
don't want to design the driver for a specific device. I want to just design a driver to learn how a driver(for eg keyboard) is working and how it is created. So from where should I start for it??
"Use the Source, Luke." The best way to learn how to write a driver is to follow the path that others use to write their
drivers: they study what has already been successfully done for their particular distro, find the closest match from existing work, and tweak it. That's the important power of open-source: you don't have to start from the beginning on anything, so no one does.
Do bear in mind that the Linux kernel has evolved considerably over time, so, although books are fine, the documentation directory that comes with the kernel tree, and the kernel itself, should be your primary reference. Once you've got the essential concepts and ideas straight in your head.