Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Jul 2007 02:38:16 +1000 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        Zhang Weiwu <zhangweiwu@realss.com>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: unable to map IRQ for my pccard
Message-ID:  <Pine.BSF.3.96.1070708235221.20740C-100000@gaia.nimnet.asn.au>
In-Reply-To: <1183812387.7741.32.camel@joe.realss.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 7 Jul 2007, Zhang Weiwu wrote:

 > My notebook has two 16-bit PCMCIA slots, the card in the second slot
 > always doesn't work, it was until after a week I start to notice dmesg
 > showed useful information:

Sorry, but it's not clear whether the card stopped working (but it used
to?) or the slot has stopped working (but used to?)  When did behaviour
change - after upgrading FreeBSD version, hardware, or what?

To rule out hardware failure, can you boot it with the first card (or
any other card) only in the second slot, with nothing in the first slot?

Have you checked that both cards work, in another machine, or other OS?

Also, we try! to remember what you've said elsewhere but if you can post
`uname -a` and give the precise model numbers of the old Thinkpad (380
something?) and both cards mentioned in your messages, it might help.

 > cbb0: <TI1250 PCI-CardBus Bridge> mem 0x20822000-0x20822fff at device 2.0 on pci0
 > pccard0: <16-bit PCCard bus> on cbb0
 > cbb1: <TI1250 PCI-CardBus Bridge> mem 0x20821000-0x20821fff at device 2.1 on pci0
 > pccard1: <16-bit PCCard bus> on cbb1
 > $PIR: ROUTE_INTERRUPT failed.
 > cbb: Unable to map IRQ...
 > device_attach: cbb1 attach returned 12

Was that with something, or nothing, in one or both slots?  If with
something, do you still see that if booting with nothing in the slots? 

That is, is the error with the card or the slot itself?  Both happen.

Does the card that doesn't work in the second slot, work in the first?

 > [snip]
 > ep0: <3Com Corporation 3C589D> at port 0x100-0x10f irq 11 function 0 config 1 on
 >  pccard0
 > ep0: Ethernet address: 00:60:97:92:c0:27
 > 
 > I have checked my IRQ usage (by using dmesg | grep irq) and found IRQ 3,
 > 8, 9, 10 are not used.
 > 
 > atkbd0	irq 1
 > ...	irq 2
 > [empty]	irq 3   <-- I disabled COM1 in kernel because hardware broken.

Yes, but have you / can you also disable it in the BIOS? (with PS2.EXE?)

 > sio4	irq 4   <-- infrared ray
 > pcm0	irq 5
 > fdc0	irq 6
 > ppc0	irq 7
 > [empty]	irq 8   <-- not used in dmesg but some articles I read says it's for Real time clock

Sure is; see 'vmstat -i'

 > [empty]	irq 9
 > [empty]	irq 10
 > uhci0	irq 11
 > ep0	irq 11  <-- this is the device on first PCMCIA slot
 > psm0	irq 12
 > ata4	irq ?   <-- this is the (unusable) device on second PCMCIA slot

Hmmm, ata4?  Since your pccard bridges are to PCI not ISA bus, if I've
understood anything of Warner's paper recently mentioned, there should
be no problem both of them sharing irq 11?  Hopefully someone will tell
me if I'm way off base; I've had trouble following pccard/cardbus too.

On my older laptop, a '99 Compaq Armada 1500c:

cbb0: <TI1225 PCI-CardBus Bridge> mem 0x7fffe000-0x7fffefff irq 11 at device 17.0 on pci0
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
cbb1: <TI1225 PCI-CardBus Bridge> mem 0x7ffff000-0x7fffffff irq 11 at device 17.1 on pci0
cardbus1: <CardBus bus> on cbb1
pccard1: <16-bit PCCard bus> on cbb1
 [..]
dc0: <Netgear FA511 10/100BaseTX> port 0x1100-0x11ff mem 0x88000000-0x880003ff irq 11 at device 0.0 on cardbus1
xe0: <Xircom CreditCard Ethernet+Modem 33.6> at port 0x2f8-0x2ff irq 11 function 0 config 2 on pccard0

That's one old pccard and one newer cardbus card, both on irq 11, both
happily.  (I'm really hoping it stays happy on 6.2 - currently 5.5-S)

 > [empty] irq 13  <-- I don't think I have coprocessor on my thinkpad

All x86 processors past the 486-SX have copro built in, and need this.

 > [empty] irq 14  <-- not shown in dmesg but I do have atapci0 that might use it

It does.   Again, vmstat -i

 > [empty] irq 15  <-- probably not used because I don't have atapci1
 > 
 > I am not sure how to solve "ROUTE_INTERRUPT failed." problem, but since
 > I have enough free IRQ for the devices, I guess I can simply turn off
 > IRQ sharing or simply assign an unused IRQ number to the second device.

In a later message you point out that PS2.EXE won't let you assign more
irqs anyway.  Unless your BIOS is not up to date (?), that tends to
indicate that your laptop's hardware simply doesn't allow that setting,
rememembering that PS2.EXE handles dozens of Thinkpad models/variants.

I may be wrong, but I think you might be chasing this rabbit down the
wrong hole; if it's a hardware failure - looking possible - trying to
assign another irq to cbb1, or cards on cbb1, isn't likely to help.

 > The free IRQ number I filled in /etc/pccard.conf seems to be completely
 > ignored (you can set to anything but it will always use irq 11), this is
 > strange. As manual suggests this is the right place to configure IRQ for
 > pccards.

Some pccard* documentation seems rather out of date, and frankly very
sparse, but developers naturally want to work on the newer stuff.  It
could be that eBay'ing yourself a nice secondhand (say) T23 or later
might save you lots of time and worry, at fairly low cost?

HTH, Ian




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.1070708235221.20740C-100000>