summaryrefslogtreecommitdiff
path: root/drivers/pcmcia/ds_internal.h
blob: 0de90e5e67a70ccbfd4b56ce91c4553ebcf164fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* ds_internal.h - internal header for 16-bit PCMCIA devices management */

struct user_info_t;

/* Socket state information */
struct pcmcia_bus_socket {
	struct kref		refcount;
	struct pcmcia_callback	callback;
	int			state;
	struct pcmcia_socket	*parent;

	/* the PCMCIA devices connected to this socket (normally one, more
	 * for multifunction devices: */
	struct list_head	devices_list;
	u8			device_count; /* the number of devices, used
					       * only internally and subject
					       * to incorrectness and change */

	u8			device_add_pending;
	struct work_struct	device_add;


#ifdef CONFIG_PCMCIA_IOCTL
	struct user_info_t	*user;
	wait_queue_head_t	queue;
#endif
};
extern spinlock_t pcmcia_dev_list_lock;

extern struct bus_type pcmcia_bus_type;


#define DS_SOCKET_PRESENT		0x01
#define DS_SOCKET_BUSY			0x02
#define DS_SOCKET_DEAD			0x80

extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev);
extern void pcmcia_put_dev(struct pcmcia_device *p_dev);

struct pcmcia_bus_socket *pcmcia_get_bus_socket(struct pcmcia_bus_socket *s);
void pcmcia_put_bus_socket(struct pcmcia_bus_socket *s);

struct pcmcia_device * pcmcia_device_add(struct pcmcia_bus_socket *s, unsigned int function);

#ifdef CONFIG_PCMCIA_IOCTL
extern void __init pcmcia_setup_ioctl(void);
extern void __exit pcmcia_cleanup_ioctl(void);
extern void handle_event(struct pcmcia_bus_socket *s, event_t event);
extern int handle_request(struct pcmcia_bus_socket *s, event_t event);
#else
static inline void __init pcmcia_setup_ioctl(void) { return; }
static inline void __init pcmcia_cleanup_ioctl(void) { return; }
static inline void handle_event(struct pcmcia_bus_socket *s, event_t event) { return; }
static inline int handle_request(struct pcmcia_bus_socket *s, event_t event) { return CS_SUCCESS; }
#endif