X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=arch%2Fmips%2Fsgi-ip22%2Fip22-setup.c;h=7018e1833e85dd7ab577c9f43b1bcaa48c7f42c5;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=fe7f546d328379a0e550e1da37c1214b3895aaab;hpb=9bf4aaab3e101692164d49b7ca357651eb691cb6;p=linux-2.6.git diff --git a/arch/mips/sgi-ip22/ip22-setup.c b/arch/mips/sgi-ip22/ip22-setup.c index fe7f546d3..7018e1833 100644 --- a/arch/mips/sgi-ip22/ip22-setup.c +++ b/arch/mips/sgi-ip22/ip22-setup.c @@ -29,12 +29,6 @@ #include #include -#ifdef CONFIG_KGDB -extern void rs_kgdb_hook(int); -extern void breakpoint(void); -static int remote_debug = 0; -#endif - unsigned long sgi_gfxaddr; /* @@ -43,7 +37,6 @@ unsigned long sgi_gfxaddr; * * FIXME: provide a mechanism to change the value of stop_a_enabled. */ -int serial_console; int stop_a_enabled; void ip22_do_break(void) @@ -60,12 +53,10 @@ EXPORT_SYMBOL(ip22_do_break); extern void ip22_be_init(void) __init; extern void ip22_time_init(void) __init; -static int __init ip22_setup(void) +void __init plat_setup(void) { char *ctype; -#ifdef CONFIG_KGDB - char *kgdb_ttyd; -#endif + char *cserial; board_be_init = ip22_be_init; ip22_time_init(); @@ -84,15 +75,21 @@ static int __init ip22_setup(void) indy_sc_init(); #endif - /* Set EISA IO port base for Indigo2 */ - set_io_port_base(KSEG1ADDR(0x00080000)); - + /* Set EISA IO port base for Indigo2 + * ioremap cannot fail */ + set_io_port_base((unsigned long)ioremap(0x00080000, + 0x1fffffff - 0x00080000)); /* ARCS console environment variable is set to "g?" for * graphics console, it is set to "d" for the first serial * line and "d2" for the second serial line. + * + * Need to check if the case is 'g' but no keyboard: + * (ConsoleIn/Out = serial) */ ctype = ArcGetEnvironmentVariable("console"); - if (ctype && *ctype == 'd') { + cserial = ArcGetEnvironmentVariable("ConsoleOut"); + + if ((ctype && *ctype == 'd') || (cserial && *cserial == 's')) { static char options[8]; char *baud = ArcGetEnvironmentVariable("dbaud"); if (baud) @@ -100,13 +97,15 @@ static int __init ip22_setup(void) add_preferred_console("ttyS", *(ctype + 1) == '2' ? 1 : 0, baud ? options : NULL); } else if (!ctype || *ctype != 'g') { - /* Use ARC if we don't want serial ('d') or Newport ('g'). */ + /* Use ARC if we don't want serial ('d') or graphics ('g'). */ prom_flags |= PROM_FLAG_USE_AS_CONSOLE; add_preferred_console("arc", 0, NULL); } #ifdef CONFIG_KGDB - kgdb_ttyd = prom_getcmdline(); + { + char *kgdb_ttyd = prom_getcmdline(); + if ((kgdb_ttyd = strstr(kgdb_ttyd, "kgdb=ttyd")) != NULL) { int line; kgdb_ttyd += strlen("kgdb=ttyd"); @@ -121,14 +120,14 @@ static int __init ip22_setup(void) printk(KERN_INFO "KGDB: Using serial line /dev/ttyd%d for " "session, please connect your debugger\n", line ? 1:2); - remote_debug = 1; + kgdb_enabled = 1; /* Breakpoints and stuff are in sgi_irq_setup() */ } + } #endif -#ifdef CONFIG_VT -#ifdef CONFIG_SGI_NEWPORT_CONSOLE - if (ctype && *ctype == 'g'){ +#if defined(CONFIG_VT) && defined(CONFIG_SGI_NEWPORT_CONSOLE) + { ULONG *gfxinfo; ULONG * (*__vec)(void) = (void *) (long) *((_PULONG *)(long)((PROMBLOCK)->pvector + 0x20)); @@ -144,9 +143,4 @@ static int __init ip22_setup(void) } } #endif -#endif - - return 0; } - -early_initcall(ip22_setup);