]> err.no Git - linux-2.6/blobdiff - include/pcmcia/ss.h
[PATCH] Consolidate the asm-ppc*/fcntl.h files into asm-powerpc
[linux-2.6] / include / pcmcia / ss.h
index 6d3413a567081a6f6a95b03dcee6b26796814a79..0f7aacc33fe95d68b24efefe69886e03679e9e34 100644 (file)
 #ifndef _LINUX_SS_H
 #define _LINUX_SS_H
 
+#include <linux/config.h>
+#include <linux/device.h>
+
 #include <pcmcia/cs_types.h>
 #include <pcmcia/cs.h>
 #include <pcmcia/bulkmem.h>
-#include <linux/device.h>
 
 /* Definitions for card status flags for GetStatus */
 #define SS_WRPROT      0x0001
@@ -77,6 +79,11 @@ extern socket_state_t dead_socket;
 /* Use this just for bridge windows */
 #define MAP_IOSPACE    0x20
 
+/* power hook operations */
+#define HOOK_POWER_PRE 0x01
+#define HOOK_POWER_POST        0x02
+
+
 typedef struct pccard_io_map {
     u_char     map;
     u_char     flags;
@@ -166,7 +173,7 @@ typedef struct window_t {
 
 struct config_t;
 struct pcmcia_callback;
-
+struct user_info_t;
 
 struct pcmcia_socket {
        struct module                   *owner;
@@ -211,8 +218,9 @@ struct pcmcia_socket {
 
        /* is set to one if resource setup is done using adjust_resource_info() */
        u8                              resource_setup_old:1;
+       u8                              resource_setup_new:1;
 
-       u8                              reserved:6;
+       u8                              reserved:5;
 
        /* socket operations */
        struct pccard_operations *      ops;
@@ -222,6 +230,9 @@ struct pcmcia_socket {
        /* Zoom video behaviour is so chip specific its not worth adding
           this to _ops */
        void                            (*zoom_video)(struct pcmcia_socket *, int);
+
+       /* so is power hook */
+       int (*power_hook)(struct pcmcia_socket *sock, int operation);
                            
        /* state thread */
        struct semaphore                skt_sem;        /* protects socket h/w state */
@@ -233,9 +244,32 @@ struct pcmcia_socket {
        unsigned int                    thread_events;
 
        /* pcmcia (16-bit) */
-       struct pcmcia_bus_socket        *pcmcia;
        struct pcmcia_callback          *callback;
 
+#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE)
+       struct list_head                devices_list;   /*  PCMCIA devices */
+       u8                              device_count;   /* the number of devices, used
+                                                        * only internally and subject
+                                                        * to incorrectness and change */
+
+       struct {
+               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
+                                                              * add event is pending */
+                                       reserved:4;
+       }                               pcmcia_state;
+
+       struct work_struct              device_add;     /* for adding further pseudo-multifunction
+                                                        * devices */
+
+#ifdef CONFIG_PCMCIA_IOCTL
+       struct user_info_t              *user;
+       wait_queue_head_t               queue;
+#endif
+#endif
+
        /* cardbus (32-bit) */
 #ifdef CONFIG_CARDBUS
        struct resource *               cb_cis_res;