struct dev_node_t *next;
} dev_node_t;
-#define pcmcia_dev_present(p_dev) \
- (p_dev->socket->pcmcia_state.present)
-
-#define DEV_OK(l) \
- ((l) && (!l->suspended) && pcmcia_dev_present(l))
-
struct pcmcia_socket;
struct config_t;
+struct pcmcia_dynids {
+ spinlock_t lock;
+ struct list_head list;
+};
+
struct pcmcia_driver {
int (*probe) (struct pcmcia_device *dev);
void (*remove) (struct pcmcia_device *dev);
struct module *owner;
struct pcmcia_device_id *id_table;
struct device_driver drv;
+ struct pcmcia_dynids dynids;
};
/* driver registration */
config_req_t conf;
window_handle_t win;
- /* Is the device suspended? */
+ /* Is the device suspended, or in the process of
+ * being removed? */
u16 suspended:1;
+ u16 _removed:1;
/* Flags whether io, irq, win configurations were
* requested, and whether the configuration is "locked" */
u16 has_card_id:1;
u16 has_func_id:1;
- u16 reserved:4;
+ u16 reserved:3;
u8 func_id;
u16 manf_id;