NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/38298: TI1131 CardBus controller "bad Vcc request" error

>Number:         38298
>Category:       kern
>Synopsis:       TI1131 CardBus controller "bad Vcc request" error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 26 00:35:00 +0000 2008
>Originator:     Scott Telford
>Release:        NetBSD 4.0
System: NetBSD slartibartfast 4.0 NetBSD 4.0 (SLARTIBARTFAST) #1: Tue Mar 11 
11:28:41 GMT 2008 
st@slartibartfast:/usr/src/sys/arch/i386/compile/SLARTIBARTFAST i386
Architecture: i386
Machine: i386
Booting the NetBSD/i386 4.0 GENERIC_LAPTOP kernel on a DEC HiNote VP710 laptop
with a TI1131 CardBus controller sometimes, but not always, (usually after a
"halt -p") results in error messages similar to the following when a CardBus
or PCMCIA card is present or is inserted:

cbb1: bad Vcc request. sock_ctrl 0x0, sock_status 0x30000710
cbb1: disabling socket
new status 0x30000710
cbb1: bad Vcc request. sock_ctrl 0x22, sock_status 0x30000719
cbb1: disabling socket

The sock_ctrl and sock_status values vary: I have also seen 0x30 for sock_ctrl
and 0x30000306, 0x30000a20 or 0x30000a68 for sock_status. The kernel appears to
hang after the messages and Ctrl-Alt-Esc fails to invoke DDB.

Boot NetBSD/i386 4.0 GENERIC_LAPTOP kernel on DEC HiNote VP710 (or other 
system with TI1131?) with CardBus or PCMCIA card inserted after a "halt -p"

The following patch to dev/pci/pccbb.c (adapted from a patch posted to by Xning Lee on 2006/12/11 addressing a similar 
with another CardBus controller) appears to fix the problem (tested with a 3Com
3C575CT CardBus card and a Xircom Ethernet 10/100 PCMCIA card).

--- pccbb.c     2008/02/03 22:33:37     1.1
+++ pccbb.c     2008/02/03 22:36:32
@@ -881,6 +881,10 @@
        bus_space_write_1(bmt, bmh, 0x800 + PCIC_INTR,
            bus_space_read_1(bmt, bmh, 0x800 + PCIC_INTR) & ~PCIC_INTR_RESET);
+       /* Redo card voltage interrogation */
+       if (bus_space_read_4(bmt, bmh, CB_SOCKET_STAT) & CB_SOCKET_STAT_BADVCC)
+               bus_space_write_4(bmt, bmh, CB_SOCKET_FORCE, 0x00004000);
        /* turn off power */
        pccbb_power((cardbus_chipset_tag_t)sc, CARDBUS_VCC_0V | CARDBUS_VPP_0V);

Home | Main Index | Thread Index | Old Index