Add support for at91sam7x.
[bertos.git] / cpu / arm / drv / ser_at91.c
index cfdcc977bfc65067f3c11fa4d4219fea9b8d65fc..9f3ed4b9f1ac64a75bb0f7237b737c29cc6b25ef 100644 (file)
         *
         * - Disable GPIO on USART0 tx/rx pins
         * - Reset USART0
-        * - Set serial param: mode Normal, 8bit data, 1bit stop
+        * - Set serial param: mode Normal, 8bit data, 1bit stop, parity none
         * - Enable both the receiver and the transmitter
         * - Enable only the RX complete interrupt
         */
-       #if !CPU_ARM_AT91SAM7S256
+       #if !CPU_ARM_AT91SAM7S256 && !CPU_ARM_AT91SAM7X256
                #warning Check USART0 pins!
        #endif
        #define SER_UART0_BUS_TXINIT do { \
                PIOA_PDR = BV(RXD0) | BV(TXD0); \
                US0_CR = BV(US_RSTRX) | BV(US_RSTTX); \
-               US0_MR = US_CHMODE_NORMAL | US_CHRL_8 | US_NBSTOP_1; \
+               US0_MR = US_CHMODE_NORMAL | US_CHRL_8 | US_NBSTOP_1 | US_PAR_NO; \
                US0_CR = BV(US_RXEN) | BV(US_TXEN); \
                US0_IER = BV(US_RXRDY); \
        } while (0)
 
 #ifndef SER_UART1_BUS_TXINIT
        /** \sa SER_UART1_BUS_TXINIT */
-       #if !CPU_ARM_AT91SAM7S256
+       #if !CPU_ARM_AT91SAM7S256 && !CPU_ARM_AT91SAM7X256
                #warning Check USART1 pins!
        #endif
        #define SER_UART1_BUS_TXINIT do { \
                PIOA_PDR = BV(RXD1) | BV(TXD1); \
                US1_CR = BV(US_RSTRX) | BV(US_RSTTX); \
-               US1_MR = US_CHMODE_NORMAL | US_CHRL_8 | US_NBSTOP_1; \
+               US1_MR = US_CHMODE_NORMAL | US_CHRL_8 | US_NBSTOP_1 | US_PAR_NO; \
                US1_CR = BV(US_RXEN) | BV(US_TXEN); \
                US1_IER = BV(US_RXRDY); \
        } while (0)
        } while (0)
 #endif
 
-#if
+#ifdef NOT_FOR_ARM_PORT_IT
 /**
  * \name Overridable SPI hooks
  *
@@ -708,10 +708,10 @@ static void uart0_irq_dispatcher(void)
 {
        IRQ_ENTRY();
 
-       if (US0_IMR & BV(US_RXRDY))
+       if (US0_CSR & BV(US_RXRDY))
                uart0_irq_rx();
 
-       if (US0_IMR & BV(US_TXRDY))
+       if (US0_CSR & BV(US_TXRDY))
                uart0_irq_tx();
 
        IRQ_EXIT();
@@ -769,10 +769,10 @@ static void uart1_irq_dispatcher(void)
 {
        IRQ_ENTRY();
 
-       if (US1_IMR & BV(US_RXRDY))
+       if (US1_CSR & BV(US_RXRDY))
                uart1_irq_rx();
 
-       if (US1_IMR & BV(US_TXRDY))
+       if (US1_CSR & BV(US_TXRDY))
                uart1_irq_tx();
 
        IRQ_EXIT();