# Linux Device Driver References - Driver Model [TOC] ## References [*Anatomy of a Linux Device Driver*](https://www.doulos.com/webinars/anatomy-of-a-linux-device-driver/) by [Doulos training](https://www.youtube.com/@DoulosTraining/videos) is my preferred reference for people new to driver model. It is free but unfortunately the recording is no where to be found. Another good reference is the [*Linux Matchmaking: Helping devices and drivers find each other*](https://fosdem.org/2024/schedule/event/fosdem-2024-3222-linux-matchmaking-helping-devices-and-drivers-find-each-other/) in FOSDEM 2024. This talk introduced how to debug driver `probe()`. The recording is not available on YouTube, but is available on the agenda page. ### [5 ELC-2018 EALE I2C Drivers - Michael Opdenacker](https://youtu.be/78n3lAco6KE) {%youtube 78n3lAco6KE %} ### [Embedded Recipes 2019: Herd your socs become a matchmaker](https://youtu.be/SQJBz115rXg) One of the most important functionalities of the driver model is to match hardware with a driver. This talk introduces the history of driver matching The kernel recognizes hardware by certain characteristics. The characteristics depends on the way hadware connects. For protocols where devices can identify themselves, kernel asks them to identify what they are. This process is called "enumeration". For protocols where there's no such mechanism, the knowledge must come from else where. This is where the device tree and ACPI come into play. They are the address book for the hardware. The kernel look up this address book to figure out where to find what. {%youtube SQJBz115rXg %} ### [How Not to Write X86 Platform Drivers - Darren Hart, Intel Open Source Technology Center](https://youtu.be/IZuNCN7wkqs) {%youtube IZuNCN7wkqs %}