2005-06-28 07:28:47 +08:00
|
|
|
/* 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_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 */
|
|
|
|
|
2005-06-28 07:28:50 +08:00
|
|
|
struct {
|
|
|
|
u8 present:1,
|
|
|
|
busy:1,
|
|
|
|
dead:1,
|
|
|
|
device_add_pending:1,
|
|
|
|
reserved:4;
|
|
|
|
} pcmcia_state;
|
|
|
|
|
2005-06-28 07:28:47 +08:00
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
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
|