• Russell King's avatar
    [PCMCIA] Don't cache CIS bytes found to be invalid. · 4de24fcf
    Russell King authored
    Several PCMCIA cards I have here do not work correctly over a
    suspend/resume cycle; the PCMCIA code believes that the card has
    been changed in the slot, and therefore performs a remove/insert
    cycle.
    
    This seems to be because the card returns more or less random data
    when reading memory space, leading to the CIS cache mismatching
    the card data.  This in turn is caused because we try to read CIS
    data from both the attribute and memory spaces, and we add the result
    to the CIS cache whether or not the returned data was valid.
    
    We therefore convert the CIS cache to use a linked list, and provide
    a way to remove cached data from that list.  We also replace the
    "s->cis_used=0;" construct with a function "destroy_cis_cache(s)"
    which clearly describes what we're doing.
    4de24fcf
cs.c 70.1 KB