2c3bb189dec694109a8914b0600ed713f14edf30
[linux-2.6.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         struct pcmcia_socket    *parent;
9
10         /* the PCMCIA devices connected to this socket (normally one, more
11          * for multifunction devices: */
12         struct list_head        devices_list;
13         u8                      device_count; /* the number of devices, used
14                                                * only internally and subject
15                                                * to incorrectness and change */
16
17         struct {
18                 u8              present:1,
19                                 busy:1,
20                                 dead:1,
21                                 device_add_pending:1,
22                                 reserved:4;
23         }                       pcmcia_state;
24
25         struct work_struct      device_add;
26
27
28 #ifdef CONFIG_PCMCIA_IOCTL
29         struct user_info_t      *user;
30         wait_queue_head_t       queue;
31 #endif
32 };
33 extern spinlock_t pcmcia_dev_list_lock;
34
35 extern struct bus_type pcmcia_bus_type;
36
37
38 extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev);
39 extern void pcmcia_put_dev(struct pcmcia_device *p_dev);
40
41 struct pcmcia_bus_socket *pcmcia_get_bus_socket(struct pcmcia_bus_socket *s);
42 void pcmcia_put_bus_socket(struct pcmcia_bus_socket *s);
43
44 struct pcmcia_device * pcmcia_device_add(struct pcmcia_bus_socket *s, unsigned int function);
45
46 #ifdef CONFIG_PCMCIA_IOCTL
47 extern void __init pcmcia_setup_ioctl(void);
48 extern void __exit pcmcia_cleanup_ioctl(void);
49 extern void handle_event(struct pcmcia_bus_socket *s, event_t event);
50 extern int handle_request(struct pcmcia_bus_socket *s, event_t event);
51 #else
52 static inline void __init pcmcia_setup_ioctl(void) { return; }
53 static inline void __init pcmcia_cleanup_ioctl(void) { return; }
54 static inline void handle_event(struct pcmcia_bus_socket *s, event_t event) { return; }
55 static inline int handle_request(struct pcmcia_bus_socket *s, event_t event) { return CS_SUCCESS; }
56 #endif