Move just a bit more of the interrupt code to the glue code. It does an and with

the enabled interrupts to check if there's anything of interest. This obviously
couldn't really work when clearing the enabled interrupts in the glue code.
This gets broadcom43xx working for me, tested with a Linksys WMP54GS-EU (PCI).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35060 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz
2010-01-13 22:24:18 +00:00
parent 946325051b
commit 15755741ce
2 changed files with 9 additions and 3 deletions
@@ -1581,9 +1581,6 @@ bwi_intr(void *xsc)
BWI_UNLOCK(sc);
return;
}
#else
intr_status = atomic_get((int32 *)&sc->sc_intr_status);
#endif
DPRINTF(sc, BWI_DBG_INTR, "intr status 0x%08x\n", intr_status);
@@ -1592,6 +1589,9 @@ bwi_intr(void *xsc)
BWI_UNLOCK(sc);
return;
}
#else
intr_status = atomic_get((int32 *)&sc->sc_intr_status);
#endif
KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC,
("current regwin type %d", sc->sc_cur_regwin->rw_type));
@@ -44,6 +44,12 @@ HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
return 0;
}
intr_status &= CSR_READ_4(sc, BWI_MAC_INTR_MASK);
if (intr_status == 0) {
// nothing interesting
return 0;
}
atomic_set((int32*)&sc->sc_intr_status, intr_status);
CSR_CLRBITS_4(sc, BWI_MAC_INTR_MASK, BWI_ALL_INTRS);