The CD bits in the CBB_SOCKET_STATE register are 0 when the card is
present, and non-zero when it is (or may be) absent. The test cbb_child_present was backwards. However, typical usage in the tree would cause it to do the right thing because the card really wasn't there the OK flag would be turned on. Also, assume that if any of these bits are turned on we don't have a card, rather than requiring both of them in the suspend/resume routines. Noticed by: cognet
This commit is contained in:
parent
6a4b58230c
commit
f2d72e24b3
@ -1376,8 +1376,7 @@ cbb_cardbus_power_enable_socket(device_t brdev, device_t child)
|
||||
struct cbb_softc *sc = device_get_softc(brdev);
|
||||
int err;
|
||||
|
||||
if ((cbb_get(sc, CBB_SOCKET_STATE) & CBB_STATE_CD) ==
|
||||
CBB_STATE_CD)
|
||||
if ((cbb_get(sc, CBB_SOCKET_STATE) & CBB_STATE_CD) != 0)
|
||||
return (ENODEV);
|
||||
|
||||
err = cbb_do_power(brdev);
|
||||
@ -2027,8 +2026,8 @@ cbb_child_present(device_t self)
|
||||
uint32_t sockstate;
|
||||
|
||||
sockstate = cbb_get(sc, CBB_SOCKET_STATE);
|
||||
return ((sockstate & CBB_STATE_CD) != 0 &&
|
||||
(sc->flags & CBB_CARD_OK) != 0);
|
||||
return ((sockstate & CBB_STATE_CD) == 0 &&
|
||||
(sc->flags & CBB_CARD_OK) == CBB_CARD_OK);
|
||||
}
|
||||
|
||||
static device_method_t cbb_methods[] = {
|
||||
|
Loading…
Reference in New Issue
Block a user