summary refs log tree commit diff
path: root/include/pcmcia/ss.h
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/ss.h
parent3e022d0c77e159a59d3ebfc44ad76a05202c2a6b (diff)
downloadlinux-1d2c90425d5b0dcbf4a0fab2053d5087758b76a0.tar.gz
[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.h5
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 {
 		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