Subject: Re: no cardbus cards detected with -current on Thinkpad 600E
To: None <port-i386@netbsd.org>
From: Greg Troxel <gdt@ir.bbn.com>
List: port-i386
Date: 11/04/2003 20:12:22
I turned on all the PCIBIOS FIXUP/VERBOSE defines, and also
PCMCIA{CIS,}DEBUG.  There are some 'vcc request' problems, and
1) wi (pcmcia) still gets no response
2) cardbus cards are recognized (or not, depending on drivers), but
initialization fails, with 'bad Vcc' messages.

I found a manual from Sycard Technology:
  http://www.sycard.com/aftp/man460f.pdf
On page 29 (Appendix C1) it discusses some odd power control behavior
of TI PCI12xx chips:

  Texas Instrument's latest series of socket controllers supports a
  serial controlled voltage switch to control the Vcc and Vpp to the PC
  Card socket. Three signal lines, DATA, CLOCK and LATCH are used to
  control the outputs of the voltage switch. On TI s PCI12xx/14xx/44xx
  demo boards, the CLOCK is configured as an output from the socket
  controller. However, in some implementations the CLOCK signal is
  externally generated and is an input to the PCI12xx socket
  controller. A control bit in PCI configuration space address 80H
  called P2CCLK (Bit 27) enables the voltage switch clock output (CLOCK)
  from the CardBus controller chip. CLOCK is derived from the PCI
  clock. In the original PCCtest software, this bit was set to enable
  CLOCK as an output. This was required for the PCI12xx/14xx demo
  boards. Designs that have an externally generated CLOCK will see two
  sources driving the CLOCK signal when running the PCCtest software.

I found a linux patch that seems to fit this theory:

http://pcmcia-cs.sourceforge.net/cgi-bin/HyperNews/get/pcmcia/install/12/1.html?nogifs
and the man page for using a variable to control clock setting:
http://pcmcia-cs.sourceforge.net/man/i82365.4.html

Does anyone have a PCI12xx-based laptop that works with cardbus?

Does it seem plausible that the IBM 600E needs the P2CCLK bit turned
on to work?

Complete 'boot -v' dmesg of kernel with all the debug/verbose options,
annotated with what cards I inserted, followed by pcictl dump of the
bridge.

NetBSD 1.6ZE (ANCHO) #4: Tue Nov  4 18:58:33 EST 2003
	gdt@ancho.ir.bbn.com:/usr/src/sys/arch/i386/compile/ANCHO
total memory = 191 MB
avail memory = 173 MB
using 2475 buffers containing 9900 KB of memory
BIOS32 rev. 0 found at 0xfd820
PCI BIOS rev. 2.1 found at 0xfd880
pcibios: config mechanism [1][x], special cycles [1][x], last bus 7
PCI IRQ Routing Table rev. 1.0 found at 0xf9e20, size 112 bytes (5 entries)
PCI Interrupt Router at 000:07:0
PCI Exclusive IRQs: 11
PIR Entry 0:
	Bus: 0  Device: 7
		INTA: link 0x60 bitmap 0xdef8
		INTB: link 0x00 bitmap 0x0000
		INTC: link 0x00 bitmap 0x0000
		INTD: link 0x63 bitmap 0xdef8
PIR Entry 1:
	Bus: 0  Device: 2
		INTA: link 0x60 bitmap 0xdef8
		INTB: link 0x61 bitmap 0xdef8
		INTC: link 0x00 bitmap 0x0000
		INTD: link 0x00 bitmap 0x0000
PIR Entry 2:
	Bus: 1  Device: 0
		INTA: link 0x60 bitmap 0xdef8
		INTB: link 0x00 bitmap 0x0000
		INTC: link 0x00 bitmap 0x0000
		INTD: link 0x00 bitmap 0x0000
PIR Entry 3:
	Bus: 0  Device: 4
		INTA: link 0x60 bitmap 0xdef8
		INTB: link 0x61 bitmap 0xdef8
		INTC: link 0x62 bitmap 0xdef8
		INTD: link 0x63 bitmap 0xdef8
PIR Entry 4:
	Bus: 0  Device: 6
		INTA: link 0x60 bitmap 0xdef8
		INTB: link 0x00 bitmap 0x0000
		INTC: link 0x00 bitmap 0x0000
		INTD: link 0x00 bitmap 0x0000
