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

View File

@ -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));

View File

@ -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);