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
>Organization:
>Environment:
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
>Description:
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.
>How-To-Repeat:
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"
shutdown.
>Fix:
The following patch to dev/pci/pccbb.c (adapted from a patch posted to
port-i386%netbsd.org@localhost by Xning Lee on 2006/12/11 addressing a similar
problem
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