lkml.org 
[lkml]   [2005]   [May]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[patch 2.6.12-rc5] pcmcia/cs.c and SS_CAP_STATIC_MAP
    Date
    I traced a puzzling bug down to the combination of SS_CAP_STATIC_MAP,
    finicky hardware, and a bug fixed by the following patch. The fix
    is a one-liner that won't affect any socket driver that's yet merged;
    basically, it stops discarding I/O attributes for static mappings.

    - Dave

    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@users.sourceforge.net>

    --- at91x.orig/drivers/pcmcia/cs.c 2005-05-28 14:20:39.000000000 -0700
    +++ at91x/drivers/pcmcia/cs.c 2005-05-28 15:21:06.000000000 -0700
    @@ -767,6 +767,7 @@
    }
    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
    \
     
     \ /
      Last update: 2005-05-29 01:13    [W:0.020 / U:1.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site