svn commit: r185622 - head/sys/dev/pccbb
Warner Losh
imp at FreeBSD.org
Thu Dec 4 20:43:26 PST 2008
Author: imp
Date: Fri Dec 5 04:43:25 2008
New Revision: 185622
URL: http://svn.freebsd.org/changeset/base/185622
Log:
Implement a method described in NetBSD PR 36652 for coping with the
BAD VCC bit.
Modified:
head/sys/dev/pccbb/pccbb.c
Modified: head/sys/dev/pccbb/pccbb.c
==============================================================================
--- head/sys/dev/pccbb/pccbb.c Fri Dec 5 00:01:34 2008 (r185621)
+++ head/sys/dev/pccbb/pccbb.c Fri Dec 5 04:43:25 2008 (r185622)
@@ -837,7 +837,18 @@ cbb_power(device_t brdev, int volts)
}
if (status & CBB_STATE_BAD_VCC_REQ) {
device_printf(sc->dev, "Bad Vcc requested\n");
- /* XXX Do we want to do something to mitigate things here? */
+ /*
+ * Turn off the power, and try again. Retrigger other
+ * active interrupts via force register. From NetBSD
+ * PR 36652, coded by me to description there.
+ */
+ sock_ctrl &= ~CBB_SOCKET_CTRL_VCCMASK;
+ sock_ctrl &= ~CBB_SOCKET_CTRL_VPPMASK;
+ cbb_set(sc, CBB_SOCKET_CONTROL, sock_ctrl);
+ status &= ~CBB_STATE_BAD_VCC_REQ;
+ status &= ~CBB_STATE_DATA_LOST;
+ status |= CBB_FORCE_CV_TEST;
+ cbb_set(sc, CBB_SOCKET_FORCE, status);
goto done;
}
if (sc->chipset == CB_TOPIC97) {
More information about the svn-src-all
mailing list