pciintr_link_fixup: PIRQ 0x00 already connected to IRQ 11
pciintr_link_fixup: PIRQ 0x03 already connected to IRQ 11
pciintr_link_fixup: PIRQ 0x01 already connected to IRQ 11
pciintr_link_fixup: PIRQ 0x02 not connected
pciintr_link_fixup (stage 2): assigning IRQ 11 to PIRQ 0x02
pciintr_link_route: route of PIRQ 0x00 -> IRQ 11 preserved BIOS setting
pciintr_link_route: route of PIRQ 0x03 -> IRQ 11 preserved BIOS setting
pciintr_link_route: route of PIRQ 0x01 -> IRQ 11 preserved BIOS setting
------------------------------------------
  device vendor product pin PIRQ IRQ stage
------------------------------------------
000:02:0 0x104c 0xac1d   A  0x00  11  0    already assigned
000:02:1 0x104c 0xac1d   B  0x01  11  0    already assigned
000:06:0 0x1013 0x6001   A  0x00  11  0    already assigned
000:07:2 0x8086 0x7112   D  0x03  11  0    already assigned
001:00:0 0x10c8 0x0005   A  0x00  11  0    already assigned
------------------------------------------
PCI fixup examining 8086:7190
PCI fixup examining 8086:7191
PCI fixup examining 10c8:05
PCI bridge 0: primary 0, secondary 1, subordinate 1
PCI fixup examining 104c:ac1d
PCI bridge 1: primary 0, secondary 2, subordinate 2
PCI fixup examining 104c:ac1d
PCI bridge 2: primary 0, secondary 3, subordinate 3
PCI fixup examining 1013:6001
PCI fixup examining 8086:7110
PCI fixup examining 8086:7111
PCI fixup examining 8086:7112
PCI fixup examining 8086:7113
PCI bus #3 is the last bus
[System BIOS Setting]-----------------------
  device vendor product
  register space address    size
--------------------------------------------
000:00:0 0x8086 0x7190 
	10h mem  0x40000000 0x04000000
		[OK]
000:01:0 0x8086 0x7191 
		[OK]
000:02:0 0x104c 0xac1d 
	10h mem  0x50102000 0x00001000
		[OK]
000:02:1 0x104c 0xac1d 
	10h mem  0x50101000 0x00001000
		[OK]
000:06:0 0x1013 0x6001 
	10h mem  0x50100000 0x00001000
	14h mem  0x50000000 0x00100000
		[OK]
000:07:0 0x8086 0x7110 
		[OK]
000:07:1 0x8086 0x7111 
	20h port 0x0000fcf0 0x00000010
		[OK]
000:07:2 0x8086 0x7112 
	20h port 0x00008400 0x00000020
		[OK]
000:07:3 0x8086 0x7113 
		[OK]
001:00:0 0x10c8 0x0005 
	10h mem  0xe0000000 0x01000000
	14h mem  0x70000000 0x00400000
	18h mem  0x70400000 0x00100000
		[OK]
