diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-04-20 13:24:39 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2001-04-20 13:24:39 +0000 |
commit | b85df3491f8bda321bdfcb9942f6a0c030a0dedb (patch) | |
tree | b9ddcee99c65db1e12756bf809d18821f74d752f /c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c | |
parent | 2001-04-20 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-b85df3491f8bda321bdfcb9942f6a0c030a0dedb.tar.bz2 |
2001-04-20 Joel Sherrill <joel@OARcorp.com>
* mongoosev/duart/mg5uart.c (mg5uart_enable_interrupts): Honor
the other bits set in the Peripheral Function Interrupt Mask
Register when modifying those enabled for the DUART.
* mongoosev/include/mongoose-v.h (MONGOOSEV_ATOMIC_MASK,
MONGOOSEV_PFICR, MONGOOSEV_PFIMR, mongoosev_set_in_pficr,
mongoosev_clear_in_pficr, mongoosev_set_in_pfimr,
mongoosev_clear_in_pfimr, MONGOOSEV_UART_ALL_IRQ_BITS): New macros.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c b/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c index c9355586e3..041a5b0819 100644 --- a/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c +++ b/c/src/lib/libcpu/mips/mongoosev/duart/mg5uart.c @@ -728,7 +728,8 @@ MG5UART_STATIC void mg5uart_enable_interrupts( ) { unsigned32 pMG5UART; - unsigned int shift; + unsigned32 shifted_mask; + unsigned32 shifted_bits; pMG5UART = Console_Port_Tbl[minor].ulCtrlPort1; @@ -736,15 +737,21 @@ MG5UART_STATIC void mg5uart_enable_interrupts( * Enable interrupts on RX and TX -- not break */ - if ( Console_Port_Tbl[minor].ulDataPort == MG5UART_UART0 ) - shift = MONGOOSEV_UART0_IRQ_SHIFT; - else - shift = MONGOOSEV_UART1_IRQ_SHIFT; + shifted_bits = MONGOOSEV_UART_ALL_IRQ_BITS; + shifted_mask = mask; - MG5UART_SETREG( - pMG5UART, - MG5UART_INTERRUPT_MASK_REGISTER, - mask << shift + if ( Console_Port_Tbl[minor].ulDataPort == MG5UART_UART0 ) { + shifted_bits <<= MONGOOSEV_UART0_IRQ_SHIFT; + shifted_mask <<= MONGOOSEV_UART0_IRQ_SHIFT; + } else { + shifted_bits <<= MONGOOSEV_UART1_IRQ_SHIFT; + shifted_mask <<= MONGOOSEV_UART1_IRQ_SHIFT; + } + + MONGOOSEV_ATOMIC_MASK( + MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_MASK_REGISTER, + shifted_bits, + shifted_mask ); } |