aboutsummaryrefslogtreecommitdiff
path: root/drivers/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial_cs.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
index 2e3a39d38f0..82d42f30725 100644
--- a/drivers/serial/serial_cs.c
+++ b/drivers/serial/serial_cs.c
@@ -81,8 +81,8 @@ module_param(buggy_uart, int, 0444);
/* Table of multi-port card ID's */
struct serial_quirk {
- u_short manfid;
- u_short prodid;
+ unsigned int manfid;
+ unsigned int prodid;
int multi; /* 1 = multifunction, > 1 = # ports */
};
@@ -645,9 +645,12 @@ static int serial_config(struct pcmcia_device * link)
if (first_tuple(link, tuple, parse) == CS_SUCCESS) {
info->manfid = parse->manfid.manf;
info->prodid = parse->manfid.card;
+
for (i = 0; i < ARRAY_SIZE(quirks); i++)
- if ((info->manfid == quirks[i].manfid) &&
- (info->prodid == quirks[i].prodid)) {
+ if ((quirks[i].manfid == ~0 ||
+ quirks[i].manfid == info->manfid) &&
+ (quirks[i].prodid == ~0 ||
+ quirks[i].prodid == info->prodid)) {
info->quirk = &quirks[i];
break;
}