You make the very silly and dangerous assumption that developers are going to re-code their software because you decided to junk an API they were using. They aren't going to invest either the time or effort to do so.2.) mmm the issue here is not common api vanishing in thin air but more like an entire subsystem is gone or replaced and unlike you think those were marked as deprecated in most cases or was widely publicited and every maintainer of in tree drivers make the respective adjustements but it seems blob maker policy is to fix their code once the kernel is released, so you have a tangible lag between a small fix [stop using spinlocks for example] while in tree developers work with the fixes from rc1.
I call some API with some Inputs, and get some outputs back. Its a message to the Kernel to do something and return some result. Nothing more and nothing less.in kernels you regularly don't have backend[like to know where you get that idea] or frontend since a kernel is not an library, a kernel api is much more bare metal than you think, aka things like InitUSBport(my_type usbid, bool isReady) don't exist at this level, what you get is DMA access, registers, buses adrresing, memory operations, cache operations, bit manipulation, ASM support, etc aka the smallest possible blocks needed to interact with a piece of hardware, use wikiedia or kernelnewbies.org for a more in depth idea
I don't care HOW those outputs are achieved.
So feel free to change as much of the low level DMA code within the Kernel as you want. I DON'T CARE. All I want is for the OS API call to continue to exist. You can do whatever the hell you want with the implementation of said API.