[PATCH -mm2] CardServices compatibility layer
rmk+pcmcia at arm.linux.org.uk
Mon Dec 29 21:10:19 GMT 2003
On Mon, Dec 29, 2003 at 12:10:47PM -0800, Andrew Morton wrote:
> Dominik Brodowski <linux at dominikbrodowski.de> wrote:
> > From -mm2 changelog:
> > > Complete the removal of the usage of the CardServices API from drivers.
> > > It's a bit late for this, but apparantly the varargs usage in the API
> > > cannot work correctly on x86_64 (at least).
> > ... as it's so late, let's add a compatibility layer which allows for
> > CardServices usage as long as !x86_64.
> That seems like a good idea, but I'll need help from rmk, dhinds, etc on
> understanding whether it is a desirable thing.
There are two solutions to this problem:
- keep the old CardServices() as is with all its broken quirks
- use the preprocessor to convert the old API to something better.
#define CardServices(x,args...) __pcmcia_##x(args)
#define __pcmcia_RegisterClient pcmcia_register_client
and so forth. I think the latter is preferable than the former from a
correctness point of view if we have to keep the old calling convention,
even though it means a fairly disgusting set of #defines.
> Note the "(at least)". I think other architectures have a similar problem
> - I'm not sure what the complete list is.
I seem to remember its also included ppc64, but, while there are ppc64
systems with PCI slots (and therefore have the ability to plug in a
cardbus adapter) BenH said that so far no one's tried. As I mentioned
above, x86 with -mregparam also gets the old API wrong as well.
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core
More information about the linux-pcmcia