From be64b332d4d99ddb51dbc717221e0891486ae5f7 Mon Sep 17 00:00:00 2001 From: Russell King Date: Sat, 16 Sep 2006 23:04:37 +0100 Subject: [PATCH] --- yaml --- r: 38210 b: refs/heads/master c: 20f130495c07cd01fb423c3dec7f045038118dec h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/serial/serial_cs.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index b4f1a67dd677..37062f8b2b38 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: efd92dfaad962c4fbaf4251b28578c97bd3aa85f +refs/heads/master: 20f130495c07cd01fb423c3dec7f045038118dec diff --git a/trunk/drivers/serial/serial_cs.c b/trunk/drivers/serial/serial_cs.c index 788ba404efc6..704922073bbf 100644 --- a/trunk/drivers/serial/serial_cs.c +++ b/trunk/drivers/serial/serial_cs.c @@ -132,6 +132,18 @@ static int quirk_post_ibm(struct pcmcia_device *link) return -ENODEV; } +/* + * Nokia cards are not really multiport cards. Shouldn't this + * be handled by setting the quirk entry .multi = 0 | 1 ? + */ +static void quirk_config_nokia(struct pcmcia_device *link) +{ + struct serial_info *info = link->priv; + + if (info->multi > 1) + info->multi = 1; +} + static void quirk_wakeup_oxsemi(struct pcmcia_device *link) { struct serial_info *info = link->priv; @@ -192,6 +204,11 @@ static const struct serial_quirk quirks[] = { .manfid = MANFID_NATINST, .prodid = PRODID_NATINST_QUAD_RS232, .multi = 4, + }, { + .manfid = MANFID_NOKIA, + .prodid = ~0, + .multi = -1, + .config = quirk_config_nokia, }, { .manfid = MANFID_OMEGA, .prodid = PRODID_OMEGA_QSP_100, @@ -663,11 +680,6 @@ static int multi_config(struct pcmcia_device * link) } setup_serial(link, info, link->io.BasePort1, link->irq.AssignedIRQ); - /* The Nokia cards are not really multiport cards */ - if (info->manfid == MANFID_NOKIA) { - rc = 0; - goto free_cfg_mem; - } for (i = 0; i < info->multi - 1; i++) setup_serial(link, info, base2 + (8 * i), link->irq.AssignedIRQ);