2 * Carsten Langgaard, carstenl@mips.com
3 * Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
5 * This program is free software; you can distribute it and/or modify it
6 * under the terms of the GNU General Public License (Version 2) as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
18 * Atlas specific setup.
20 #include <linux/config.h>
21 #include <linux/init.h>
22 #include <linux/sched.h>
23 #include <linux/mc146818rtc.h>
24 #include <linux/ioport.h>
25 #include <linux/console.h>
28 #include <asm/bootinfo.h>
30 #include <asm/mips-boards/generic.h>
31 #include <asm/mips-boards/prom.h>
32 #include <asm/mips-boards/atlasint.h>
33 #include <asm/gt64120/gt64120.h>
35 #include <asm/traps.h>
38 extern void rs_kgdb_hook(int);
39 extern void saa9730_kgdb_hook(void);
40 extern void breakpoint(void);
44 extern struct rtc_ops atlas_rtc_ops;
46 extern void mips_reboot_setup(void);
48 const char *get_system_type(void)
53 extern void mips_time_init(void);
54 extern void mips_timer_setup(struct irqaction *irq);
55 extern unsigned long mips_rtc_get_time(void);
57 void __init atlas_setup(void)
60 int rs_putDebugChar(char);
61 char rs_getDebugChar(void);
62 int saa9730_putDebugChar(char);
63 char saa9730_getDebugChar(void);
64 extern int (*generic_putDebugChar)(char);
65 extern char (*generic_getDebugChar)(void);
69 ioport_resource.end = 0x7fffffff;
71 #ifdef CONFIG_SERIAL_CONSOLE
72 argptr = prom_getcmdline();
73 if ((argptr = strstr(argptr, "console=ttyS0")) == NULL) {
74 struct console_cmdline *c = &console_cmdline[0];
75 char *s = prom_getenv("modetty0");
77 static char options[8];
78 while (s && s[i] >= '0' && s[i] <= '9') {
83 strcpy(c->name, "ttyS");
84 c->options = s ? options : NULL;
86 prom_printf("Serial console: %s%d %s\n",
87 c->name, c->index, options);
92 argptr = prom_getcmdline();
93 if ((argptr = strstr(argptr, "kgdb=ttyS")) != NULL) {
95 argptr += strlen("kgdb=ttyS");
96 if (*argptr != '0' && *argptr != '1')
97 printk("KGDB: Uknown serial line /dev/ttyS%c, "
98 "falling back to /dev/ttyS1\n", *argptr);
99 line = *argptr == '0' ? 0 : 1;
100 printk("KGDB: Using serial line /dev/ttyS%d for session\n",
105 generic_putDebugChar = rs_putDebugChar;
106 generic_getDebugChar = rs_getDebugChar;
109 generic_putDebugChar = saa9730_putDebugChar;
110 generic_getDebugChar = saa9730_getDebugChar;
113 prom_printf("KGDB: Using serial line /dev/ttyS%d for session, "
114 "please connect your debugger\n", line ? 1 : 0);
117 /* Breakpoints and stuff are in atlas_irq_setup() */
120 argptr = prom_getcmdline();
122 if ((argptr = strstr(argptr, "nofpu")) != NULL)
123 cpu_data[0].options &= ~MIPS_CPU_FPU;
125 rtc_ops = &atlas_rtc_ops;
126 board_time_init = mips_time_init;
127 board_timer_setup = mips_timer_setup;
128 rtc_get_time = mips_rtc_get_time;