--------------------------[  0 devices bogus]
 Physical memory end: 0x0bfcc000
 PCI memory mapped I/O space start: 0x0c000000
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: Intel Mobile Pentium II (686-class), 363.98 MHz, id 0x66a
cpu0: features 183f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>
cpu0: features 183f9ff<PGE,MCA,CMOV,PAT,PSE36,MMX>
cpu0: features 183f9ff<FXSR>
cpu0: I-cache 16 KB 32b/line 4-way, D-cache 16 KB 32b/line 4-way
cpu0: L2 cache 256 KB 32b/line 4-way
cpu0: ITLB 32 4 KB entries 4-way, 2 4 MB entries fully associative
cpu0: DTLB 64 4 KB entries 4-way, 8 4 MB entries 4-way
cpu0: 16 page colors
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: Intel 82443BX Host Bridge/Controller (rev. 0x03)
agp0 at pchb0: aperture at 0x40000000, size 0x4000000
ppb0 at pci0 dev 1 function 0: Intel 82443BX AGP Interface (rev. 0x03)
pci1 at ppb0 bus 1
pci1: i/o space, memory space enabled
vga1 at pci1 dev 0 function 0: Neomagic MagicMedia 256AV VGA (rev. 0x20)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
cbb0 at pci0 dev 2 function 0: Texas Instruments PCI1251 PCI-CardBus Bridge (rev. 0x00)
cbb1 at pci0 dev 2 function 1: Texas Instruments PCI1251 PCI-CardBus Bridge (rev. 0x00)
Cirrus Logic CS4610 SoundFusion Audio Accelerator (audio multimedia, revision 0x01) at pci0 dev 6 function 0 not configured
pcib0 at pci0 dev 7 function 0
pcib0: Intel 82371AB PCI-to-ISA Bridge (PIIX4) (rev. 0x02)
pciide0 at pci0 dev 7 function 1
pciide0: Intel 82371AB IDE controller (PIIX4) (rev. 0x01)
pciide0: bus-master DMA support present, but unused (no driver support)
pciide0: primary channel wired to compatibility mode
pciide0: primary channel interrupting at irq 14
atabus0 at pciide0 channel 0
pciide0: secondary channel wired to compatibility mode
pciide0: secondary channel interrupting at irq 15
atabus1 at pciide0 channel 1
pciide0: secondary channel ignored (not responding; disabled or no drives?)
uhci0 at pci0 dev 7 function 2: Intel 82371AB USB Host Controller (PIIX4) (rev. 0x01)
uhci0: interrupting at irq 11
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
Intel 82371AB Power Management Controller (PIIX4) (miscellaneous bridge, revision 0x02) at pci0 dev 7 function 3 not configured
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000386
cbb0: interrupting at irq 11
cbb0: cacheline 0x8 lattimer 0xb0
cbb0: bhlc 0x82a808 lscp 0xb0020200
cardslot0 at cbb0 slot 0 flags 0
cardbus0 at cardslot0: bus 2 device 0 cacheline 0x8, lattimer 0xb0
pcmcia0 at cardslot0
cbb1: interrupting at irq 11
cbb1: cacheline 0x8 lattimer 0xb0
cbb1: bhlc 0x82a808 lscp 0xb0030300
cardslot1 at cbb1 slot 1 flags 0
cardbus1 at cardslot1: bus 3 device 0 cacheline 0x8, lattimer 0xb0
pcmcia1 at cardslot1
isa0 at pcib0
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
pckbc0 at isa0 port 0x60-0x64
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
lpt2 at isa0 port 0x3bc-0x3bf irq : polled
sb0 at isa0 port 0x220-0x237 irq 5 drq 1: dsp v3.02
audio0 at sb0: half duplex, mmap, independent
opl at sb0 not configured
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
sysbeep0 at pcppi0
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
npx0 at isa0 port 0xf0-0xff: using exception 16
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
isapnp0: no ISA Plug 'n Play devices found
apm0 at mainbus0: Power Management spec V1.2
Kernelized RAIDframe activated
IPsec: Initialized Security Association Processing.
wd0 at atabus0 drive 0: <IBM-DJSA-230>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 28615 MB, 58140 cyl, 16 head, 63 sec, 512 bytes/sect x 58605120 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
boot device: wd0
root on wd0a dumps on wd0b
root file system type: ffs
IP Filter: v3.4.29 initialized.  Default = pass all, Logging = enabled
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)

[DLINK DWL-650 FCC ID KA22002060009-1]
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000710
cbb0: bad Vcc request. sock_ctrl 0x22, sock_status 0x30000710
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000710
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000710
cbb0: bad Vcc request. sock_ctrl 0x30, sock_status 0x30000b20
(manufacturer 0x0, product 0x0) Realtek Semiconductor product 0x8180 (ethernet network, revision 0x20) at cardbus0 dev 0 function 0 not configured
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000b68

[Dlink DWL-AG650]
cbb0: bad Vcc request. sock_ctrl 0x30, sock_status 0x30000b20
ath0 at cardbus0 dev 0 function 0ath0: waking up from power state D-973062144
ath_hal_wait: timeout on reg 0x4000: 0xf000f902 & 0x00000003 != 0x00000003
ath0: unable to attach hardware; HAL status 3
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000b69
ath0 detached
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000326

[Proxim 8480-WD]
cbb0: bad Vcc request. sock_ctrl 0x30, sock_status 0x30000b20
ath0 at cardbus0 dev 0 function 0ath0: waking up from power state D-973062144
ath_hal_wait: timeout on reg 0x4000: 0xf000f902 & 0x00000003 != 0x00000003
ath0: unable to attach hardware; HAL status 3
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000b69
ath0 detached
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000326

[Netgear WAG511]
cbb0: bad Vcc request. sock_ctrl 0x30, sock_status 0x30000b20
ath0 at cardbus0 dev 0 function 0ath0: waking up from power state D-973062144
ath_hal_wait: timeout on reg 0x4000: 0xf000f902 & 0x00000003 != 0x00000003
ath0: unable to attach hardware; HAL status 3
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000b69
ath0 detached
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000326
cbb0: bad Vcc request. sock_ctrl 0x30, sock_status 0x30000b20

