rename cpuXXX_t to cpu_XXX_t
[bertos.git] / bertos / cpu / arm / drv / ser_at91.c
index 19f36df859cc2e6f7e38070f2af318888004a713..01a7ac2744068d270f994635e1e9713524e3ef64 100644 (file)
@@ -27,7 +27,7 @@
  * the GNU General Public License.
  *
  * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
- * Copyright 2000 Bernardo Innocenti <bernie@codewiz.org>
+ * Copyright 2000 Bernie Innocenti <bernie@codewiz.org>
  *
  * -->
  *
  * \author Daniele Basile <asterix@develer.com>
  */
 
+#include "hw/hw_ser.h"  /* Required for bus macros overrides */
+#include "hw/hw_cpu.h"  /* CLOCK_FREQ */
+
+#include "cfg/cfg_ser.h"
+#include <cfg/debug.h>
+
+
 #include <io/arm.h>
 
 #include <cpu/attr.h>
+
 #include <drv/ser.h>
 #include <drv/ser_p.h>
 
-#include <hw/hw_ser.h>  /* Required for bus macros overrides */
-#include <hw/hw_cpu.h>  /* CLOCK_FREQ */
+#include <struct/fifobuf.h>
 
-#include <mware/fifobuf.h>
-#include <cfg/debug.h>
-
-#include <appconfig.h>
 
 #define SERIRQ_PRIORITY 4 ///< default priority for serial irqs.
 
 
 
 /* From the high-level serial driver */
-extern struct Serial ser_handles[SER_CNT];
+extern struct Serial *ser_handles[SER_CNT];
 
 /* TX and RX buffers */
 static unsigned char uart0_txbuffer[CONFIG_UART0_TXBUFSIZE];
@@ -256,17 +259,7 @@ struct ArmSerial
 };
 
 
-/*
- * These are to trick GCC into *not* using absolute addressing mode
- * when accessing ser_handles, which is very expensive.
- *
- * Accessing through these pointers generates much shorter
- * (and hopefully faster) code.
- */
-struct Serial *ser_uart0 = &ser_handles[SER_UART0];
-struct Serial *ser_uart1 = &ser_handles[SER_UART1];
 
-struct Serial *ser_spi0 = &ser_handles[SER_SPI0];
 #if CPU_ARM_AT91SAM7X128 || CPU_ARM_AT91SAM7X256
 struct Serial *ser_spi1 = &ser_handles[SER_SPI1];
 #endif
@@ -530,14 +523,14 @@ static void spi0_starttx(struct SerialHardware *_hw)
 {
        struct ArmSerial *hw = (struct ArmSerial *)_hw;
 
-       cpuflags_t flags;
+       cpu_flags_t flags;
        IRQ_SAVE_DISABLE(flags);
 
        /* Send data only if the SPI is not already transmitting */
-       if (!hw->sending && !fifo_isempty(&ser_spi0->txfifo))
+       if (!hw->sending && !fifo_isempty(&ser_handles[SER_SPI0]->txfifo))
        {
                hw->sending = true;
-               SPI0_TDR = fifo_pop(&ser_spi0->txfifo);
+               SPI0_TDR = fifo_pop(&ser_handles[SER_SPI0]->txfifo);
        }
 
        IRQ_RESTORE(flags);
@@ -614,7 +607,7 @@ static void spi1_starttx(struct SerialHardware *_hw)
 {
        struct ArmSerial *hw = (struct ArmSerial *)_hw;
 
-       cpuflags_t flags;
+       cpu_flags_t flags;
        IRQ_SAVE_DISABLE(flags);
 
        /* Send data only if the SPI is not already transmitting */
@@ -763,7 +756,7 @@ static void uart0_irq_tx(void)
 {
        SER_STROBE_ON;
 
-       struct FIFOBuffer * const txfifo = &ser_uart0->txfifo;
+       struct FIFOBuffer * const txfifo = &ser_handles[SER_UART0]->txfifo;
 
        if (fifo_isempty(txfifo))
        {
@@ -791,14 +784,14 @@ static void uart0_irq_rx(void)
        SER_STROBE_ON;
 
        /* Should be read before US_CRS */
-       ser_uart0->status |= US0_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR);
+       ser_handles[SER_UART0]->status |= US0_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR);
        US0_CR = BV(US_RSTSTA);
 
        char c = US0_RHR;
-       struct FIFOBuffer * const rxfifo = &ser_uart0->rxfifo;
+       struct FIFOBuffer * const rxfifo = &ser_handles[SER_UART0]->rxfifo;
 
        if (fifo_isfull(rxfifo))
-               ser_uart0->status |= SERRF_RXFIFOOVERRUN;
+               ser_handles[SER_UART0]->status |= SERRF_RXFIFOOVERRUN;
        else
                fifo_push(rxfifo, c);
 
@@ -828,7 +821,7 @@ static void uart1_irq_tx(void)
 {
        SER_STROBE_ON;
 
-       struct FIFOBuffer * const txfifo = &ser_uart1->txfifo;
+       struct FIFOBuffer * const txfifo = &ser_handles[SER_UART1]->txfifo;
 
        if (fifo_isempty(txfifo))
        {
@@ -856,14 +849,14 @@ static void uart1_irq_rx(void)
        SER_STROBE_ON;
 
        /* Should be read before US_CRS */
-       ser_uart1->status |= US1_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR);
+       ser_handles[SER_UART1]->status |= US1_CSR & (SERRF_RXSROVERRUN | SERRF_FRAMEERROR);
        US1_CR = BV(US_RSTSTA);
 
        char c = US1_RHR;
-       struct FIFOBuffer * const rxfifo = &ser_uart1->rxfifo;
+       struct FIFOBuffer * const rxfifo = &ser_handles[SER_UART1]->rxfifo;
 
        if (fifo_isfull(rxfifo))
-               ser_uart1->status |= SERRF_RXFIFOOVERRUN;
+               ser_handles[SER_UART1]->status |= SERRF_RXFIFOOVERRUN;
        else
                fifo_push(rxfifo, c);
 
@@ -896,17 +889,17 @@ static void spi0_irq_handler(void)
 
        char c = SPI0_RDR;
        /* Read incoming byte. */
-       if (!fifo_isfull(&ser_spi0->rxfifo))
-               fifo_push(&ser_spi0->rxfifo, c);
+       if (!fifo_isfull(&ser_handles[SER_SPI0]->rxfifo))
+               fifo_push(&ser_handles[SER_SPI0]->rxfifo, c);
        /*
         * FIXME
        else
-               ser_spi0->status |= SERRF_RXFIFOOVERRUN;
+               ser_handles[SER_SPI0]->status |= SERRF_RXFIFOOVERRUN;
        */
 
        /* Send */
-       if (!fifo_isempty(&ser_spi0->txfifo))
-               SPI0_TDR = fifo_pop(&ser_spi0->txfifo);
+       if (!fifo_isempty(&ser_handles[SER_SPI0]->txfifo))
+               SPI0_TDR = fifo_pop(&ser_handles[SER_SPI0]->txfifo);
        else
                UARTDescs[SER_SPI0].sending = false;