Re: 2.6.22-rc: regression: no irda0 interface (2.6.21 was OK), smsc does not find chip

From: Bjorn Helgaas
Date: Mon Jun 04 2007 - 12:34:21 EST


On Sunday 03 June 2007 02:16:05 am Andrey Borzenkov wrote:
> On Sunday 03 June 2007, Andrey Borzenkov wrote:
> > Under 2.6.22-rc I lost irda0 interface - smsc claims no device present.
> > Nothing was changed in setup except kernel version.
> >
> > 2.6.21:
> >
> > Detected unconfigured Toshiba laptop with ALi ISA bridge SMSC IrDA chip,
> > pre-configuring device.
> > Activated ALi 1533 ISA bridge port 0x02e8.
> > Activated ALi 1533 ISA bridge port 0x02f8.
> > found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227
> > smsc_superio_flat(): IrDA not enabled

The "IrDA not enabled" makes me think that even in the working case,
the BIOS left the IR port disabled. Are there any BIOS setup switches
that affect this port?

> > smsc_superio_flat(): fir: 0x2f8, sir: 0x2e8, dma: 03, irq: 7, mode: 0x02
> > SMsC IrDA Controller found
> > IrCC version 2.0, firport 0x2f8, sirport 0x2e8 dma=3, irq=7

It seems strange that both FIR and SIR would use legacy COM ports
(0x2f8 == COM2, 0x2e8 == COM4). My HP nw8240 has SIR at 0x3e8 (COM3)
and FIR at 0x100.

Do you know if both the FIR and SIR interfaces work? I'm wondering if
your irda0 only uses SIR at 0x2e8, and FIR has always been broken.

> > No transceiver found. Defaulting to Fast pin select
> > IrDA: Registered device irda0
> >
> >
> > 2.6.22-rc3:
> > Detected unconfigured Toshiba laptop with ALi ISA bridge SMSC IrDA chip,
> > pre-configuring device.
> > Activated ALi 1533 ISA bridge port 0x02e8.
> > Activated ALi 1533 ISA bridge port 0x02f8.
> > pnp: Device 00:0a activated.
> > smsc_ircc_present(), addr 0x02e8 - no device found!
> > pnp: Device 00:0a disabled.

> {pts/1}% cat /sys/bus/pnp/devices/00:0a/resources
> state = active
> io 0x100-0x107
> io 0x2e8-0x2ef
> irq 5
> dma 1

The PNP probe I added expects SIR at the first range and FIR at the
second. I would think the 0x2e8 range would be SIR, since it's compatible
with a COM port. Is it possible the BIOS just reports these in the
opposite order, with FIR first and SIR second? Can you try the patch
below?

Index: linux-2.6/drivers/net/irda/smsc-ircc2.c
===================================================================
--- linux-2.6.orig/drivers/net/irda/smsc-ircc2.c 2007-06-04 10:21:46.000000000 -0600
+++ linux-2.6/drivers/net/irda/smsc-ircc2.c 2007-06-04 10:21:57.000000000 -0600
@@ -386,8 +386,8 @@
pnp_dma_valid(dev, 0) && pnp_irq_valid(dev, 0)))
return -EINVAL;

- sirbase = pnp_port_start(dev, 0);
- firbase = pnp_port_start(dev, 1);
+ firbase = pnp_port_start(dev, 0);
+ sirbase = pnp_port_start(dev, 1);
dma = pnp_dma(dev, 0);
irq = pnp_irq(dev, 0);

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/