summaryrefslogtreecommitdiffstats
path: root/sys/dev/pccbb
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2005-07-15 03:25:22 +0000
committerimp <imp@FreeBSD.org>2005-07-15 03:25:22 +0000
commit7bf1d45c6c3cd910fb036126836044ed0b5659fd (patch)
tree4f511bd2e72093b6e7b46e8b60f542f48b43c06c /sys/dev/pccbb
parentdae3611171de25f1a339938881623ba7af813c19 (diff)
downloadFreeBSD-src-7bf1d45c6c3cd910fb036126836044ed0b5659fd.zip
FreeBSD-src-7bf1d45c6c3cd910fb036126836044ed0b5659fd.tar.gz
Move to using tsleeps in the cardbus reset case as well. This
eliminates the last of the DELAYs in pccbb.
Diffstat (limited to 'sys/dev/pccbb')
-rw-r--r--sys/dev/pccbb/pccbb.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/pccbb/pccbb.c b/sys/dev/pccbb/pccbb.c
index 2614a2e..65c5a98 100644
--- a/sys/dev/pccbb/pccbb.c
+++ b/sys/dev/pccbb/pccbb.c
@@ -893,17 +893,21 @@ cbb_cardbus_reset(device_t brdev)
struct cbb_softc *sc = device_get_softc(brdev);
int delay_us;
- delay_us = sc->chipset == CB_RF5C47X ? 400*1000 : 20*1000;
+ /*
+ * 20ms is necessary for most bridges. For some reason, the Ricoh
+ * RF5C47x bridges need 400ms.
+ */
+ delay = sc->chipset == CB_RF5C47X ? 400 : 20;
PCI_MASK_CONFIG(brdev, CBBR_BRIDGECTRL, |CBBM_BRIDGECTRL_RESET, 2);
- DELAY(delay_us);
+ tsleep(sc, PZERO, "cbbP3", hz * delay / 1000);
/* If a card exists, unreset it! */
if (CBB_CARD_PRESENT(cbb_get(sc, CBB_SOCKET_STATE))) {
PCI_MASK_CONFIG(brdev, CBBR_BRIDGECTRL,
&~CBBM_BRIDGECTRL_RESET, 2);
- DELAY(delay_us);
+ tsleep(sc, PZERO, "cbbP3", hz * delay / 1000);
}
}
OpenPOWER on IntegriCloud