diff options
Diffstat (limited to 'drivers/pcmcia/ds.c')
-rw-r--r-- | drivers/pcmcia/ds.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index defa44c27b97..87e06395c129 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c | |||
@@ -1252,8 +1252,22 @@ static int ds_event(struct pcmcia_socket *skt, event_t event, int priority) | |||
1252 | case CS_EVENT_EJECTION_REQUEST: | 1252 | case CS_EVENT_EJECTION_REQUEST: |
1253 | break; | 1253 | break; |
1254 | 1254 | ||
1255 | case CS_EVENT_PM_SUSPEND: | ||
1256 | case CS_EVENT_PM_RESUME: | 1255 | case CS_EVENT_PM_RESUME: |
1256 | if (verify_cis_cache(skt) != 0) { | ||
1257 | dev_dbg(&skt->dev, "cis mismatch - different card\n"); | ||
1258 | /* first, remove the card */ | ||
1259 | ds_event(skt, CS_EVENT_CARD_REMOVAL, CS_EVENT_PRI_HIGH); | ||
1260 | destroy_cis_cache(skt); | ||
1261 | kfree(skt->fake_cis); | ||
1262 | skt->fake_cis = NULL; | ||
1263 | /* now, add the new card */ | ||
1264 | ds_event(skt, CS_EVENT_CARD_INSERTION, | ||
1265 | CS_EVENT_PRI_LOW); | ||
1266 | } | ||
1267 | handle_event(skt, event); | ||
1268 | break; | ||
1269 | |||
1270 | case CS_EVENT_PM_SUSPEND: | ||
1257 | case CS_EVENT_RESET_PHYSICAL: | 1271 | case CS_EVENT_RESET_PHYSICAL: |
1258 | case CS_EVENT_CARD_RESET: | 1272 | case CS_EVENT_CARD_RESET: |
1259 | default: | 1273 | default: |