pcnet: only disable interrupts, without acknowledging them.
* related bug #10088.
This commit is contained in:
@@ -8,39 +8,11 @@
|
|||||||
|
|
||||||
#include <dev/pcn/if_pcnreg.h>
|
#include <dev/pcn/if_pcnreg.h>
|
||||||
|
|
||||||
#define PCN_CSR_SETBIT(sc, reg, x) \
|
|
||||||
pcn_csr_write(sc, reg, pcn_csr_read(sc, reg) | (x))
|
|
||||||
|
|
||||||
#define PCN_CSR_CLRBIT(sc, reg, x) \
|
|
||||||
pcn_csr_write(sc, reg, pcn_csr_read(sc, reg) & ~(x))
|
|
||||||
|
|
||||||
|
|
||||||
int check_disable_interrupts_pcn(device_t dev);
|
int check_disable_interrupts_pcn(device_t dev);
|
||||||
void reenable_interrupts_pcn(device_t dev);
|
void reenable_interrupts_pcn(device_t dev);
|
||||||
|
|
||||||
|
|
||||||
static u_int32_t
|
|
||||||
pcn_csr_read(sc, reg)
|
|
||||||
struct pcn_softc *sc;
|
|
||||||
int reg;
|
|
||||||
{
|
|
||||||
CSR_WRITE_4(sc, PCN_IO32_RAP, reg);
|
|
||||||
return(CSR_READ_4(sc, PCN_IO32_RDP));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
pcn_csr_write(sc, reg, val)
|
|
||||||
struct pcn_softc *sc;
|
|
||||||
int reg;
|
|
||||||
int val;
|
|
||||||
{
|
|
||||||
CSR_WRITE_4(sc, PCN_IO32_RAP, reg);
|
|
||||||
CSR_WRITE_4(sc, PCN_IO32_RDP, val);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
check_disable_interrupts_pcn(device_t dev)
|
check_disable_interrupts_pcn(device_t dev)
|
||||||
{
|
{
|
||||||
@@ -60,8 +32,8 @@ check_disable_interrupts_pcn(device_t dev)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set the new flags, disable interrupts */
|
/* disable interrupts */
|
||||||
PCN_CSR_CLRBIT(sc, PCN_CSR_CSR, PCN_CSR_INTEN);
|
CSR_WRITE_4(sc, PCN_IO32_RDP, 0);
|
||||||
|
|
||||||
HAIKU_INTR_REGISTER_LEAVE();
|
HAIKU_INTR_REGISTER_LEAVE();
|
||||||
|
|
||||||
@@ -73,5 +45,6 @@ void
|
|||||||
reenable_interrupts_pcn(device_t dev)
|
reenable_interrupts_pcn(device_t dev)
|
||||||
{
|
{
|
||||||
struct pcn_softc *sc = device_get_softc(dev);
|
struct pcn_softc *sc = device_get_softc(dev);
|
||||||
PCN_CSR_SETBIT(sc, PCN_CSR_CSR, PCN_CSR_INTEN);
|
CSR_WRITE_4(sc, PCN_IO32_RAP, PCN_CSR_CSR);
|
||||||
|
CSR_WRITE_4(sc, PCN_IO32_RDP, PCN_CSR_INTEN);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user