Cardbus PCI expansion problems
Hello,
I am having problems running an expansion chassis on my laptop. This expansion chassis routes through the cardbus and offers 2 pci slots. I have a communication card in there that I have the driver for. I load the driver module manually at runtime for that card. When I try and read from the memory mapped registers on the communications card, all I get is 0xFFFFFFFF. I used a PCI analyzer to determine that while the configuration registers can be read/written properly, the memory accesses are not making it to the expansion chassis. I have tried booting with pci=assign-busses and acpi=off with no success. I am using a Dell 610 laptop under CentOS 4.3 (2.6.9-34). The card I am using can use either IO registers or memory mapped registers. I do not want to use the IO registers and it works fine without them. The output below indicates I am having problems with IO regions but this does not concern me since I do not need them.
Relavent output of dmesg:
Linux Kernel Card Services
options: [pci] [cardbus] [pm]
PCI: Enabling device 0000:02:01.0 (0000 -> 0002)
ACPI: PCI interrupt 0000:02:01.0[A] -> GSI 11 (level, low) -> IRQ 11
Yenta: CardBus bridge found at 0000:02:01.0 [1028:00e3]
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:02:01.0, mfunc 0x01261222, devctl 0x64
Yenta: ISA IRQ mask 0x0438, PCI irq 11
Socket status: 30000006
PCI: Enabling device 0000:02:01.1 (0000 -> 0002)
ACPI: PCI interrupt 0000:02:01.1[A] -> GSI 11 (level, low) -> IRQ 11
Yenta: CardBus bridge found at 0000:02:01.1 [1028:00e3]
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta TI: socket 0000:02:01.1, mfunc 0x01261222, devctl 0x64
Yenta: ISA IRQ mask 0x0438, PCI irq 11
Socket status: 30000020
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
PCI: Failed to allocate I/O resource #7:1000@5000 for 0000:07:00.0
PCI: Failed to allocate I/O resource #7:1000@5000 for 0000:08:04.0
PCI: Failed to allocate I/O resource #1:100@5000 for 0000:09:04.0
PCI: Failed to allocate I/O resource #3:100@5000 for 0000:09:04.0
PCI: Bus 9, bridge: 0000:08:04.0
IO window: 5000-4cff
MEM window: 31000000-310fffff
PREFETCH window: disabled.
PCI: Bus 8, bridge: 0000:07:00.0
IO window: 5000-4cff
MEM window: 31000000-310fffff
PREFETCH window: disabled.
PCI: Setting latency timer of device 0000:07:00.0 to 64
PCI: Setting latency timer of device 0000:08:04.0 to 64
Relavent output of /proc/iomem:
30000000-300003ff : 0000:00:1f.1
30001000-30001fff : 0000:02:01.0
30001000-30001fff : yenta_socket
30002000-30002fff : 0000:02:01.1
30002000-30002fff : yenta_socket
30400000-307fffff : PCI CardBus #03
30800000-30bfffff : PCI CardBus #03
30c00000-30ffffff : PCI CardBus #07
31000000-313fffff : PCI CardBus #07
31000000-310fffff : PCI Bus #08
31000000-310fffff : PCI Bus #09
31000000-310000ff : 0000:09:04.0
31000100-310001ff : 0000:09:04.0
Relavent output of lspci:
02:01.0 CardBus bridge: Texas Instruments PCI1420
Subsystem: Dell: Unknown device 00e3
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 20
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 30001000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=02, secondary=03, subordinate=06, sec-latency=176
Memory window 0: 30400000-307ff000 (prefetchable)
Memory window 1: 30800000-30bff000
I/O window 0: 00004000-000040ff
I/O window 1: 00004400-000044ff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+
16-bit legacy interface ports at 0001
02:01.1 CardBus bridge: Texas Instruments PCI1420
Subsystem: Dell: Unknown device 00e3
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 20
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 30002000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176
Memory window 0: 30c00000-30fff000 (prefetchable)
Memory window 1: 31000000-313ff000
I/O window 0: 00004800-000048ff
I/O window 1: 00004c00-00004cff
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt- PostWrite+
16-bit legacy interface ports at 0001
07:00.0 PCI bridge: Hint Corp HiNT HB4 PCI-PCI Bridge (PCI6150) (rev 04) (prog-if 00 [Normal decode])
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: 64
Bus: primary=07, secondary=08, subordinate=09, sec-latency=0
I/O behind bridge: 00005000-00004fff
Memory behind bridge: 31000000-310fffff
Prefetchable memory behind bridge: 00000000fff00000-0000000000000000
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-
Capabilities: [e4] #06 [0094]
Capabilities: [e8] Vital Product Data
08:04.0 PCI bridge: Digital Equipment Corporation DECchip 21150 (rev 06) (prog-if 00 [Normal decode])
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: 64
Bus: primary=08, secondary=09, subordinate=09, sec-latency=0
I/O behind bridge: 00005000-00004fff
Memory behind bridge: 31000000-310fffff
Prefetchable memory behind bridge: 00000000fff00000-0000000000000000
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-
Bridge: PM- B3+
09:04.0 Communication controller: Unknown device 5ab7:0001 (rev 01)
Subsystem: Unknown device 5ab7:0001
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-
Interrupt: pin A routed to IRQ 11
Region 0: Memory at 31000000 (32-bit, non-prefetchable) [size=256]
Region 1: I/O ports at 5000 [size=fffffd00]
Region 2: Memory at 31000100 (32-bit, non-prefetchable) [size=256]
Region 3: I/O ports at 5000 [size=fffffd00]
When I load the communications driver I added some printk's:
PCI: Enabling device 0000:09:04.0 (0000 -> 0003)
ACPI: PCI interrupt 0000:09:04.0[A] -> GSI 11 (level, low) -> IRQ 11
Memory 31000100
Remap f0820100
Memory 31000000
Remap f0908000
Readl ffffffff
Read ffffffff
Notice that the Memory regions are okay. The call to ioremap in the driver output is indicated with Remap. The Readl and Read are readl and direct pointer reads to the memory. Writing to the registers also does not reach the cards. This driver works fine on normal PCI systems without the expansion.
The output of cardctl info is "" for all PRODIDs and the MANFID is 0000,0000 with a FUNCID=255. The output of cardctl ident is no product info available. The output of cardctl status is:
Socket 0:
no card
Socket 1:
3.3V CardBus card
function 0: [ready]
Any help would be much appreciated.
|