[ltp] 760E, Xircom RBEM and kernel 2.4.x ;-(

Gregor Hoffleit linux-thinkpad@www.bm-soft.com
Sat, 3 Nov 2001 00:31:23 +0100


I guess I must send out a cry for help. I have a TP 760E and a Xircom
RBEM56G-100 (RealPort CardBus Ethernet 10/100 + Modem 56) card.

After a little bit of work, the combo worked fine with W98 (network and
modem), it also works fine with 2.2.19 (only network) on Debian woody.
But I'm completely unable to get it working with any 2.4.x kernel (I'm
using the kernel pcmcia driver, i.e yenta_socket, haven't yet tried to
replace them with David Hinds).

While I tried several things with different results, the main problem
seems to be the problem that yenta_socket is unable to find an interrupt
for the CardBus bridges, i.e. the problem is only with the TP760E and
not with the Xircom.

I also tried 'append="pci=biosirq"' in /etc/lilo.conf, but it didn't
help.

Perhaps some ThinkPad wizards could look at the following report and see
if they have some more insight. I have much more configuration data and
logs at hand, so please just tell me if something is missing.


Without any card inserted, the startup log of the pcmcia system looks
like this (with 2.4.13):

  Linux Kernel Card Services 3.1.22
    options:  [pci] [cardbus] [pm]
  PCI: No IRQ known for interrupt pin A of device 00:02.0.
        Please try using pci=biosirq.
  PCI: No IRQ known for interrupt pin B of device 00:02.1.
        Please try using pci=biosirq.
  Yenta IRQ list 06b8, PCI irq0
  Socket status: 30000006
  Yenta IRQ list 06b8, PCI irq0
  Socket status: 30000006
  cs: IO port probe 0x0c00-0x0cff: clean.
  cs: IO port probe 0x0800-0x08ff: clean.
  cs: IO port probe 0x0100-0x04ff: excluding 0x268-0x26f 0x378-0x37f
        0x4d0-0x4d7
  cs: IO port probe 0x0a00-0x0aff: excluding 0xa68-0xa6f


Compared with the output of 2.2.19:

  Linux PCMCIA Card Services 3.1.22
    kernel build: 2.2.19 #1 Sat May 19 10:59:03 EST 2001
    options:  [pci] [cardbus] [apm]
  Intel PCIC probe: 
    TI 1130 rev 04 PCI-to-CardBus at slot 00:02, mem 0x10811000
      host opts [0]: [ring] [isa irq] [no pci irq] [lat 168/176] [bus 1/3]
      host opts [1]: [ring] [isa irq] [no pci irq] [lat 168/176] [bus 4/6]
      ISA irqs (scanned) = 5,7,9,10 status change on irq 10
  cs: IO port probe 0x0c00-0x0cff: excluding 0xcf8-0xcff
  cs: IO port probe 0x0800-0x08ff: clean.
  cs: IO port probe 0x0100-0x04ff: excluding 0x268-0x26f 0x378-0x37f
        0x4d0-0x4d7
  cs: IO port probe 0x0a00-0x0aff: excluding 0xa68-0xa6f


(for the curious Debian users, I have simply patched /etc/init.d/pcmcia
to load either yenta_socket or i82365, depending on if we're running
2.4.x or 2.2.x).

This very much looks like 2.4.13 is no longer able to guess the irq (10)
of the card, and this is probably the cause of all following problems.

When I now insert the Xircom card, the system will find the card, and
load up the xircom_cb module (and setup eth0), but to no avail, i.e. I
won't be able to ping or whatelse, since the card has no valid interrupt
assigned to:

  cs: cb_alloc(bus 4): vendor 0x115d, device 0x0003
  PCI: Enabling device 04:00.0 (0000 -> 0003)
  PCI: No IRQ known for interrupt pin A of device 04:00.0.
        Please try using pci=biosirq.
  PCI: Enabling device 04:00.1 (0000 -> 0003)
  PCI: No IRQ known for interrupt pin A of device 04:00.1.
        Please try using pci=biosirq.
  PCI: No IRQ known for interrupt pin A of device 04:00.1.
        Please try using pci=biosirq.
  ttyS04 at port 0x4880 (irq = 0) is a 16550A
  PCI: No IRQ known for interrupt pin A of device 04:00.0.
        Please try using pci=biosirq.
  PCI: Setting latency timer of device 04:00.0 to 64
  eth0: Xircom cardbus revision 3 at irq 0 


Cf. with 2.2.19, where the card (net and modem) gets assigned IRQ 5, and
works just fine afterwards:

  cs: cb_alloc(bus 4): vendor 0x115d, device 0x0003
  ROM image dump:
    image 0: 0x000000-0x0001ff, signature PCIR
  cs: cb_config(bus 4)
    fn 0 bar 2: mem 0x60013000-0x600137ff
    fn 0 bar 3: mem 0x60012000-0x600127ff
    fn 1 bar 1: io 0x480-0x487
    fn 1 bar 2: mem 0x60011000-0x600117ff
    fn 1 bar 3: mem 0x60010000-0x600107ff
    fn 0 bar 1: io 0x400-0x47f
    fn 0 rom: mem 0x6000c000-0x6000ffff
    fn 1 rom: mem 0x60008000-0x6000bfff
    irq 5
  cs: cb_enable(bus 4)
    bridge io map 0 (flags 0x21): 0x400-0x487
    bridge mem map 0 (flags 0x1): 0x60008000-0x60013fff
  tulip_attach(device 04:00.0)
  tulip.c:v0.91g-ppc 7/16/99 becker@cesdis.gsfc.nasa.gov (modified by
        danilo@cs.uni-magdeburg.de for XIRCOM CBE, fixed by Doug Ledford)
  eth0: Xircom Cardbus Adapter (DEC 21143 compatible mode) rev 3 at 0x400,
        00:10:A4:F9:19:8A, IRQ 5.
  eth0:  MII transceiver #0 config 3100 status 7809 advertising 01e1.
  serial_attach(device 04:00.1)
  tty02 at 0x0480 (irq = 5) is a 16550A


I also tried to 'append="pci=biosirq"' in /etc/lilo.conf, but this
didn't help the kernel to find the correct IRQs. Instead, the hint about
using biosirq just goes away without any new help:

  @@ -31,6 +31,8 @@
   PCI: PCI BIOS revision 2.10 entry at 0xfd930, last bus=6
   PCI: Using configuration type 1
   PCI: Probing PCI hardware
  +PCI: Using BIOS Interrupt Routing Table
  +PCI: Using BIOS for IRQ routing
   Linux NET4.0 for Linux 2.4
   Based upon Swansea University Computer Society NET3.039
   Initializing RT netlink socket
  @@ -78,8 +80,8 @@
   ttyS1: LSR safety check engaged!
   Linux Kernel Card Services 3.1.22
     options:  [pci] [cardbus] [pm]
  -PCI: No IRQ known for interrupt pin A of device 00:02.0. Please try using pci=biosirq.
  -PCI: No IRQ known for interrupt pin B of device 00:02.1. Please try using pci=biosirq.
  +PCI: No IRQ known for interrupt pin A of device 00:02.0.
  +PCI: No IRQ known for interrupt pin B of device 00:02.1.
   Yenta IRQ list 06b8, PCI irq0
   Socket status: 30000006
   Yenta IRQ list 06b8, PCI irq0




Thanks in advance for any help!

    Gregor

----- The Linux ThinkPad mailing list -----
The linux-thinkpad mailing list home page is at:
http://www.bm-soft.com/~bm/tp_mailing.html