diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index f9cd831..26dd0aa 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c @@ -79,6 +79,10 @@ socket_state_t dead_socket = { .csc_mask = SS_DETECT, }; EXPORT_SYMBOL(dead_socket); +socket_state_t coma_socket = { + .flags = SS_COMA, + .csc_mask = SS_DETECT, +}; /* List of all sockets, protected by a rwsem */ @@ -417,7 +421,7 @@ #endif cs_socket_put(s); } -static int socket_setup(struct pcmcia_socket *skt, int initial_delay) +static int socket_setup(struct pcmcia_socket *skt, int flags, int initial_delay) { int status, i; @@ -468,7 +472,7 @@ static int socket_setup(struct pcmcia_so if (skt->power_hook) skt->power_hook(skt, HOOK_POWER_PRE); - skt->socket.flags = 0; + skt->socket.flags = flags; skt->ops->set_socket(skt, &skt->socket); /* @@ -503,7 +507,7 @@ static int socket_insert(struct pcmcia_s if (!cs_socket_get(skt)) return CS_NO_CARD; - ret = socket_setup(skt, setup_delay); + ret = socket_setup(skt, 0, setup_delay); if (ret == CS_SUCCESS) { skt->state |= SOCKET_PRESENT; @@ -533,7 +537,7 @@ static int socket_suspend(struct pcmcia_ return CS_IN_USE; send_event(skt, CS_EVENT_PM_SUSPEND, CS_EVENT_PRI_LOW); - skt->socket = dead_socket; + skt->socket = coma_socket; skt->ops->set_socket(skt, &skt->socket); if (skt->ops->suspend) skt->ops->suspend(skt); @@ -554,7 +558,7 @@ static int socket_resume(struct pcmcia_s if (!(skt->state & SOCKET_SUSPEND)) return CS_IN_USE; - skt->socket = dead_socket; + skt->socket = coma_socket; skt->ops->init(skt); skt->ops->set_socket(skt, &skt->socket); @@ -563,7 +567,7 @@ static int socket_resume(struct pcmcia_s return socket_insert(skt); } - ret = socket_setup(skt, resume_delay); + ret = socket_setup(skt, SS_COMA, resume_delay); if (ret == CS_SUCCESS) { /* * FIXME: need a better check here for cardbus cards. diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index ede6398..c8136e6 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h @@ -69,6 +69,7 @@ #define SS_RESET 0x0040 #define SS_DMA_MODE 0x0080 #define SS_SPKR_ENA 0x0100 #define SS_OUTPUT_ENA 0x0200 +#define SS_COMA 0x0400 /* Flags for I/O port and memory windows */ #define MAP_ACTIVE 0x01