diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/at91rm9200/cpu.c | 9 | ||||
-rw-r--r-- | cpu/at91rm9200/serial.c | 15 |
2 files changed, 24 insertions, 0 deletions
diff --git a/cpu/at91rm9200/cpu.c b/cpu/at91rm9200/cpu.c index 0250729..c006d9c 100644 --- a/cpu/at91rm9200/cpu.c +++ b/cpu/at91rm9200/cpu.c @@ -35,6 +35,10 @@ #include <asm/io.h> #include <asm/arch/hardware.h> +#if !defined(CONFIG_DBGU) && !defined(CONFIG_USART1) +#error must define one of CONFIG_DBGU or CONFIG_USART1 +#endif + /* read co-processor 15, register #1 (control register) */ static unsigned long read_p15_c1(void) { @@ -116,7 +120,12 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) disable_interrupts(); reset_cpu(0); #else +#ifdef CONFIG_DBGU + AT91PS_USART us = AT91C_BASE_DBGU; +#endif +#ifdef CONFIG_USART1 AT91PS_USART us = AT91C_BASE_US1; +#endif AT91PS_PIO pio = AT91C_BASE_PIOA; /*shutdown the console to avoid strange chars during reset */ diff --git a/cpu/at91rm9200/serial.c b/cpu/at91rm9200/serial.c index 43e1553..c16c9d4 100644 --- a/cpu/at91rm9200/serial.c +++ b/cpu/at91rm9200/serial.c @@ -33,8 +33,17 @@ #include <asm/io.h> #include <asm/arch/hardware.h> +#if !defined(CONFIG_DBGU) && !defined(CONFIG_USART1) +#error must define one of CONFIG_DBGU or CONFIG_USART1 +#endif + /* ggi thunder */ +#ifdef CONFIG_DBGU AT91PS_USART us = (AT91PS_USART) AT91C_BASE_DBGU; +#endif +#ifdef CONFIG_USART1 +AT91PS_USART us = (AT91PS_USART) AT91C_BASE_US1; +#endif void serial_setbrg (void) { @@ -49,8 +58,14 @@ void serial_setbrg (void) int serial_init (void) { /* make any port initializations specific to this port */ +#ifdef CONFIG_DBGU *AT91C_PIOA_PDR = AT91C_PA31_DTXD | AT91C_PA30_DRXD; /* PA 31 & 30 */ *AT91C_PMC_PCER = 1 << AT91C_ID_SYS; /* enable clock */ +#endif +#ifdef CONFIG_USART1 + *AT91C_PIOB_PDR = AT91C_PB21_TXD1 | AT91C_PB20_RXD1; + *AT91C_PMC_PCER |= 1 << AT91C_ID_USART1; /* enable clock */ +#endif serial_setbrg (); us->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX; |