Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.23 121 lines 2.1 kB view raw
1/* 2 * KGDB and progress routines for the Marvell/Galileo MV64x60 (Discovery). 3 * 4 * Author: Mark A. Greer <mgreer@mvista.com> 5 * 6 * 2003 (c) MontaVista Software, Inc. This file is licensed under 7 * the terms of the GNU General Public License version 2. This program 8 * is licensed "as is" without any warranty of any kind, whether express 9 * or implied. 10 */ 11 12/* 13 ***************************************************************************** 14 * 15 * Low-level MPSC/UART I/O routines 16 * 17 ***************************************************************************** 18 */ 19 20 21#include <linux/irq.h> 22#include <asm/delay.h> 23#include <asm/mv64x60.h> 24#include <asm/machdep.h> 25 26 27#if defined(CONFIG_SERIAL_TEXT_DEBUG) 28 29#define MPSC_CHR_1 0x000c 30#define MPSC_CHR_2 0x0010 31 32static struct mv64x60_handle mv64x60_dbg_bh; 33 34void 35mv64x60_progress_init(u32 base) 36{ 37 mv64x60_dbg_bh.v_base = base; 38 return; 39} 40 41static void 42mv64x60_polled_putc(int chan, char c) 43{ 44 u32 offset; 45 46 if (chan == 0) 47 offset = 0x8000; 48 else 49 offset = 0x9000; 50 51 mv64x60_write(&mv64x60_dbg_bh, offset + MPSC_CHR_1, (u32)c); 52 mv64x60_write(&mv64x60_dbg_bh, offset + MPSC_CHR_2, 0x200); 53 udelay(2000); 54} 55 56void 57mv64x60_mpsc_progress(char *s, unsigned short hex) 58{ 59 volatile char c; 60 61 mv64x60_polled_putc(0, '\r'); 62 63 while ((c = *s++) != 0) 64 mv64x60_polled_putc(0, c); 65 66 mv64x60_polled_putc(0, '\n'); 67 mv64x60_polled_putc(0, '\r'); 68 69 return; 70} 71#endif /* CONFIG_SERIAL_TEXT_DEBUG */ 72 73 74#if defined(CONFIG_KGDB) 75 76#if defined(CONFIG_KGDB_TTYS0) 77#define KGDB_PORT 0 78#elif defined(CONFIG_KGDB_TTYS1) 79#define KGDB_PORT 1 80#else 81#error "Invalid kgdb_tty port" 82#endif 83 84void 85putDebugChar(unsigned char c) 86{ 87 mv64x60_polled_putc(KGDB_PORT, (char)c); 88} 89 90int 91getDebugChar(void) 92{ 93 unsigned char c; 94 95 while (!mv64x60_polled_getc(KGDB_PORT, &c)); 96 return (int)c; 97} 98 99void 100putDebugString(char* str) 101{ 102 while (*str != '\0') { 103 putDebugChar(*str); 104 str++; 105 } 106 putDebugChar('\r'); 107 return; 108} 109 110void 111kgdb_interruptible(int enable) 112{ 113} 114 115void 116kgdb_map_scc(void) 117{ 118 if (ppc_md.early_serial_map) 119 ppc_md.early_serial_map(); 120} 121#endif /* CONFIG_KGDB */