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 | |
parent | 3e022d0c77e159a59d3ebfc44ad76a05202c2a6b (diff) | |
download | kernel_samsung_espresso10-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.zip kernel_samsung_espresso10-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.tar.gz kernel_samsung_espresso10-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.tar.bz2 |
[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.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index ede6398..623a0fc 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 |