Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[pandora-kernel.git] / arch / avr32 / mach-at32ap / at32ap700x.c
index 62501d6..eb9d4dc 100644 (file)
  * don't ... tc, smc, pio, rtc, watchdog, pwm, ps2, and more.
  */
 #define DEFINE_DEV(_name, _id)                                 \
-static u64 _name##_id##_dma_mask = DMA_32BIT_MASK;             \
+static u64 _name##_id##_dma_mask = DMA_BIT_MASK(32);           \
 static struct platform_device _name##_id##_device = {          \
        .name           = #_name,                               \
        .id             = _id,                                  \
        .dev            = {                                     \
                .dma_mask = &_name##_id##_dma_mask,             \
-               .coherent_dma_mask = DMA_32BIT_MASK,            \
+               .coherent_dma_mask = DMA_BIT_MASK(32),          \
        },                                                      \
        .resource       = _name##_id##_resource,                \
        .num_resources  = ARRAY_SIZE(_name##_id##_resource),    \
 }
 #define DEFINE_DEV_DATA(_name, _id)                            \
-static u64 _name##_id##_dma_mask = DMA_32BIT_MASK;             \
+static u64 _name##_id##_dma_mask = DMA_BIT_MASK(32);           \
 static struct platform_device _name##_id##_device = {          \
        .name           = #_name,                               \
        .id             = _id,                                  \
        .dev            = {                                     \
                .dma_mask = &_name##_id##_dma_mask,             \
                .platform_data  = &_name##_id##_data,           \
-               .coherent_dma_mask = DMA_32BIT_MASK,            \
+               .coherent_dma_mask = DMA_BIT_MASK(32),          \
        },                                                      \
        .resource       = _name##_id##_resource,                \
        .num_resources  = ARRAY_SIZE(_name##_id##_resource),    \
@@ -966,56 +966,68 @@ static struct resource atmel_usart3_resource[] = {
 DEFINE_DEV_DATA(atmel_usart, 3);
 DEV_CLK(usart, atmel_usart3, pba, 6);
 
-static inline void configure_usart0_pins(void)
+static inline void configure_usart0_pins(int flags)
 {
        u32 pin_mask = (1 << 8) | (1 << 9); /* RXD & TXD */
+       if (flags & ATMEL_USART_RTS)    pin_mask |= (1 << 6);
+       if (flags & ATMEL_USART_CTS)    pin_mask |= (1 << 7);
+       if (flags & ATMEL_USART_CLK)    pin_mask |= (1 << 10);
 
        select_peripheral(PIOA, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
 }
 
-static inline void configure_usart1_pins(void)
+static inline void configure_usart1_pins(int flags)
 {
        u32 pin_mask = (1 << 17) | (1 << 18); /* RXD & TXD */
+       if (flags & ATMEL_USART_RTS)    pin_mask |= (1 << 19);
+       if (flags & ATMEL_USART_CTS)    pin_mask |= (1 << 20);
+       if (flags & ATMEL_USART_CLK)    pin_mask |= (1 << 16);
 
        select_peripheral(PIOA, pin_mask, PERIPH_A, AT32_GPIOF_PULLUP);
 }
 
-static inline void configure_usart2_pins(void)
+static inline void configure_usart2_pins(int flags)
 {
        u32 pin_mask = (1 << 26) | (1 << 27); /* RXD & TXD */
+       if (flags & ATMEL_USART_RTS)    pin_mask |= (1 << 30);
+       if (flags & ATMEL_USART_CTS)    pin_mask |= (1 << 29);
+       if (flags & ATMEL_USART_CLK)    pin_mask |= (1 << 28);
 
        select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
 }
 
-static inline void configure_usart3_pins(void)
+static inline void configure_usart3_pins(int flags)
 {
        u32 pin_mask = (1 << 18) | (1 << 17); /* RXD & TXD */
+       if (flags & ATMEL_USART_RTS)    pin_mask |= (1 << 16);
+       if (flags & ATMEL_USART_CTS)    pin_mask |= (1 << 15);
+       if (flags & ATMEL_USART_CLK)    pin_mask |= (1 << 19);
 
        select_peripheral(PIOB, pin_mask, PERIPH_B, AT32_GPIOF_PULLUP);
 }
 
 static struct platform_device *__initdata at32_usarts[4];
 
-void __init at32_map_usart(unsigned int hw_id, unsigned int line)
+void __init at32_map_usart(unsigned int hw_id, unsigned int line, int flags)
 {
        struct platform_device *pdev;
 
        switch (hw_id) {
        case 0:
                pdev = &atmel_usart0_device;
-               configure_usart0_pins();
+               configure_usart0_pins(flags);
                break;
        case 1:
                pdev = &atmel_usart1_device;
-               configure_usart1_pins();
+               configure_usart1_pins(flags);
                break;
        case 2:
                pdev = &atmel_usart2_device;
-               configure_usart2_pins();
+               configure_usart2_pins(flags);
                break;
        case 3:
                pdev = &atmel_usart3_device;
-               configure_usart3_pins();
+               configure_usart3_pins(flags);
                break;
        default:
                return;