1/* 2 * (C) Copyright 2004, Psyent Corporation <www.psyent.com> 3 * Scott McNutt <smcnutt@psyent.com> 4 * 5 * See file CREDITS for list of people who contributed to this 6 * project. 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as 10 * published by the Free Software Foundation; either version 2 of 11 * the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 * MA 02111-1307 USA 22 */ 23 24#include <common.h> 25#include <watchdog.h> 26#include <asm/io.h> 27#include <nios2-io.h> 28 29DECLARE_GLOBAL_DATA_PTR; 30 31/*------------------------------------------------------------------ 32 * JTAG acts as the serial port 33 *-----------------------------------------------------------------*/ 34static nios_jtag_t *jtag = (nios_jtag_t *)CONFIG_SYS_NIOS_CONSOLE; 35 36void serial_setbrg( void ){ return; } 37int serial_init( void ) { return(0);} 38 39void serial_putc (char c) 40{ 41 while (1) { 42 unsigned st = readl(&jtag->control); 43 if (NIOS_JTAG_WSPACE(st)) 44 break; 45#ifdef CONFIG_ALTERA_JTAG_UART_BYPASS 46 if (!(st & NIOS_JTAG_AC)) /* no connection */ 47 return; 48#endif 49 WATCHDOG_RESET(); 50 } 51 writel ((unsigned char)c, &jtag->data); 52} 53 54void serial_puts (const char *s) 55{ 56 while (*s != 0) 57 serial_putc (*s++); 58} 59 60int serial_tstc (void) 61{ 62 return ( readl (&jtag->control) & NIOS_JTAG_RRDY); 63} 64 65int serial_getc (void) 66{ 67 int c; 68 unsigned val; 69 70 while (1) { 71 WATCHDOG_RESET (); 72 val = readl (&jtag->data); 73 if (val & NIOS_JTAG_RVALID) 74 break; 75 } 76 c = val & 0x0ff; 77 return (c); 78} 79