1#include <sys/bus.h>
2#include <sys/mutex.h>
3#include <sys/systm.h>
4#include <sys/taskqueue.h>
5
6#include <machine/bus.h>
7
8#include <dev/rl/if_rlreg.h>
9
10HAIKU_FBSD_DRIVER_GLUE(rtl8139, rl, pci);
11HAIKU_FBSD_MII_DRIVER(rlphy);
12HAIKU_DRIVER_REQUIREMENTS(0);
13
14
15int
16HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
17{
18	struct rl_softc *sc = device_get_softc(dev);
19	uint16_t status;
20
21	status = CSR_READ_2(sc, RL_ISR);
22	if (status == 0xffff)
23		return 0;
24	if (status != 0 && (status & RL_INTRS) == 0) {
25		CSR_WRITE_2(sc, RL_ISR, status);
26		return 0;
27	}
28	if ((status & RL_INTRS) == 0)
29		return 0;
30
31	CSR_WRITE_2(sc, RL_IMR, 0);
32	return 1;
33}
34
35
36void
37HAIKU_REENABLE_INTERRUPTS(device_t dev)
38{
39	struct rl_softc *sc = device_get_softc(dev);
40	RL_LOCK(sc);
41	CSR_WRITE_2(sc, RL_IMR, RL_INTRS);
42	RL_UNLOCK(sc);
43}
44