diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-01-24 08:36:59 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2010-02-17 11:48:27 -0500 |
commit | aa584ca4cdd8db370a524c61fd3ca408303281e9 (patch) | |
tree | dc7945721b8cdcaa88f4dc6d394c2b318c20504a /include/pcmcia | |
parent | af461fc1875b6ec18e23b5f670af36c4ed35c84e (diff) |
pcmcia: use state machine for extended requery
The requery callback now also handles the addition of a second pseudo
multifunction device. Avoids messing with dev_{g,s}et_drvdata(), and
fixes any workqueue <-> skt_mutex deadlock.
Tested-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'include/pcmcia')
-rw-r--r-- | include/pcmcia/ss.h | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index ea5dec8c0d76..32896a773910 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h | |||
@@ -230,18 +230,13 @@ struct pcmcia_socket { | |||
230 | u8 busy:1; | 230 | u8 busy:1; |
231 | /* pcmcia module is being unloaded */ | 231 | /* pcmcia module is being unloaded */ |
232 | u8 dead:1; | 232 | u8 dead:1; |
233 | /* a multifunction-device add event is pending */ | 233 | /* the PCMCIA card consists of two pseudo devices */ |
234 | u8 device_add_pending:1; | 234 | u8 has_pfc:1; |
235 | /* the pending event adds a mfc (1) or pfc (0) */ | ||
236 | u8 mfc_pfc:1; | ||
237 | 235 | ||
238 | u8 reserved:3; | 236 | u8 reserved:4; |
239 | } pcmcia_state; | 237 | } pcmcia_state; |
240 | 238 | ||
241 | 239 | ||
242 | /* for adding further pseudo-multifunction devices */ | ||
243 | struct work_struct device_add; | ||
244 | |||
245 | #ifdef CONFIG_PCMCIA_IOCTL | 240 | #ifdef CONFIG_PCMCIA_IOCTL |
246 | struct user_info_t *user; | 241 | struct user_info_t *user; |
247 | wait_queue_head_t queue; | 242 | wait_queue_head_t queue; |