Index: linux-2.6.39.4/drivers/tty/serial/atmel_serial.c =================================================================== --- linux-2.6.39.4.orig/drivers/tty/serial/atmel_serial.c 2013-03-05 11:13:21.334104152 -0600 +++ linux-2.6.39.4/drivers/tty/serial/atmel_serial.c 2013-03-05 11:13:42.299860530 -0600 @@ -1510,7 +1510,14 @@ UART_PUT_PTCR(port, ATMEL_PDC_RXTEN); } else if (atmel_use_dma_rx(port)) { /* set UART timeout */ +#ifdef CONFIG_ARCH_AT91SAM9X5 + /* DBGU, UART0, UART1 don't support RX TIMEOUT */ + if (port->line == 0 || + port->mapbase == AT91SAM9X5_BASE_UART0 || + port->mapbase == AT91SAM9X5_BASE_UART1) { +#else if (port->line == 0) { +#endif setup_timer(&atmel_port->uart_timer, atmel_uart_timer_callback, (unsigned long)port); @@ -1585,8 +1592,15 @@ if (atmel_use_dma_rx(port)) { atmel_rx_dma_release(atmel_port); - if (port->line == 0) +#ifdef CONFIG_ARCH_AT91SAM9X5 + if (port->line == 0 || + port->mapbase == AT91SAM9X5_BASE_UART0 || + port->mapbase == AT91SAM9X5_BASE_UART1) { +#else + if (port->line == 0) { +#endif del_timer_sync(&atmel_port->uart_timer); + } } if (atmel_use_dma_tx(port)) atmel_tx_dma_release(atmel_port);