Thanks for the effort, guys. This makes me think, shouldn't the driver layer be generic now. All the driver does is writing correct data at correct address when needed, there is no need for OS support except triggering driver when to do that.

A true HAL, any OS can run on that HAL.

That data and that address changes, and the logic changes.

Why should the address and logic change, when both are defined by hardware ?

The firmware sometimes wants more data, different places to set the data, so on. The firmware changes, and you gotta adapt the driver to it. Sometimes it's a complete overhaul.

I am still not sure why does OS has to be aware of this, if anything, only the HAL should be aware of this FW version to have correct behavior.

Every major OS already has this HAL layer, we just need to decide/design a generic and hope that every player will use it.