* 2.4.21-rc6-ac1 PCMCIA: Cardbus bridge behind transparent P2P bridge
@ 2003-06-04 6:42 Shashi Rao
0 siblings, 0 replies; only message in thread
From: Shashi Rao @ 2003-06-04 6:42 UTC (permalink / raw)
To: linux-kernel
Hi
Both in-kernel and standalone PCMCIA stopped working on my laptop with 2.4.20
and above. I have a fix for it, but dont quite understand why/how it works.
My report focuses on the in-kernel PCMCIA support, yenta.c etc, compiled as
modules.
Hardware: Sony Vaio PCG-R505DS, an ACPI-only laptop with a builtin Orinoco
PC-card behind a TI PCI1410 cardbus bridge, and another unpopulated external
socket behind a Ricoh RL5c475 bridge. Both these cardbus bridges live behind
a "hub-to-pci" 82801BAM.
lspci -vt yields:
-[00]-+-00.0 Intel Corp. 82830 830 Chipset Host Bridge
+-02.0 Intel Corp. 82830 CGC [Chipset Graphics Controller]
+-02.1 Intel Corp. 82830 CGC [Chipset Graphics Controller]
+-1d.0 Intel Corp. 82801CA/CAM USB (Hub #1)
+-1d.1 Intel Corp. 82801CA/CAM USB (Hub #2)
+-1d.2 Intel Corp. 82801CA/CAM USB (Hub #3)
+-1e.0-[02]--+-02.0 Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
| +-05.0 Ricoh Co Ltd RL5c475
| +-08.0 Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
| \-0b.0 Texas Instruments PCI1410 PC card Cardbus Controller
+-1f.0 Intel Corp. 82801CAM ISA Bridge (LPC)
+-1f.1 Intel Corp. 82801CAM IDE U100
+-1f.3 Intel Corp. 82801CA/CAM SMBus
+-1f.5 Intel Corp. 82801CA/CAM AC'97 Audio
\-1f.6 Intel Corp. 82801CA/CAM AC'97 Modem
Data from a "clean" 2.4.21-rc6-ac1 boot:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/proc/iomem
00000000-0009dfff : System RAM
0009e000-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000d8000-000dffff : reserved
000e0000-000e0fff : card services
000f0000-000fffff : System ROM
00100000-27ceffff : System RAM
00100000-0022aebe : Kernel code
0022aebf-002a985f : Kernel data
27cf0000-27cfbfff : ACPI Tables
27cfc000-27cfffff : ACPI Non-volatile Storage
27d00000-27e7ffff : System RAM
27f00000-27f00fff : Ricoh Co Ltd RL5c475
27f01000-27f01fff : Texas Instruments PCI1410 PC card Cardbus Controller
28000000-283fffff : PCI CardBus #03
28400000-287fffff : PCI CardBus #03
28800000-28bfffff : PCI CardBus #07
28c00000-28ffffff : PCI CardBus #07
e0000000-e007ffff : Intel Corp. 82830 CGC [Chipset Graphics Controller]
e0000000-e007ffff : intelfb
e0080000-e00fffff : Intel Corp. 82830 CGC [Chipset Graphics Controller] (#2)
e0100000-e01003ff : Intel Corp. 82801CAM IDE U100
e0200000-e0203fff : Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
e0204000-e0204fff : Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
e0204000-e0204fff : eepro100
e0205000-e02057ff : Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
e0205000-e02057ff : ohci1394
e8000000-efffffff : Intel Corp. 82830 CGC [Chipset Graphics Controller]
e8000000-efffffff : intelfb
f0000000-f7ffffff : Intel Corp. 82830 CGC [Chipset Graphics Controller] (#2)
lspci -vvxxx -s 2:b.0
02:0b.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 01)
Subsystem: Lucent Technologies: Unknown device ab01
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 9
Region 0: Memory at 27f01000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176
Memory window 0: 28800000-28bff000 (prefetchable)
Memory window 1: 28c00000-28fff000
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
00: 4c 10 50 ac 07 00 10 02 01 00 07 06 08 a8 02 00
10: 00 10 f0 27 a0 00 00 02 02 07 0a b0 00 00 80 28
20: 00 f0 bf 28 00 00 c0 28 00 f0 ff 28 00 48 00 00
30: fc 48 00 00 00 4c 00 00 fc 4c 00 00 ff 01 c0 05
40: a3 12 01 ab 01 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 60 90 44 00 00 00 00 00 00 00 00 00 22 00 00 01
90: c0 00 60 61 00 00 00 00 00 00 00 00 00 00 00 00
a0: 01 00 11 fe 00 00 c0 00 0e 08 00 00 1b 00 00 00
b0: 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Here is a patch that refuses to view the 82801BAM as a subtractive decoding
agent (Before 2.4.20, this bridge was treated as a non-transparent positive
decoding bridge). This restores PCMCIA functionality on both the cardbus
bridges.
diff -u --new-file --recursive linux.21rc6-ac1-clean/arch/i386/kernel/pci-pc.c linux.21rc6-ac1-patched/arch/i386/kernel/pci-pc.c
--- linux.21rc6-ac1-clean/arch/i386/kernel/pci-pc.c Tue Jun 3 22:26:40 2003
+++ linux.21rc6-ac1-patched/arch/i386/kernel/pci-pc.c Tue Jun 3 22:29:12 2003
@@ -1341,7 +1341,7 @@
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_northbridge_bug },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_northbridge_bug },
{ PCI_FIXUP_HEADER, PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, pci_fixup_ncr53c810 },
- { PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_fixup_transparent_bridge },
+/* { PCI_FIXUP_HEADER, PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_fixup_transparent_bridge }, */
{ 0 }
};
Here are the data from the corresponding [successful] boot:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/proc/iomem
00000000-0009e7ff : System RAM
0009e800-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000dc000-000dffff : Extension ROM
000f0000-000fffff : System ROM
00100000-27ceffff : System RAM
00100000-0022aebe : Kernel code
0022aebf-002a985f : Kernel data
27cf0000-27cfbfff : ACPI Tables
27cfc000-27cfffff : ACPI Non-volatile Storage
27d00000-27e7ffff : System RAM
e0000000-e007ffff : Intel Corp. 82830 CGC [Chipset Graphics Controller]
e0000000-e007ffff : intelfb
e0080000-e00fffff : Intel Corp. 82830 CGC [Chipset Graphics Controller] (#2)
e0100000-e01003ff : Intel Corp. 82801CAM IDE U100
e0200000-e02fffff : PCI Bus #02
e0200000-e0203fff : Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
e0204000-e0204fff : Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
e0204000-e0204fff : eepro100
e0205000-e02057ff : Texas Instruments TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
e0205000-e02057ff : ohci1394
e0206000-e0206fff : Ricoh Co Ltd RL5c475
e0207000-e0207fff : Texas Instruments PCI1410 PC card Cardbus Controller
e0220000-e023ffff : PCI CardBus #03
e0240000-e025ffff : PCI CardBus #03
e0260000-e027ffff : PCI CardBus #07
e0280000-e029ffff : PCI CardBus #07
e8000000-efffffff : Intel Corp. 82830 CGC [Chipset Graphics Controller]
e8000000-efffffff : intelfb
f0000000-f7ffffff : Intel Corp. 82830 CGC [Chipset Graphics Controller] (#2)
fabfd000-fabfdfff : card services
lspci -vvxxx -s 2:b.0
02:0b.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 01)
Subsystem: Lucent Technologies: Unknown device ab01
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 9
Region 0: Memory at e0207000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=02, secondary=07, subordinate=0a, sec-latency=176
Memory window 0: e0260000-e027f000 (prefetchable)
Memory window 1: e0280000-e029f000
I/O window 0: 00000000-00000003
I/O window 1: 00000000-00000003
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt- PostWrite+
16-bit legacy interface ports at 0001
00: 4c 10 50 ac 07 00 10 02 01 00 07 06 08 a8 02 00
10: 00 70 20 e0 a0 00 00 02 02 07 0a b0 00 00 26 e0
20: 00 f0 27 e0 00 00 28 e0 00 f0 29 e0 00 00 00 00
30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 40 05
40: a3 12 01 ab 01 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 60 b0 44 00 00 00 00 00 00 00 00 00 22 00 00 01
90: c0 00 60 61 00 00 00 00 00 00 00 00 00 00 00 00
a0: 01 00 11 fe 00 00 c0 00 0e 08 00 00 1b 00 00 00
b0: 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Some differences/points of note for the TI bridge:
a) Manfred Spraul's adaptive resource allocation is in effect
b) The CB_BRIDGE_CONTROL register's INTR bit changes value [offset 0x3e, bit 7]
c) I/O windows didnt get assigned after the patch
Also, my firewire DVD/CDRW drive, which lives behind the 82801 as well, works
fine both before and after the patch. I'd be happy to provide more
information.
Hmm.
Cheers,
Shashi
--
Shashi Rao, skrao@users.sourceforge.net
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2003-06-04 6:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-06-04 6:42 2.4.21-rc6-ac1 PCMCIA: Cardbus bridge behind transparent P2P bridge Shashi Rao
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.