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.
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.
A true HAL, any OS can run on that HAL.