aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia/ds.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pcmcia/ds.c')
-rw-r--r--drivers/pcmcia/ds.c16
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: