>
> I prefer having size as an argument.
The one thing that makes having these function pointers split apart nice
is that it makes it easy to set policy for what different sized reads do.
E.g. for devices for which only 4 byte reads are defined, you only fill
in readl, and let the other sizes cause a machine-check.
Alternately, for devices for which the fundamental size is 1 byte, but
which does handle larger reads in a more-or-less memory-like fashion,
you can fill in a common readw_via_readb function that does the
composition for you, and without having to have code for that scattered
through every device.