/* * KGDB and progress routines for the Marvell/Galileo MV64x60 (Discovery). * * Author: Mark A. Greer * * 2003 (c) MontaVista Software, Inc. This file is licensed under * the terms of the GNU General Public License version 2. This program * is licensed "as is" without any warranty of any kind, whether express * or implied. */ /* ***************************************************************************** * * Low-level MPSC/UART I/O routines * ***************************************************************************** */ #include #include #include #include #if defined(CONFIG_SERIAL_TEXT_DEBUG) #define MPSC_CHR_1 0x000c #define MPSC_CHR_2 0x0010 static struct mv64x60_handle mv64x60_dbg_bh; void mv64x60_progress_init(u32 base) { mv64x60_dbg_bh.v_base = base; return; } static void mv64x60_polled_putc(int chan, char c) { u32 offset; if (chan == 0) offset = 0x8000; else offset = 0x9000; mv64x60_write(&mv64x60_dbg_bh, offset + MPSC_CHR_1, (u32)c); mv64x60_write(&mv64x60_dbg_bh, offset + MPSC_CHR_2, 0x200); udelay(2000); } void mv64x60_mpsc_progress(char *s, unsigned short hex) { volatile char c; mv64x60_polled_putc(0, '\r'); while ((c = *s++) != 0) mv64x60_polled_putc(0, c); mv64x60_polled_putc(0, '\n'); mv64x60_polled_putc(0, '\r'); return; } #endif /* CONFIG_SERIAL_TEXT_DEBUG */ #if defined(CONFIG_KGDB) #if defined(CONFIG_KGDB_TTYS0) #define KGDB_PORT 0 #elif defined(CONFIG_KGDB_TTYS1) #define KGDB_PORT 1 #else #error "Invalid kgdb_tty port" #endif void putDebugChar(unsigned char c) { mv64x60_polled_putc(KGDB_PORT, (char)c); } int getDebugChar(void) { unsigned char c; while (!mv64x60_polled_getc(KGDB_PORT, &c)); return (int)c; } void putDebugString(char* str) { while (*str != '\0') { putDebugChar(*str); str++; } putDebugChar('\r'); return; } void kgdb_interruptible(int enable) { } void kgdb_map_scc(void) { if (ppc_md.early_serial_map) ppc_md.early_serial_map(); } #endif /* CONFIG_KGDB */