summaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.net>2010-03-24 10:49:14 +0100
committerDominik Brodowski <linux@dominikbrodowski.net>2010-03-24 10:51:31 +0100
commit7d7ba8d31eb293016bc91a5c8fc36b21fd917265 (patch)
tree9b3b64a0f65322a5f95a7f87a331846eeaf5f97e /drivers/pcmcia
parent9713ab28ec92d0c44b2ac5765dfc26c619d9cadd (diff)
downloadlinux-7d7ba8d31eb293016bc91a5c8fc36b21fd917265.tar.gz
linux-7d7ba8d31eb293016bc91a5c8fc36b21fd917265.tar.bz2
linux-7d7ba8d31eb293016bc91a5c8fc36b21fd917265.zip
pcmcia: allow for four multifunction subdevices (again)
Commit aa584ca4 broke what 6cf5be51 had already fixed: there may be four multifunction devices, but just two pseudo-multifunction devices per PCMCIA card. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r--drivers/pcmcia/ds.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c
index ad93ebd7b2a2..52d33b2a5bc5 100644
--- a/drivers/pcmcia/ds.c
+++ b/drivers/pcmcia/ds.c
@@ -509,8 +509,12 @@ struct pcmcia_device *pcmcia_device_add(struct pcmcia_socket *s, unsigned int fu
p_dev->device_no = (s->device_count++);
mutex_unlock(&s->ops_mutex);
- /* max of 2 devices per card */
- if (p_dev->device_no >= 2)
+ /* max of 2 PFC devices */
+ if ((p_dev->device_no >= 2) && (function == 0))
+ goto err_free;
+
+ /* max of 4 devices overall */
+ if (p_dev->device_no >= 4)
goto err_free;
p_dev->socket = s;