| /* 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 |