Cleaned up some debugging stuff.

Redid interrupt handler to read imr/isr once and to write the imr once.
This commit is contained in:
Joel Sherrill
1998-08-13 16:20:14 +00:00
parent 70502bc4c5
commit 1253f39fd5

View File

@@ -1,4 +1,3 @@
void break_when_you_get_here();
/* /*
******************************************************************* *******************************************************************
******************************************************************* *******************************************************************
@@ -56,12 +55,7 @@ void break_when_you_get_here();
#define SONIC_DEBUG_DESCRIPTORS 0x0010 #define SONIC_DEBUG_DESCRIPTORS 0x0010
#define SONIC_DEBUG_ERRORS 0x0020 #define SONIC_DEBUG_ERRORS 0x0020
#define SONIC_DEBUG (SONIC_DEBUG_ERRORS) #define SONIC_DEBUG (SONIC_DEBUG_NONE)
/* (SONIC_DEBUG_MEMORY|SONIC_DEBUG_DESCRIPTORS) */
/* SONIC_DEBUG_ALL */
/* /*
* XXX * XXX
@@ -131,7 +125,7 @@ void break_when_you_get_here();
* Default sizes of transmit and receive descriptor areas * Default sizes of transmit and receive descriptor areas
*/ */
#define RDA_COUNT 20 #define RDA_COUNT 20
#define TDA_COUNT 100 #define TDA_COUNT 10
/* /*
* *
@@ -371,6 +365,7 @@ SONIC_STATIC void sonic_show (struct iface *iface)
SONIC_STATIC rtems_isr sonic_interrupt_handler (rtems_vector_number v) SONIC_STATIC rtems_isr sonic_interrupt_handler (rtems_vector_number v)
{ {
struct sonic *dp = sonic; struct sonic *dp = sonic;
unsigned32 isr, imr;
void *rp; void *rp;
#if (NSONIC > 1) #if (NSONIC > 1)
@@ -392,16 +387,15 @@ SONIC_STATIC rtems_isr sonic_interrupt_handler (rtems_vector_number v)
dp->Interrupts++; dp->Interrupts++;
isr = sonic_read_register( rp, SONIC_REG_ISR );
imr = sonic_read_register( rp, SONIC_REG_IMR );
/* /*
* Packet received or receive buffer area exceeded? * Packet received or receive buffer area exceeded?
*/ */
if ((sonic_read_register( rp, SONIC_REG_IMR ) & (IMR_PRXEN | IMR_RBAEEN)) && if ((imr & (IMR_PRXEN | IMR_RBAEEN)) &&
(sonic_read_register( rp, SONIC_REG_ISR ) & (ISR_PKTRX | ISR_RBAE))) { (isr & (ISR_PKTRX | ISR_RBAE))) {
sonic_write_register( imr &= ~(IMR_PRXEN | IMR_RBAEEN);
rp,
SONIC_REG_IMR,
sonic_read_register( rp, SONIC_REG_IMR) & ~(IMR_PRXEN | IMR_RBAEEN)
);
dp->rxInterrupts++; dp->rxInterrupts++;
rtems_event_send (dp->iface->rxproc, INTERRUPT_EVENT); rtems_event_send (dp->iface->rxproc, INTERRUPT_EVENT);
} }
@@ -409,17 +403,14 @@ SONIC_STATIC rtems_isr sonic_interrupt_handler (rtems_vector_number v)
/* /*
* Packet started, transmitter done or transmitter error? * Packet started, transmitter done or transmitter error?
*/ */
if ((sonic_read_register( rp, SONIC_REG_IMR ) & (IMR_PINTEN | IMR_PTXEN | IMR_TXEREN)) if ((imr & (IMR_PINTEN | IMR_PTXEN | IMR_TXEREN))
&& (sonic_read_register( rp, SONIC_REG_ISR ) & (ISR_PINT | ISR_TXDN | ISR_TXER))) { && (isr & (ISR_PINT | ISR_TXDN | ISR_TXER))) {
sonic_write_register( imr &= ~(IMR_PINTEN | IMR_PTXEN | IMR_TXEREN);
rp,
SONIC_REG_IMR,
sonic_read_register( rp, SONIC_REG_IMR) &
~(IMR_PINTEN | IMR_PTXEN | IMR_TXEREN)
);
dp->txInterrupts++; dp->txInterrupts++;
rtems_event_send (dp->txWaitTid, INTERRUPT_EVENT); rtems_event_send (dp->txWaitTid, INTERRUPT_EVENT);
} }
sonic_write_register( rp, SONIC_REG_IMR, imr );
} }
/* /*
@@ -1523,6 +1514,7 @@ char SONIC_Reg_name[64][6]= {
"DCR2" /* 0x3F */ "DCR2" /* 0x3F */
}; };
#endif #endif
void sonic_write_register( void sonic_write_register(
void *base, void *base,
unsigned32 regno, unsigned32 regno,