From: Dominik Brodowski 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 Signed-off-by: Dominik Brodowski Signed-off-by: Andrew Morton --- drivers/pcmcia/pcmcia_resource.c | 1 + 1 files changed, 1 insertion(+) diff -puN drivers/pcmcia/pcmcia_resource.c~pcmcia-8-and-16-bit-access-for-static_map drivers/pcmcia/pcmcia_resource.c --- 25/drivers/pcmcia/pcmcia_resource.c~pcmcia-8-and-16-bit-access-for-static_map 2005-06-23 22:18:03.000000000 -0700 +++ 25-akpm/drivers/pcmcia/pcmcia_resource.c 2005-06-23 22:18:03.000000000 -0700 @@ -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 _