[PATCH 2/5] pcmcia: 8 and 16 bit access for static_map

Dominik Brodowski linux at dominikbrodowski.net
Sat Jun 18 09:06:20 EDT 2005


The PCMCIA card services layer is never setting the i/o map attributes
when SS_CAP_STATIC_MAP is specified.  Net result, sockets' set_io_map()
calls always see requests with most flags clear, meaning 8 bit access.

For hardware that always autosizes, that won't matter; and all current
STATIC_MAP drivers ignore those attributes.  A new driver (for at91rm9200)
suffers badly from this, since this forces everything into 8 bit mode and
that breaks both (a) cards requiring 16 bit access, and (b) ide-cs; but
of course 8-bit cards work OK (as does accessing card attributes).

So this patch arranges to pass the attributes down, matching the behavior
for non-static mappings (using the first/only I/O window).

Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.de>

Index: 2.6.12-rc4+/drivers/pcmcia/pcmcia_resource.c
===================================================================
--- 2.6.12-rc4+.orig/drivers/pcmcia/pcmcia_resource.c
+++ 2.6.12-rc4+/drivers/pcmcia/pcmcia_resource.c
@@ -89,6 +89,7 @@ static int alloc_io_space(struct pcmcia_
 	}
 	if ((s->features & SS_CAP_STATIC_MAP) && s->io_offset) {
 		*base = s->io_offset | (*base & 0x0fff);
+		s->io[0].Attributes = attr;
 		return 0;
 	}
 	/* Check for an already-allocated window that must conflict with



More information about the linux-pcmcia mailing list