aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pccbb/pccbb.c
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2005-10-08 06:57:13 +0000
committerWarner Losh <imp@FreeBSD.org>2005-10-08 06:57:13 +0000
commitf481fa4d29a82b438c376ec3af7ff4026bbf7447 (patch)
tree82de0384ffdc55857ada13ad220a3fb6ee1382c7 /sys/dev/pccbb/pccbb.c
parentf1abc0ea53816bebd3aa3ee85f5fd8456825d73f (diff)
downloadsrc-f481fa4d29a82b438c376ec3af7ff4026bbf7447.tar.gz
src-f481fa4d29a82b438c376ec3af7ff4026bbf7447.zip
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.
Notes
Notes: svn path=/head/; revision=151080
Diffstat (limited to 'sys/dev/pccbb/pccbb.c')
-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 c94d4e9406e8..9363238d6937 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);