Change properties
[bertos.git] / bertos / cpu / arm / drv / ser_at91.c
index 6726f21039d4747c764283d0be1bfcbb7305a327..f060e14f6b4314bc9730387b33054d678d9f99da 100644 (file)
  * \brief ARM UART and SPI I/O driver
  *
  *
- * \version $Id: ser_at91.c 20881 2008-03-04 14:07:02Z batt $
+ * \version $Id$
  * \author Daniele Basile <asterix@develer.com>
  */
 
 #include "hw/hw_ser.h"  /* Required for bus macros overrides */
-#include "hw/hw_cpu.h"  /* CLOCK_FREQ */
+#include <hw/hw_cpufreq.h>  /* CPU_FREQ */
 
 #include "cfg/cfg_ser.h"
 #include <cfg/debug.h>
@@ -52,7 +52,7 @@
 #include <drv/ser.h>
 #include <drv/ser_p.h>
 
-#include <mware/fifobuf.h>
+#include <struct/fifobuf.h>
 
 
 #define SERIRQ_PRIORITY 4 ///< default priority for serial irqs.
@@ -258,12 +258,6 @@ struct ArmSerial
        volatile bool sending;
 };
 
-
-
-#if CPU_ARM_AT91SAM7X128 || CPU_ARM_AT91SAM7X256
-struct Serial *ser_spi1 = &ser_handles[SER_SPI1];
-#endif
-
 static void uart0_irq_dispatcher(void);
 static void uart1_irq_dispatcher(void);
 static void spi0_irq_handler(void);
@@ -332,7 +326,7 @@ static void uart0_enabletxirq(struct SerialHardware *_hw)
 static void uart0_setbaudrate(UNUSED_ARG(struct SerialHardware *, _hw), unsigned long rate)
 {
        /* Compute baud-rate period */
-       US0_BRGR = CLOCK_FREQ / (16 * rate);
+       US0_BRGR = CPU_FREQ / (16 * rate);
        //DB(kprintf("uart0_setbaudrate(rate=%lu): period=%d\n", rate, period);)
 }
 
@@ -427,7 +421,7 @@ static void uart1_enabletxirq(struct SerialHardware *_hw)
 static void uart1_setbaudrate(UNUSED_ARG(struct SerialHardware *, _hw), unsigned long rate)
 {
        /* Compute baud-rate period */
-       US1_BRGR = CLOCK_FREQ / (16 * rate);
+       US1_BRGR = CPU_FREQ / (16 * rate);
        //DB(kprintf("uart0_setbaudrate(rate=%lu): period=%d\n", rate, period);)
 }
 
@@ -523,7 +517,7 @@ 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 */
@@ -540,8 +534,8 @@ static void spi0_setbaudrate(UNUSED_ARG(struct SerialHardware *, _hw), unsigned
 {
        SPI0_CSR0 &= ~SPI_SCBR;
 
-       ASSERT((uint8_t)DIV_ROUND(CLOCK_FREQ, rate));
-       SPI0_CSR0 |= DIV_ROUND(CLOCK_FREQ, rate) << SPI_SCBR_SHIFT;
+       ASSERT((uint8_t)DIV_ROUND(CPU_FREQ, rate));
+       SPI0_CSR0 |= DIV_ROUND(CPU_FREQ, rate) << SPI_SCBR_SHIFT;
 }
 
 #if CPU_ARM_AT91SAM7X128 || CPU_ARM_AT91SAM7X256
@@ -607,14 +601,14 @@ 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 */
-       if (!hw->sending && !fifo_isempty(&ser_spi1->txfifo))
+       if (!hw->sending && !fifo_isempty(&ser_handles[SER_SPI1]->txfifo))
        {
                hw->sending = true;
-               SPI1_TDR = fifo_pop(&ser_spi1->txfifo);
+               SPI1_TDR = fifo_pop(&ser_handles[SER_SPI1]->txfifo);
        }
 
        IRQ_RESTORE(flags);
@@ -624,8 +618,8 @@ static void spi1_setbaudrate(UNUSED_ARG(struct SerialHardware *, _hw), unsigned
 {
        SPI1_CSR0 &= ~SPI_SCBR;
 
-       ASSERT((uint8_t)DIV_ROUND(CLOCK_FREQ, rate));
-       SPI1_CSR0 |= DIV_ROUND(CLOCK_FREQ, rate) << SPI_SCBR_SHIFT;
+       ASSERT((uint8_t)DIV_ROUND(CPU_FREQ, rate));
+       SPI1_CSR0 |= DIV_ROUND(CPU_FREQ, rate) << SPI_SCBR_SHIFT;
 }
 #endif
 
@@ -920,17 +914,17 @@ static void spi1_irq_handler(void)
 
        char c = SPI1_RDR;
        /* Read incoming byte. */
-       if (!fifo_isfull(&ser_spi1->rxfifo))
-               fifo_push(&ser_spi1->rxfifo, c);
+       if (!fifo_isfull(&ser_handles[SER_SPI1]->rxfifo))
+               fifo_push(&ser_handles[SER_SPI1]->rxfifo, c);
        /*
         * FIXME
        else
-               ser_spi1->status |= SERRF_RXFIFOOVERRUN;
+               ser_handles[SER_SPI1]->status |= SERRF_RXFIFOOVERRUN;
        */
 
        /* Send */
-       if (!fifo_isempty(&ser_spi1->txfifo))
-               SPI1_TDR = fifo_pop(&ser_spi1->txfifo);
+       if (!fifo_isempty(&ser_handles[SER_SPI1]->txfifo))
+               SPI1_TDR = fifo_pop(&ser_handles[SER_SPI1]->txfifo);
        else
                UARTDescs[SER_SPI1].sending = false;