diff options
author | imp <imp@FreeBSD.org> | 2008-08-10 09:55:14 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2008-08-10 09:55:14 +0000 |
commit | cf98a7c55ffaa6995d9b4030294cc7d17da5b51f (patch) | |
tree | 996f83e160d33cf7b962deda8b0b4daa93253679 /sys/dev/pccbb/pccbb.c | |
parent | eefa09e8e9f0c2a49f9ab794445a8c081bf2cdbc (diff) | |
download | FreeBSD-src-cf98a7c55ffaa6995d9b4030294cc7d17da5b51f.zip FreeBSD-src-cf98a7c55ffaa6995d9b4030294cc7d17da5b51f.tar.gz |
Read the config space of the child, not the bridge, to determine when
the child is out of reset... <blush>
Diffstat (limited to 'sys/dev/pccbb/pccbb.c')
-rw-r--r-- | sys/dev/pccbb/pccbb.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/pccbb/pccbb.c b/sys/dev/pccbb/pccbb.c index 71e3c0c..8703ab8 100644 --- a/sys/dev/pccbb/pccbb.c +++ b/sys/dev/pccbb/pccbb.c @@ -158,7 +158,7 @@ SYSCTL_ULONG(_hw_cbb, OID_AUTO, debug, CTLFLAG_RW, &cbb_debug, 0, static void cbb_insert(struct cbb_softc *sc); static void cbb_removal(struct cbb_softc *sc); static uint32_t cbb_detect_voltage(device_t brdev); -static void cbb_cardbus_reset(device_t brdev, int on); +static void cbb_cardbus_reset(device_t brdev, device_t child, int on); static int cbb_cardbus_io_open(device_t brdev, int win, uint32_t start, uint32_t end); static int cbb_cardbus_mem_open(device_t brdev, int win, @@ -927,7 +927,7 @@ cbb_do_power(device_t brdev) /************************************************************************/ static void -cbb_cardbus_reset(device_t brdev, int on) +cbb_cardbus_reset(device_t brdev, device_t child, int on) { struct cbb_softc *sc = device_get_softc(brdev); uint32_t b; @@ -964,7 +964,7 @@ cbb_cardbus_reset(device_t brdev, int on) */ PCI_MASK_CONFIG(brdev, CBBR_BRIDGECTRL, &~CBBM_BRIDGECTRL_RESET, 2); - b = pcib_get_bus(brdev); + b = pcib_get_bus(child); count = 1100 / 20; do { pause("cbbP4", hz * 2 / 100); @@ -987,7 +987,7 @@ cbb_cardbus_power_enable_socket(device_t brdev, device_t child) err = cbb_do_power(brdev); if (err) return (err); - cbb_cardbus_reset(brdev, 1); + cbb_cardbus_reset(brdev, child, 1); return (0); } @@ -995,7 +995,7 @@ static void cbb_cardbus_power_disable_socket(device_t brdev, device_t child) { cbb_power(brdev, CARD_OFF); - cbb_cardbus_reset(brdev, 0); + cbb_cardbus_reset(brdev, child, 0); } /************************************************************************/ |