[SERIAL] serial_cs: handle Nokia multi->single port bodge via config quirk
According to the existing code, Nokia only make single-port cards, but are detected as multi-port cards. Handle this in roughly the same way via the config quirk - forcing it to be a real single port card (info->multi=0) changes the way we allocate the IO memory, which might stop the card working. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
efd92dfaad
commit
20f130495c
1 changed files with 17 additions and 5 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue