diff options
author | imp <imp@FreeBSD.org> | 2005-07-15 03:25:22 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2005-07-15 03:25:22 +0000 |
commit | 7bf1d45c6c3cd910fb036126836044ed0b5659fd (patch) | |
tree | 4f511bd2e72093b6e7b46e8b60f542f48b43c06c /sys/dev/pccbb | |
parent | dae3611171de25f1a339938881623ba7af813c19 (diff) | |
download | FreeBSD-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.c | 10 |
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); } } |