The Linux kernel doesn't have a stable ABI. Thus, if a kernel function signature changes, or a subsystem gets refactored, etc, drivers get updated as part of the process. If the drivers lived outside the kernel tree, they would have to be updated separately by their own maintainers. That's less efficient and prone to breakage, so generally driver modules are merged into the kernel tree. Often they can even share code with other hardware devices!
adrian_b|2 years ago
When only the ABI changes, a recompilation of all sources is enough.
When the API changes, then programmers must manually edit the sources and change function invocations and data structures, to match the new API.