diff --git a/cpu/arm920t/at91rm9200/interrupts.c b/cpu/arm920t/at91rm9200/interrupts.c index 5f0703c2de28676d9fe67b6dacb220ed45506d65..15e22bf6cf483405d44d4a7b43db0bdd3bbdcc3f 100644 --- a/cpu/arm920t/at91rm9200/interrupts.c +++ b/cpu/arm920t/at91rm9200/interrupts.c @@ -166,21 +166,14 @@ ulong get_tbclk (void) void reset_cpu (ulong ignored) { -#ifdef CONFIG_DBGU - AT91PS_USART us = (AT91PS_USART) AT91C_BASE_DBGU; -#endif -#ifdef CONFIG_USART0 - AT91PS_USART us = AT91C_BASE_US0; -#endif -#ifdef CONFIG_USART1 - AT91PS_USART us = AT91C_BASE_US1; -#endif #ifdef CONFIG_AT91RM9200DK AT91PS_PIO pio = AT91C_BASE_PIOA; #endif +#if defined(CONFIG_AT91RM9200_USART) /*shutdown the console to avoid strange chars during reset */ - us->US_CR = (AT91C_US_RSTRX | AT91C_US_RSTTX); + serial_exit(); +#endif #ifdef CONFIG_AT91RM9200DK /* Clear PA19 to trigger the hard reset */ diff --git a/drivers/serial/at91rm9200_usart.c b/drivers/serial/at91rm9200_usart.c index d5634454927591eb4b3e52a4d9499b8988fff7ec..858bde97c113f10b27067fd811bac326f950f21d 100644 --- a/drivers/serial/at91rm9200_usart.c +++ b/drivers/serial/at91rm9200_usart.c @@ -86,6 +86,11 @@ int serial_init (void) return (0); } +void serial_exit (void) +{ + us->US_CR = (AT91C_US_RSTRX | AT91C_US_RSTTX); +} + void serial_putc (const char c) { if (c == '\n') diff --git a/include/common.h b/include/common.h index 20c058a81dce1477ba2ae5632ff66dd1a0af3d84..30fff7d65ee29d4bb723c51a583c72ad5b89ec50 100644 --- a/include/common.h +++ b/include/common.h @@ -453,6 +453,7 @@ void ft_pci_setup(void *blob, bd_t *bd); /* $(CPU)/serial.c */ int serial_init (void); +void serial_exit (void); void serial_addr (unsigned int); void serial_setbrg (void); void serial_putc (const char);