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:
parent
946325051b
commit
15755741ce
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user