16-bit PCMCIA resource allocation
David Clark
dlclark at chtech.com
Fri Feb 16 03:04:28 EST 2007
I am having difficulty getting 16-bit PCMCIA cards to work on a custom
MPC8245-based board. I am running kernel 2.6.14.2 with pcmciautils-014.
I have successfully run the network off a 32-bit PCMCIA network card so
I am certain that the interface to the PCMCIA socket is functional. I'm
thinking it is just a resource allocation issue but I am having
difficulty understanding how it is supposed to work. When I insert the
card or call "pccardctl insert" I receive the error "cs: unable to map
card memory."
>From following the source I can tell that the error occurs when the
kernel is trying read the cards CIS and it fails to allocate/map memory
to do so. Do I need to tell the kernel to reserve a block of memory for
16-bit PCMCIA cards? I assume this would be from the PCI busses address
space. Is this done using the "/etc/pcmcia/config.opts" file? I was
under the impression that I didn't need this file for a Yenta socket in
a PPC environment. Could is be the way my PCIbus is setup? ...
Any hints are greatly appreciated.
David Clark
Below are a few relevant outputs.
******** pccardctl status ********
Socket 0:
5.0V 16-bit PC Card
******** dmesg ********
dmesg
oop registered
io scheduler deadline registered
RAMDISK driver initialized: 4 RAM disks of 32768K size 1024 blocksize
QS6612: Registered new driver
Linux Tulip driver version 1.1.13 (May 11, 2002)
tulip0: EEPROM default media type Autosense.
tulip0: Index #0 - Media 100baseTx (#3) described by a 21143 SYM PHY
(4) block.
tulip0: Index #1 - Media 100baseTx-FDX (#5) described by a 21143 SYM
PHY (4) bl
ock.
tulip0: Index #2 - Media 10baseT (#0) described by a 21142 Serial PHY
(2) block
.
tulip0: Index #3 - Media 10baseT-FDX (#4) described by a 21142 Serial
PHY (2) b
lock.
eth0: Digital DS21143 Tulip rev 65 at c9002c00, 00:40:42:07:00:04, IRQ
16.
Yenta: CardBus bridge found at 0000:00:14.0 [0000:0000]
PCI: Bus 2, cardbus bridge: 0000:00:14.0
IO window: 00000000-000001ff
IO window: 00000400-000005ff
PREFETCH window: bf8ff000-bfcfefff
MEM window: 80000000-803fffff
Yenta: Enabling burst memory read transactions
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:00:14.0, mfunc 0x00101000, devctl 0x66
Yenta TI: socket 0000:00:14.0 probing PCI interrupt failed, trying to
fix
Yenta TI: socket 0000:00:14.0 falling back to parallel PCI interrupts
Yenta TI: socket 0000:00:14.0 parallel PCI interrupts ok
Yenta: ISA IRQ mask 0x0000, PCI irq 19
Socket status: 30000410
pcmcia: parent PCI bridge I/O window: 0xfe000000 - 0xfebfffff
pcmcia: parent PCI bridge Memory window: 0x80000000 - 0xfcffffff
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
cs: memory probe 0x80000000-0xfcffffff:IP-Config: Complete:
device=eth0, addr=192.168.1.228, mask=255.255.255.0,
gw=255.255.255.255,
host=vx411c, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 100k init
- nothing to change...
- nothing to change...
excluding 0x80000000-0xfcffffff
cs: unable to map card memory!
cs: unable to map card memory!
- nothing to change...
- data bits = 8
- parity = none
- stop bits = 1
- RTS/CTS is disabled
- baud rate = 57600<5>***CH DEBUG: s->callback->event() = 0xc0121b54
cs: unable to map card memory!
cs: unable to map card memory!
******** lspci -vvv ********
~ # lspci -vvv
00:00.0 Host bridge: Motorola MPC8245 [Unity] (rev 14)
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap- 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
<TAbort-
<MAbort+ >SERR- <PERR-
Latency: 64, Cache Line Size 08
Interrupt: pin A routed to IRQ 0
Region 0: Memory at <unassigned> (32-bit, prefetchable)
Region 2: Memory at <unassigned> (32-bit, prefetchable)
00:10.0 I2O: Anchor Chips Inc. AN3042Q CO-MEM Lite (rev 02) (prog-if 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort
- <MAbort- >SERR- <PERR-
Latency: 128, Cache Line Size 08
Interrupt: pin ? routed to IRQ 20
Region 0: Memory at 00000000bfff8000 (32-bit, non-prefetchable)
[size=32
K]
Region 1: I/O ports at bffff8 [size=8]
00:12.0 Ethernet controller: Digital Equipment Corporation DECchip
21142/43 (rev
41)
Subsystem: Unknown device 0400:0001
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort
- <MAbort- >SERR- <PERR-
Latency: 128 (5000ns min, 10000ns max), Cache Line Size 08
Interrupt: pin A routed to IRQ 16
Region 0: I/O ports at bfff00 [size=128]
Region 1: Memory at 00000000bfff7c00 (32-bit, non-prefetchable)
[size=1K
]
Expansion ROM at 00000000dfbc0000 [disabled] [size=256K]
00:13.0 PCI bridge: Texas Instruments PCI2250 PCI-to-PCI Bridge (rev 02)
(prog-i
f 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort
- <MAbort- >SERR- <PERR-
Latency: 128, Cache Line Size 08
Bus: primary=00, secondary=01, subordinate=01, sec-latency=128
I/O behind bridge: 00bfe000-00bfefff
Memory behind bridge: bfe00000-bfefffff
Prefetchable memory behind bridge: bfd00000-bfdfffff
Secondary status: 66Mhz- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort
- <MAbort+ <SERR- <PERR-
BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
Capabilities: [dc] Power Management version 1
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:14.0 CardBus bridge: Texas Instruments PCI1620 PC Card Controller
(rev 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- 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 19
Region 0: Memory at 00000000bfcff000 (32-bit, non-prefetchable)
[size=4K
]
Bus: primary=00, secondary=02, subordinate=05, sec-latency=176
Memory window 0: bf8ff000-bfcfe000 (prefetchable)
Memory window 1: 80000000-803ff000
I/O window 0: 00000000-000001ff
I/O window 1: 00000400-000005ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+
PostWrite+
16-bit legacy interface ports at 0001
00:14.2 System peripheral: Texas Instruments PCI1620 Firmware Loading
Function (
rev 01)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
<TAbort
- <MAbort- >SERR- <PERR-
Latency: 128 (1750ns min, 1000ns max), Cache Line Size 08
Interrupt: pin ? routed to IRQ 19
Region 0: I/O ports at bf9fc0 [size=64]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
******** lspcmcia -vvv ********
~ # lspcmcia -vvv
Socket 0 Bridge: [yenta_cardbus] (bus ID: 0000:00:14.0)
Configuration: state: suspended ready: yes
Voltage: 5.0V Vcc: 5.0V Vpp: 5.0V
Available IRQs: none
Available ioports: 0xfe000000 - 0xfebfffff
Available iomem: --none--
******** /proc/iomem ********
~ # cat /proc/iomem
80000000-fcffffff : PCI host bridge
80000000-803fffff : PCI CardBus #02
bf8ff000-bfcfefff : PCI CardBus #02
bfcff000-bfcfffff : 0000:00:14.0
bfcff000-bfcfffff : yenta_socket
bfd00000-bfdfffff : PCI Bus #01
bfe00000-bfefffff : PCI Bus #01
bfff7c00-bfff7fff : 0000:00:12.0
bfff7c00-bfff7fff : tulip
bfff8000-bfffffff : 0000:00:10.0
fc004500-fc004507 : serial
******** /proc/ioports ********
~ # cat /proc/ioports
fe000000-febfffff : PCI host bridge
fe000000-fe0001ff : PCI CardBus #02
fe000400-fe0005ff : PCI CardBus #02
febf9fc0-febf9fff : 0000:00:14.2
febfe000-febfefff : PCI Bus #01
febfff00-febfff7f : 0000:00:12.0
febfff00-febfff7f : tulip
febffff8-febfffff : 0000:00:10.0
~ #
More information about the Linuxppc-embedded
mailing list