summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2005-10-08 06:57:13 +0000
committerimp <imp@FreeBSD.org>2005-10-08 06:57:13 +0000
commit96e6d186fa3e2680c180658af3d6d757fa1140e7 (patch)
tree82de0384ffdc55857ada13ad220a3fb6ee1382c7 /sys
parent623046a75fbd52505c061fea4b0ea5061cea0f3c (diff)
downloadFreeBSD-src-96e6d186fa3e2680c180658af3d6d757fa1140e7.zip
FreeBSD-src-96e6d186fa3e2680c180658af3d6d757fa1140e7.tar.gz
MFP4: Changes to hopefully make the new power code work better
o Rather than just try to turn off EXCA_INTR_RESET, set the entire register to 0. This is slightly faster, and a better hammer. o Move attempted clearing of the output enable (EXCA_PWRCTL_OE) back to after we turn off the power. Modify it to write 0 so that we don't get Bad Vcc messages on TI bridges (untested, but ru@ sent me a similar patch) while at the same time avoiding interrupt storms on Ricoh bridges (tested by me on my Sony). # Many of my observations of 'breakage' for this patch are due to some bug # in the load/unload of cbb.ko unlreated to this change. I'll be investigating # and fixing that bug in the fullness of time.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pccbb/pccbb.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/pccbb/pccbb.c b/sys/dev/pccbb/pccbb.c
index c94d4e9..9363238 100644
--- a/sys/dev/pccbb/pccbb.c
+++ b/sys/dev/pccbb/pccbb.c
@@ -1269,13 +1269,13 @@ cbb_pcic_power_disable_socket(device_t brdev, device_t child)
DPRINTF(("cbb_pcic_socket_disable\n"));
- /* reset signal asserting... */
- exca_clrb(&sc->exca[0], EXCA_INTR, EXCA_INTR_RESET);
+ /* Turn off the card's interrupt and leave it in reset */
+ exca_putb(&sc->exca[0], EXCA_INTR, 0);
tsleep(sc, PZERO, "cbbP1", hz / 100);
/* power down the socket */
- exca_clrb(&sc->exca[0], EXCA_PWRCTL, EXCA_PWRCTL_OE);
cbb_power(brdev, CARD_OFF);
+ exca_putb(&sc->exca[0], EXCA_PWRCTL, 0);
/* wait 300ms until power fails (Tpf). */
tsleep(sc, PZERO, "cbbP1", hz * 300 / 1000);
OpenPOWER on IntegriCloud