I'm confused about the development strategy. Ideally, the Hal drivers should be layered on top of the LL drivers. However, when I look at the code for say gpio or spi, the Hal drivers duplicate the LL functionality -- but they use inconsistent names and data structures. For example, each device has an init structure and function. These are different for the Hal and LL is stupid ways -- like changes in structure order and field names that make no sense. One gets the impression that these are written by two different teams who don't communicate with each other.