b05bc39d9cd6aa8b1e7317dad132c0b54639dd7b
[pandora-kernel.git] / drivers / pcmcia / ds_internal.h
1 /* ds_internal.h - internal header for 16-bit PCMCIA devices management */
2
3 struct user_info_t;
4
5 /* Socket state information */
6 struct pcmcia_bus_socket {
7         struct kref             refcount;
8         int                     state;
9         struct pcmcia_socket    *parent;
10
11         /* the PCMCIA devices connected to this socket (normally one, more
12          * for multifunction devices: */
13         struct list_head        devices_list;
14         u8                      device_count; /* the number of devices, used
15                                                * only internally and subject
16                                                * to incorrectness and change */
17
18         u8                      device_add_pending;
19         struct work_struct      device_add;
20
21
22 #ifdef CONFIG_PCMCIA_IOCTL
23         struct user_info_t      *user;
24         wait_queue_head_t       queue;
25 #endif
26 };
27 extern spinlock_t pcmcia_dev_list_lock;
28
29 extern struct bus_type pcmcia_bus_type;
30
31
32 #define DS_SOCKET_PRESENT               0x01
33 #define DS_SOCKET_BUSY                  0x02
34 #define DS_SOCKET_DEAD                  0x80
35
36 extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev);
37 extern void pcmcia_put_dev(struct pcmcia_device *p_dev);
38
39 struct pcmcia_bus_socket *pcmcia_get_bus_socket(struct pcmcia_bus_socket *s);
40 void pcmcia_put_bus_socket(struct pcmcia_bus_socket *s);
41
42 struct pcmcia_device * pcmcia_device_add(struct pcmcia_bus_socket *s, unsigned int function);
43
44 #ifdef CONFIG_PCMCIA_IOCTL
45 extern void __init pcmcia_setup_ioctl(void);
46 extern void __exit pcmcia_cleanup_ioctl(void);
47 extern void handle_event(struct pcmcia_bus_socket *s, event_t event);
48 extern int handle_request(struct pcmcia_bus_socket *s, event_t event);
49 #else
50 static inline void __init pcmcia_setup_ioctl(void) { return; }
51 static inline void __init pcmcia_cleanup_ioctl(void) { return; }
52 static inline void handle_event(struct pcmcia_bus_socket *s, event_t event) { return; }
53 static inline int handle_request(struct pcmcia_bus_socket *s, event_t event) { return CS_SUCCESS; }
54 #endif