[Linksys WPC55AG]
ath0 at cardbus0 dev 0 function 0ath0: waking up from power state D-973062144
ath_hal_wait: timeout on reg 0x4000: 0xf000f902 & 0x00000003 != 0x00000003
ath0: unable to attach hardware; HAL status 3
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000b69
ath0 detached
cbb0: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000326


PCI configuration registers:
  Common header:
    0x00: 0xac1d104c 0x02100007 0x06070000 0x0082a808

    Vendor Name: Texas Instruments (0x104c)
    Device Name: PCI1251 PCI-CardBus Bridge (0xac1d)
    Command register: 0x0007
      I/O space accesses: on
      Memory space accesses: on
      Bus mastering: on
      Special cycles: off
      MWI transactions: off
      Palette snooping: off
      Parity error checking: off
      Address/data stepping: off
      System error (SERR): off
      Fast back-to-back transactions: off
    Status register: 0x0210
      Capability List support: on
      66 MHz capable: off
      User Definable Features (UDF) support: off
      Fast back-to-back capable: off
      Data parity error detected: off
      DEVSEL timing: medium (0x1)
      Slave signaled Target Abort: off
      Master received Target Abort: off
      Master received Master Abort: off
      Asserted System Error (SERR): off
      Parity error detected: off
    Class Name: bridge (0x06)
    Subclass Name: CardBus (0x07)
    Interface: 0x00
    Revision ID: 0x00
    BIST: 0x00
    Header Type: 0x02+multifunction (0x82)
    Latency Timer: 0xa8
    Cache Line Size: 0x08

  Type 2 (PCI-CardBus bridge) header:
    0x10: 0x50102000 0x020000a0 0xb0040200 0x00000000
    0x20: 0x00000000 0x00000000 0x00000000 0x00000000
    0x30: 0x00000000 0x00000000 0x00000000 0x03c0010b
    0x40: 0x00eb1014 0x000003e1

    Base address register at 0x10 (CardBus socket/ExCA registers)
      type: 32-bit nonprefetchable memory
      base: 0x50102000, not sized
    Capability list pointer: 0xa0
    Secondary status register: 0x0200
      66 MHz capable: off
      User Definable Features (UDF) support: off
      Fast back-to-back capable: off
      Data parity error detection: off
      DEVSEL timing: medium (0x1)
      PCI target aborts terminate CardBus bus master transactions: off
      CardBus target aborts terminate PCI bus master transactions: off
      Bus initiator aborts terminate initiator transactions: off
      System error: off
      Parity error: off
    PCI bus number: 0x00
    CardBus bus number: 0x02
    Subordinate bus number: 0x04
    CardBus latency timer: 0xb0
    CardBus memory region 0:
      base register:  0x00000000
      limit register: 0x00000000
    CardBus memory region 1:
      base register:  0x00000000
      limit register: 0x00000000
    CardBus I/O region 0:
      base register:  0x00000000
      limit register: 0x00000000
    CardBus I/O region 1:
      base register:  0x00000000
      limit register: 0x00000000
    Interrupt line: 0x0b
    Interrupt pin: 0x01 (pin A)
    Bridge control register: 0x03c0
      Parity error response: off
      CardBus SERR forwarding: off
      ISA enable: off
      VGA enable: off
      CardBus master abort reporting: off
      CardBus reset: on
      Functional interrupts routed by ExCA registers: on
      Memory window 0 prefetchable: on
      Memory window 1 prefetchable: on
      Write posting enable: off
    Subsystem vendor ID: 0x1014
    Subsystem ID: 0x00eb
    Base address register at 0x44 (legacy-mode registers)
      type: i/o
      base: 0x000003e0, not sized

  Capability register at 0xa0
    type: 0x01 (Power Management, rev. 1.0)

  Device-dependent header:
    0x48: 0x00000000 0x00000000
    0x50: 0x00000000 0x00000000 0x00000000 0x00000000
    0x60: 0x00000000 0x00000000 0x00000000 0x00000000
    0x70: 0x00000000 0x00000000 0x00000000 0x00000000
    0x80: 0x0044b060 0x00000000 0x01818948 0xfba97543
    0x90: 0x606283c0 0x00000000 0x00000000 0x00000000
    0xa0: 0x7e210001 0x00808000 0x00000000 0x00000000
    0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xc0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xd0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xe0: 0x00000000 0x00000000 0x00000000 0x00000000
    0xf0: 0x00000000 0x00000000 0x00000000 0x00000000

-- 
        Greg Troxel <gdt@ir.bbn.com>