status of pcmcia in recent kernels / lots of troubles
Armando Di Cianno
fafhrd at gentoo.org
Wed Dec 1 10:41:42 EST 2004
I can't seem to get any PC cards (16-bit or 32-bit Carbus) working
properly in my Aluminum Powerbook G4 1.5Ghz. I've tried in-kernel and
module compilation for a variety of kernel versions, but my main
testing has been with 2.6.9 (gentoo-dev-sources + benh's sleep patch
version 5). Things used to work, iirc in versions <= 2.6.6, which I'm
no longer really able to run (especially now that sleep works, among
many other fixes).
According to this page: http://pcmcia.arm.linux.org.uk/ , the PCMCIA
subsystem is undergoing changes, and a few times it vaguely mentions
troubles happening "on some laptops, we don't know why these and not
The relevant portion of `lspci -vv` is this:
0001:10:13.0 CardBus bridge: Texas Instruments PCI1510 PC card Cardbus
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
Latency: 168, cache line size 08
Interrupt: pin A routed to IRQ 53
Region 0: Memory at a0004000 (32-bit, non-prefetchable)
Bus: primary=10, secondary=11, subordinate=14, sec-latency=176
Memory window 0: 90000000-9ffff000 (prefetchable)
Memory window 1: f3000000-f31ff000
I/O window 0: 00001000-000010ff
I/O window 1: 00001400-000014ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+
16-bit legacy interface ports at 0001
However, _none_ of the lines in there with the word 'memory' seem to
offer any usable memory regions for pcmcia-cs.
My current /etc/pcmcia/config.opts includes this:
include port 0x1000-0x10ff
include port 0x1400-0x14ff
include memory 0x80100000-0x80ffffff
That memory range is the only range I've been able to find that
doesn't throw errors in some way. I've tried "include memory
0x80000000-0x80ffffff" (example on the net), "include memory
0xa0004000-0xa0004fff", "include memory 0x90000000-0x9ffff000", and
"include memory 0xf3000000-0xf31ff000" (not sure if those last two
matter at all, just trying anything at this point).
When I use my current config.ops, the kernel orinoco_cs driver reports
Nov 30 04:53:40 [cardmgr] watching 1 socket
Nov 30 04:53:40 [cardmgr] could not adjust resource: irq 53: Invalid
Nov 30 04:53:40 [kernel] cs: IO port probe 0x1000-0x10ff: clean.
Nov 30 04:53:40 [kernel] cs: IO port probe 0x1400-0x14ff: clean.
Nov 30 04:53:48 [cardmgr] exiting
Nov 30 04:54:12 [cardmgr] watching 1 socket
Nov 30 04:54:12 [kernel] cs: IO port probe 0x1000-0x10ff: clean.
Nov 30 04:54:12 [kernel] cs: IO port probe 0x1400-0x14ff: clean.
Nov 30 04:54:25 [kernel] cs: pcmcia_socket0: voltage interrogation
Nov 30 04:54:26 [cardmgr] socket 0: Orinoco or Intersil Prism 2
Nov 30 04:54:26 [kernel] cs: memory probe 0x80100000-0x80ffffff: clean.
Nov 30 04:54:26 [kernel] orinoco_cs: GetNextTuple(): No matching CIS
configuration. Maybe you need the ignore_cis_vcc=1 parameter.
Nov 30 04:54:27 [cardmgr] get dev info on socket 0 failed: Resource
Nov 30 04:54:44 [cardmgr] socket 0: Orinoco or Intersil Prism 2
Nov 30 04:54:45 [cardmgr] get dev info on socket 0 failed: Resource
When I use the linux-wlan-ng driver (yeah, i know, but shooting in the
dark here), similar Vcc errors get thown, only different in wording,
not in numbers or otherwise. Note that whenever I test with
linux-wlan-ng drivers, I always rebuild my /lib/modules/<version>
directly, and clean out /etc/pcmcia completely, and then reinstall
pcmcia-cs, so that linux-wlan-ng doens't "poison" it unknowingly.
I've tried both with two different orinoco based cards, just in case
one was bad. I've also tried a prism54 card (with firmware available
and ready) (and which works in another computer fine) with these
Nov 30 14:25:51 [kernel] prism54: request_firmware() failed for
... and yet the other computer is set up identically software-wise
(Compaq laptop) and works with this card/firmware.
I've even tried include ISA support in-kernel as the README for the
downloadable / updated orinico drivers (v 15_rc2) say that the 16-bit
cards need it, but that didn't change anything.
I've also tried to add "reserve 0xa0004000,0x2000" to the kernel
command line as /proc/iomem reports this:
90000000-9fffffff : PCI CardBus #11
a0000000-a00000ff : 0001:10:1b.2
a0000000-a00000ff : ehci_hcd
a0001000-a0001fff : 0001:10:1b.1
a0001000-a0001fff : ohci_hcd
a0002000-a0002fff : 0001:10:1b.0
a0002000-a0002fff : ohci_hcd
a0003000-a0003fff : 0001:10:1a.0
a0003000-a0003fff : ohci_hcd
a0004000-a0004fff : 0001:10:13.0 <--- this one, right?
a0004000-a0004fff : yenta_socket
a0006000-a0007fff : 0001:10:12.0
b0000000-bfffffff : /pci at f0000000
I've reached that head-bashing-on-desk point. Any hints or mistakes
pointed out would be greatly appreciated. Thanks,
__Armando Di Cianno
More information about the Linuxppc-dev