Linux device drivers books:
- Linux Device Drivers Development, John Madieu, Packt, Oct 2017: https://www.amazon.in/Linux-Device-Drivers-Development-Madieu/dp/1785280007/ref=sr_1_2?keywords=linux+device+driver&qid=1555486515&s=books&sr=1-2 ; excellent coverage, as well as very recent (as of this writing; it covers the 4.13 kernel)
- Linux Driver Development for Embedded Processors - Second Edition: Learn to develop embedded Linux drivers with kernel 4.9 LTS, Alberto Liberal de los Rios: https://www.amazon.in/Linux-Driver-Development-Embedded-Processors-ebook/dp/B07L512BHG/ref=sr_1_6?crid=3RLFFZQXGAMF4&keywords=linux+driver+development+embedded&qid=1555486342&s=books&sprefix=linux+driver+%2Cstripbooks%2C270&sr=1-6-catcorr ; very good, as well as recent (4.9 kernel)
- Essential Linux Device Drivers, Sreekrishnan Venkateswaran, Pearson: https://www.amazon.in/Essential-Drivers-Prentice-Software-Development/dp/0132396556/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=&sr= ; simply excellent, wide coverage
Linux Device Drivers, Rubini, Hartmann, Corbet, 3rd Edition: https://www.amazon.in/Linux-Device-Drivers-Kernel-Hardware/dp/8173668493/ref=sr_1_1?keywords=linux+device+driver&qid=1555486515&s=books&sr=1-1 ; venerable (but) old – the famous LDD3 book
- Official kernel documentation:
- The Linux Kernel Device Model: https://www.kernel.org/doc/html/latest/driver-api/driver-model/overview.html#the-linux-kernel-device-model.
The kernel driver API manual; this is one of the PDF documents generated by doing make pdfdocs within a recent Linux kernel source tree.
Deprecated Interfaces, Language Features, Attributes, and Conventions: https://www.kernel.org/doc/html/latest/process/deprecated.html#deprecated-interfaces-language-features-attributes-and-conventions.
- Practical tutorials:
- Device Drivers, Part 8: Accessing x86-Specific I/O-Mapped Hardware, Anil K Pugalia, OpenSourceForU, July 2011: https://opensourceforu.com/2011/07/accessing-x86-specific-io-mapped-hardware-in-linux/
- User space device drivers; check out this interesting video presentation by Chris Simmonds: How to Avoid Writing Device Drivers for Embedded Linux: https://www.youtube.com/watch?v=QIO2pJqMxjE&t=909s