
Dear Wolfgang,
Wolfgang Denk wrote:
nothing magical in offsets actually... we usually have offsets in specs not C structures...
Just to name one reason (but a very important one): using a struct allows for strict type checking by the compiler. If you use address + offset you will not get any help from the compiler when you for example read 8 bit from a register that must be accessed as a 32 bit entity.
But this works only if we use "memory-style" IO access, if we use read/write accessor functions that info we be lost as all pointers we be silently converted into void*... And using "memory-style" IO access is strongly discouraged in the kernel... BTW, what is the general rule for U-Boot? I can see that most accesses are done "memory-style" but I can see accessor functions used here and there...
Regards, Ilya.