status of pcmcia in recent kernels / lots of troubles

Armando Di Cianno fafhrd at gentoo.org
Wed Dec 1 10:41:42 EST 2004


Hello all.

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 
others".

The relevant portion of `lspci -vv` is this:
0001:10:13.0 CardBus bridge: Texas Instruments PCI1510 PC card Cardbus 
Controller
         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+ 
PostWrite+
         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 
this:
Nov 30 04:53:40 [cardmgr] watching 1 socket
Nov 30 04:53:40 [cardmgr] could not adjust resource: irq 53: Invalid 
argument
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 
timed out.
Nov 30 04:54:26 [cardmgr] socket 0: Orinoco or Intersil Prism 2 
Wireless
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 
temporarily
unavailable
Nov 30 04:54:44 [cardmgr] socket 0: Orinoco or Intersil Prism 2 
Wireless
Nov 30 04:54:45 [cardmgr] get dev info on socket 0 failed: Resource 
temporarily
unavailable

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 
results:
Nov 30 14:25:51 [kernel] prism54: request_firmware() failed for 
'isl3890'
... 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 mailing list