On Fri, Dec 7, 2012 at 10:16 PM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:Because I need to use IO functions which will behave
on arm as little endian and on powerpc as big endian
and on microblaze depends on endian setting.
I haven't found any IO function which I could use by 3 architectures
without using preprocessor macros or runtime detection
Its a rather weird mix. We can do "always big" and "always little"
1. Using helper function + preprocessor macros
(using static inline function also possible)
Then someone comes along and sticks a daughterboard into the system with
the same device the other way around and there are years
2. Using function pointers
Probably smarter. 8250.c works this way and it has to handle some
extremely bizarre mappings.
b) Runtime initialization - here is the question if there is
any standard function which I could use.
Set the pointers up and pass them as data with your platform device, that
way the function definitions are buried in your platform code where they
depend.
Or embed a struct io_ops * in struct device, to be set up by the bus driver?
Wasn't David Hinds working on something like this in the context of PCMCIA
a few decades ago?