X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=cpu%2Fnios%2Fserial.c;h=44aa6001f599049db8e8979f483fae4c732e2128;hb=4b99327a4121a28d2bdb2c2b841f5d97931ae905;hp=61b26ab14958b83fc139a5c5fa722eeb68b124d4;hpb=4a5517094dd30bb1f271403b62e23053301668e6;p=u-boot diff --git a/cpu/nios/serial.c b/cpu/nios/serial.c index 61b26ab149..44aa6001f5 100644 --- a/cpu/nios/serial.c +++ b/cpu/nios/serial.c @@ -23,24 +23,68 @@ #include +#include #include +DECLARE_GLOBAL_DATA_PTR; -static nios_uart_t *uart = (nios_uart_t *)CFG_NIOS_CONSOLE; +/*------------------------------------------------------------------ + * JTAG acts as the serial port + *-----------------------------------------------------------------*/ +#if defined(CONFIG_CONSOLE_JTAG) -#if defined(CFG_NIOS_FIXEDBAUD) +static nios_jtag_t *jtag = (nios_jtag_t *)CONFIG_SYS_NIOS_CONSOLE; + +void serial_setbrg( void ){ return; } +int serial_init( void ) { return(0);} + +void serial_putc (char c) +{ + while ((jtag->txcntl & NIOS_JTAG_TRDY) != 0) + WATCHDOG_RESET (); + jtag->txcntl = NIOS_JTAG_TRDY | (unsigned char)c; +} + +void serial_puts (const char *s) +{ + while (*s != 0) + serial_putc (*s++); +} + +int serial_tstc (void) +{ + return (jtag->rxcntl & NIOS_JTAG_RRDY); +} + +int serial_getc (void) +{ + int c; + while (serial_tstc() == 0) + WATCHDOG_RESET (); + c = jtag->rxcntl & 0x0ff; + jtag->rxcntl = 0; + return (c); +} + +/*------------------------------------------------------------------ + * UART the serial port + *-----------------------------------------------------------------*/ +#else + +static nios_uart_t *uart = (nios_uart_t *)CONFIG_SYS_NIOS_CONSOLE; + +#if defined(CONFIG_SYS_NIOS_FIXEDBAUD) /* Everything's already setup for fixed-baud PTF * assignment */ -void serial_setbrg( void ){ return; } -int serial_init( void ) { return(0);} +void serial_setbrg (void){ return; } +int serial_init (void) { return (0);} #else -void serial_setbrg( void ) +void serial_setbrg (void) { - DECLARE_GLOBAL_DATA_PTR; unsigned div; div = (CONFIG_SYS_CLK_FREQ/gd->baudrate)-1; @@ -48,39 +92,44 @@ void serial_setbrg( void ) return; } -int serial_init( void ) +int serial_init (void) { - serial_setbrg(); - return(0); + serial_setbrg (); + return (0); } -#endif /* CFG_NIOS_FIXEDBAUD */ +#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */ -void serial_putc( char c ) +/*----------------------------------------------------------------------- + * UART CONSOLE + *---------------------------------------------------------------------*/ +void serial_putc (char c) { if (c == '\n') - serial_putc('\r'); - while( (uart->status & NIOS_UART_TRDY) == 0 ) - ; + serial_putc ('\r'); + while ((uart->status & NIOS_UART_TRDY) == 0) + WATCHDOG_RESET (); uart->txdata = (unsigned char)c; } -void serial_puts( const char *s ) +void serial_puts (const char *s) { - while( *s != 0 ) { - serial_putc( *s++ ); + while (*s != 0) { + serial_putc (*s++); } } -int serial_tstc( void ) +int serial_tstc (void) { - return( uart->status & NIOS_UART_RRDY); + return (uart->status & NIOS_UART_RRDY); } -int serial_getc( void ) +int serial_getc (void) { - while( serial_tstc() == 0 ) - ; + while (serial_tstc () == 0) + WATCHDOG_RESET (); return( uart->rxdata & 0x00ff ); } + +#endif /* CONFIG_JTAG_CONSOLE */