diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-11-06 21:52:16 -0500 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2006-12-04 20:09:15 -0500 |
commit | 1d2c90425d5b0dcbf4a0fab2053d5087758b76a0 (patch) | |
tree | 7c8aaa01b60e81843a3ca4124ccd9ea916fca145 /include/pcmcia/ss.h | |
parent | 3e022d0c77e159a59d3ebfc44ad76a05202c2a6b (diff) |
[PATCH] pcmcia: multifunction card handling fixes
s->functions needs to be initialized earlier, for the "let's see
how high it increases" approach means that pcmcia_request_irq()
(which makes use of this value) is confused, and might request
an exclusive IRQ first even though it is not supposed to.
Also, a CIS override autoloaded using the firmware loader may
allow for the use of more or less functions in a multifunction
card. Therefore, we may need to schedule a call to add this
second function later on, or simply remove the other function
(it's always the first -valid- function which reaches this
codepath).
Many thanks to Fabrice Bellet for debugging and testing patches.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'include/pcmcia/ss.h')
-rw-r--r-- | include/pcmcia/ss.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index ede639812f8a..623a0fc0dae1 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h | |||
@@ -262,9 +262,10 @@ struct pcmcia_socket { | |||
262 | u8 present:1, /* PCMCIA card is present in socket */ | 262 | u8 present:1, /* PCMCIA card is present in socket */ |
263 | busy:1, /* "master" ioctl is used */ | 263 | busy:1, /* "master" ioctl is used */ |
264 | dead:1, /* pcmcia module is being unloaded */ | 264 | dead:1, /* pcmcia module is being unloaded */ |
265 | device_add_pending:1, /* a pseudo-multifunction-device | 265 | device_add_pending:1, /* a multifunction-device |
266 | * add event is pending */ | 266 | * add event is pending */ |
267 | reserved:4; | 267 | mfc_pfc:1, /* the pending event adds a mfc (1) or pfc (0) */ |
268 | reserved:3; | ||
268 | } pcmcia_state; | 269 | } pcmcia_state; |
269 | 270 | ||
270 | struct work_struct device_add; /* for adding further pseudo-multifunction | 271 | struct work_struct device_add; /* for adding further pseudo-multifunction |