Patch from Russell King <rmk@arm.linux.org.uk>

  Cardbus uses socket->cb_config to detect when the cardbus card has
  been initialised.  Since cb_config will eventually die, we need a
  solution - introduce the SOCKET_CARDBUS_CONFIG flag, which is set
  once we have initialised the cardbus socket.




 25-akpm/drivers/pcmcia/cs.c          |    6 ++++--
 25-akpm/drivers/pcmcia/cs_internal.h |    1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

diff -puN drivers/pcmcia/cs.c~pcmcia-3-add-SOCKET_CARDBUS_CONFIG drivers/pcmcia/cs.c
--- 25/drivers/pcmcia/cs.c~pcmcia-3-add-SOCKET_CARDBUS_CONFIG	Wed Mar 12 13:34:45 2003
+++ 25-akpm/drivers/pcmcia/cs.c	Wed Mar 12 13:34:45 2003
@@ -621,8 +621,10 @@ static void unreset_socket(socket_info_t
 		send_event(s, CS_EVENT_PM_RESUME, CS_EVENT_PRI_LOW);
 	} else if (s->state & SOCKET_SETUP_PENDING) {
 #ifdef CONFIG_CARDBUS
-	    if (s->state & SOCKET_CARDBUS)
+	    if (s->state & SOCKET_CARDBUS) {
 		cb_alloc(s);
+		s->state |= SOCKET_CARDBUS_CONFIG;
+	    }
 #endif
 	    send_event(s, CS_EVENT_CARD_INSERTION, CS_EVENT_PRI_LOW);
 	    s->state &= ~SOCKET_SETUP_PENDING;
@@ -1072,7 +1074,7 @@ int pcmcia_get_configuration_info(client
 	config->Vcc = s->socket.Vcc;
 	config->Vpp1 = config->Vpp2 = s->socket.Vpp;
 	config->Option = s->cap.cb_dev->subordinate->number;
-	if (s->cb_config) {
+	if (s->state & SOCKET_CARDBUS_CONFIG) {
 	    config->Attributes = CONF_VALID_CLIENT;
 	    config->IntType = INT_CARDBUS;
 	    config->AssignedIRQ = s->irq.AssignedIRQ;
diff -puN drivers/pcmcia/cs_internal.h~pcmcia-3-add-SOCKET_CARDBUS_CONFIG drivers/pcmcia/cs_internal.h
--- 25/drivers/pcmcia/cs_internal.h~pcmcia-3-add-SOCKET_CARDBUS_CONFIG	Wed Mar 12 13:34:45 2003
+++ 25-akpm/drivers/pcmcia/cs_internal.h	Wed Mar 12 13:34:45 2003
@@ -176,6 +176,7 @@ typedef struct socket_info_t {
 #define SOCKET_IO_REQ(i)	(0x1000<<(i))
 #define SOCKET_REGION_INFO	0x4000
 #define SOCKET_CARDBUS		0x8000
+#define SOCKET_CARDBUS_CONFIG	0x10000
 
 #define CHECK_HANDLE(h) \
     (((h) == NULL) || ((h)->client_magic != CLIENT_MAGIC))

_