aboutsummaryrefslogtreecommitdiffstats
path: root/include/pcmcia
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2006-11-06 21:52:16 -0500
committerDominik Brodowski <linux@dominikbrodowski.net>2006-12-04 20:09:15 -0500
commit1d2c90425d5b0dcbf4a0fab2053d5087758b76a0 (patch)
tree7c8aaa01b60e81843a3ca4124ccd9ea916fca145 /include/pcmcia
parent3e022d0c77e159a59d3ebfc44ad76a05202c2a6b (diff)
downloadmrst-s0i3-test-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.tar.gz
mrst-s0i3-test-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.tar.xz
mrst-s0i3-test-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.zip
[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')
-rw-r--r--include/pcmcia/ss.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h
index ede639812f8..623a0fc0dae 100644
--- a/include/pcmcia/ss.h
+++ b/include/pcmcia/ss.h
@@ -262,9 +262,10 @@ struct pcmcia_socket {
u8 present:1, /* PCMCIA card is present in socket */
busy:1, /* "master" ioctl is used */
dead:1, /* pcmcia module is being unloaded */
- device_add_pending:1, /* a pseudo-multifunction-device
+ device_add_pending:1, /* a multifunction-device
* add event is pending */
- reserved:4;
+ mfc_pfc:1, /* the pending event adds a mfc (1) or pfc (0) */
+ reserved:3;
} pcmcia_state;
struct work_struct device_add; /* for adding further pseudo-multifunction