fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / pcmcia / ss.h
index 2889a69..623a0fc 100644 (file)
@@ -15,9 +15,9 @@
 #ifndef _LINUX_SS_H
 #define _LINUX_SS_H
 
-#include <linux/config.h>
 #include <linux/device.h>
 #include <linux/sched.h>       /* task_struct, completion */
+#include <linux/mutex.h>
 
 #include <pcmcia/cs_types.h>
 #include <pcmcia/cs.h>
@@ -146,14 +146,15 @@ extern struct pccard_resource_ops pccard_static_ops;
 /* !SS_CAP_STATIC_MAP */
 extern struct pccard_resource_ops pccard_nonstatic_ops;
 
+/* static mem, dynamic IO sockets */
+extern struct pccard_resource_ops pccard_iodyn_ops;
+
 /*
  *  Calls to set up low-level "Socket Services" drivers
  */
 struct pcmcia_socket;
 
 typedef struct io_window_t {
-       u_int                   Attributes;
-       kio_addr_t              BasePort, NumPorts;
        kio_addr_t              InUse, Config;
        struct resource         *res;
 } io_window_t;
@@ -162,7 +163,7 @@ typedef struct io_window_t {
 typedef struct window_t {
        u_short                 magic;
        u_short                 index;
-       client_handle_t         handle;
+       struct pcmcia_device    *handle;
        struct pcmcia_socket    *sock;
        pccard_mem_map          ctl;
 } window_t;
@@ -186,7 +187,6 @@ struct pcmcia_socket {
        u_short                         lock_count;
        pccard_mem_map                  cis_mem;
        void __iomem                    *cis_virt;
-       struct config_t                 *config;
        struct {
                u_int                   AssignedIRQ;
                u_int                   Config;
@@ -241,7 +241,7 @@ struct pcmcia_socket {
 #endif
 
        /* state thread */
-       struct semaphore                skt_sem;        /* protects socket h/w state */
+       struct mutex                    skt_mutex;      /* protects socket h/w state */
 
        struct task_struct              *thread;
        struct completion               thread_done;
@@ -262,9 +262,10 @@ struct pcmcia_socket {
                u8                      present:1,      /* PCMCIA card is present in socket */
                                        busy:1,         /* "master" ioctl is used */
                                        dead:1,         /* pcmcia module is being unloaded */
-                                       device_add_pending:1, /* a pseudo-multifunction-device
+                                       device_add_pending:1, /* a multifunction-device
                                                               * add event is pending */
-                                       reserved:4;
+                                       mfc_pfc:1,      /* the pending event adds a mfc (1) or pfc (0) */
+                                       reserved:3;
        }                               pcmcia_state;
 
        struct work_struct              device_add;     /* for adding further pseudo-multifunction