[PCMCIA] Don't cache CIS bytes found to be invalid.
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.
Showing
Please register or sign in to comment