summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith M Wesolowski <wesolows@foobazco.org>2000-08-01 04:24:49 +0000
committerKeith M Wesolowski <wesolows@foobazco.org>2000-08-01 04:24:49 +0000
commitf7bbf9552e93a3fa9e5aa7c5cfed458b77b37695 (patch)
tree137da613a3a73d0c311fbcc3210f51c6f15c1ae4
parent7f78cc6fbe77afbbd4c84f2c8fab9c92f58b1976 (diff)
ARC console is not just for IP22.
Timer dead code cleanup.
-rw-r--r--Documentation/Configure.help2
-rw-r--r--arch/mips/arc/Makefile8
-rw-r--r--arch/mips/arc/arc_con.c69
-rw-r--r--arch/mips/arc/cmdline.c2
-rw-r--r--arch/mips/arc/console.c32
-rw-r--r--arch/mips/arc/printf.c40
-rw-r--r--arch/mips/config.in5
-rw-r--r--arch/mips/defconfig3
-rw-r--r--arch/mips/defconfig-ip223
-rw-r--r--arch/mips/sgi/kernel/Makefile3
-rw-r--r--arch/mips/sgi/kernel/indy_timer.c297
-rw-r--r--arch/mips/sgi/kernel/promcon.c72
-rw-r--r--arch/mips/sgi/kernel/setup.c12
-rw-r--r--arch/mips64/sgi-ip22/ip22-setup.c2
-rw-r--r--drivers/char/mem.c6
-rw-r--r--drivers/char/tty_io.c3
16 files changed, 126 insertions, 433 deletions
diff --git a/Documentation/Configure.help b/Documentation/Configure.help
index a5fa3b1d4..b64444b26 100644
--- a/Documentation/Configure.help
+++ b/Documentation/Configure.help
@@ -2211,7 +2211,7 @@ CONFIG_SERIAL_MULTIPORT
of those special I/O ports.
SGI PROM Console Support
-CONFIG_SGI_PROM_CONSOLE
+CONFIG_ARC_CONSOLE
Say Y here if you want to use the PROMs for console I/O.
SGI Zilog85C30 serial support
diff --git a/arch/mips/arc/Makefile b/arch/mips/arc/Makefile
index 7bfefcfba..e37207b33 100644
--- a/arch/mips/arc/Makefile
+++ b/arch/mips/arc/Makefile
@@ -10,7 +10,11 @@
# Note 2! The CFLAGS definitions are now in the main makefile...
L_TARGET = arclib.a
-L_OBJS = console.o init.o printf.o memory.o tree.o env.o cmdline.o misc.o \
- time.o file.o identify.o
+L_OBJS = console.o init.o memory.o tree.o env.o cmdline.o misc.o time.o \
+ file.o identify.o
+
+ifdef CONFIG_ARC_CONSOLE
+L_OBJS += arc_con.o
+endif
include $(TOPDIR)/Rules.make
diff --git a/arch/mips/arc/arc_con.c b/arch/mips/arc/arc_con.c
new file mode 100644
index 000000000..6fe94a6c7
--- /dev/null
+++ b/arch/mips/arc/arc_con.c
@@ -0,0 +1,69 @@
+/*
+ * Wrap-around code for a console using the
+ * ARC io-routines.
+ *
+ * Copyright (c) 1998 Harald Koerfgen
+ */
+
+#include <linux/tty.h>
+#include <linux/major.h>
+#include <linux/ptrace.h>
+#include <linux/init.h>
+#include <linux/console.h>
+#include <linux/fs.h>
+
+extern char prom_getchar (void);
+extern void prom_printf (char *, ...);
+
+static void prom_console_write(struct console *co, const char *s,
+ unsigned count)
+{
+ unsigned i;
+
+ /*
+ * Now, do each character
+ */
+ for (i = 0; i < count; i++) {
+ if (*s == 10)
+ prom_printf("%c", 13);
+ prom_printf("%c", *s++);
+ }
+}
+
+static int prom_console_wait_key(struct console *co)
+{
+ return prom_getchar();
+}
+
+static int __init prom_console_setup(struct console *co, char *options)
+{
+ return 0;
+}
+
+static kdev_t prom_console_device(struct console *c)
+{
+ return MKDEV(TTY_MAJOR, 64 + c->index);
+}
+
+static struct console arc_cons = {
+ "ttyS",
+ prom_console_write,
+ NULL,
+ prom_console_device,
+ prom_console_wait_key,
+ NULL,
+ prom_console_setup,
+ CON_PRINTBUFFER,
+ -1,
+ 0,
+ NULL
+};
+
+/*
+ * Register console.
+ */
+
+void __init arc_console_init(void)
+{
+ register_console(&arc_cons);
+}
diff --git a/arch/mips/arc/cmdline.c b/arch/mips/arc/cmdline.c
index d60ff2bab..ba356e65d 100644
--- a/arch/mips/arc/cmdline.c
+++ b/arch/mips/arc/cmdline.c
@@ -12,7 +12,7 @@
#include <asm/sgialib.h>
#include <asm/bootinfo.h>
-/* #define DEBUG_CMDLINE */
+#undef DEBUG_CMDLINE
char arcs_cmdline[CL_SIZE];
diff --git a/arch/mips/arc/console.c b/arch/mips/arc/console.c
index 4de5130fb..cf367a3c1 100644
--- a/arch/mips/arc/console.c
+++ b/arch/mips/arc/console.c
@@ -8,6 +8,7 @@
*/
#include <linux/config.h>
#include <linux/init.h>
+#include <linux/kernel.h>
#include <asm/sgialib.h>
#include <asm/bcache.h>
@@ -20,7 +21,7 @@
*/
extern struct bcache_ops *bcops;
-#ifdef CONFIG_SGI_PROM_CONSOLE
+#ifdef CONFIG_ARC_CONSOLE
void prom_putchar(char c)
#else
void __init prom_putchar(char c)
@@ -34,7 +35,7 @@ void __init prom_putchar(char c)
bcops->bc_enable();
}
-#ifdef CONFIG_SGI_PROM_CONSOLE
+#ifdef CONFIG_ARC_CONSOLE
char prom_getchar(void)
#else
char __init prom_getchar(void)
@@ -48,3 +49,30 @@ char __init prom_getchar(void)
bcops->bc_enable();
return c;
}
+
+static char ppbuf[1024];
+
+#ifdef CONFIG_ARC_CONSOLE
+void prom_printf(char *fmt, ...)
+#else
+void __init prom_printf(char *fmt, ...)
+#endif
+{
+ va_list args;
+ char ch, *bptr;
+ int i;
+
+ va_start(args, fmt);
+ i = vsprintf(ppbuf, fmt, args);
+
+ bptr = ppbuf;
+
+ while((ch = *(bptr++)) != 0) {
+ if(ch == '\n')
+ prom_putchar('\r');
+
+ prom_putchar(ch);
+ }
+ va_end(args);
+ return;
+}
diff --git a/arch/mips/arc/printf.c b/arch/mips/arc/printf.c
deleted file mode 100644
index 78b1b5937..000000000
--- a/arch/mips/arc/printf.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * printf.c: Putting things on the screen using SGI arcs
- * PROM facilities.
- *
- * Copyright (C) 1996 David S. Miller (dm@sgi.com)
- *
- * $Id: printf.c,v 1.3 1999/10/09 00:00:57 ralf Exp $
- */
-#include <linux/config.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-
-#include <asm/sgialib.h>
-
-static char ppbuf[1024];
-
-#ifdef CONFIG_SGI_PROM_CONSOLE
-void prom_printf(char *fmt, ...)
-#else
-void __init prom_printf(char *fmt, ...)
-#endif
-{
- va_list args;
- char ch, *bptr;
- int i;
-
- va_start(args, fmt);
- i = vsprintf(ppbuf, fmt, args);
-
- bptr = ppbuf;
-
- while((ch = *(bptr++)) != 0) {
- if(ch == '\n')
- prom_putchar('\r');
-
- prom_putchar(ch);
- }
- va_end(args);
- return;
-}
diff --git a/arch/mips/config.in b/arch/mips/config.in
index e546eb5c2..8126ff15b 100644
--- a/arch/mips/config.in
+++ b/arch/mips/config.in
@@ -151,6 +151,10 @@ if [ "$CONFIG_CPU_LITTLE_ENDIAN" = "n" ]; then
bool 'Include forward keyboard' CONFIG_FORWARD_KEYBOARD
fi
+if [ "$CONFIG_ARC32" = "y" ]; then
+ bool 'ARC console support' CONFIG_ARC_CONSOLE
+fi
+
define_bool CONFIG_BINFMT_AOUT n
define_bool CONFIG_BINFMT_ELF y
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
@@ -337,7 +341,6 @@ if [ "$CONFIG_SGI_IP22" = "y" ]; then
else
define_bool CONFIG_FONT_8x16 y
fi
- bool 'SGI PROM Console Support' CONFIG_SGI_PROM_CONSOLE
fi
bool 'PS/2 mouse support' CONFIG_PSMOUSE
if [ "$CONFIG_PSMOUSE" != "n" ]; then
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
index 61436603d..99df6b011 100644
--- a/arch/mips/defconfig
+++ b/arch/mips/defconfig
@@ -24,6 +24,7 @@ CONFIG_SGI_IP22=y
# CONFIG_SBUS is not set
CONFIG_ARC32=y
CONFIG_PC_KEYB=y
+# CONFIG_PSMOUSE is not set
CONFIG_SGI=y
# CONFIG_ISA is not set
# CONFIG_PCI is not set
@@ -219,7 +220,7 @@ CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SGI_NEWPORT_CONSOLE=y
CONFIG_FONT_8x16=y
-# CONFIG_SGI_PROM_CONSOLE is not set
+# CONFIG_ARC_CONSOLE is not set
# CONFIG_UNIX98_PTYS is not set
#
diff --git a/arch/mips/defconfig-ip22 b/arch/mips/defconfig-ip22
index 61436603d..bef1b1f71 100644
--- a/arch/mips/defconfig-ip22
+++ b/arch/mips/defconfig-ip22
@@ -24,6 +24,7 @@ CONFIG_SGI_IP22=y
# CONFIG_SBUS is not set
CONFIG_ARC32=y
CONFIG_PC_KEYB=y
+CONFIG_PSMOUSE=y
CONFIG_SGI=y
# CONFIG_ISA is not set
# CONFIG_PCI is not set
@@ -219,7 +220,7 @@ CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_SGI_NEWPORT_CONSOLE=y
CONFIG_FONT_8x16=y
-# CONFIG_SGI_PROM_CONSOLE is not set
+# CONFIG_ARC_CONSOLE is not set
# CONFIG_UNIX98_PTYS is not set
#
diff --git a/arch/mips/sgi/kernel/Makefile b/arch/mips/sgi/kernel/Makefile
index 6eb3f1775..f016cd12f 100644
--- a/arch/mips/sgi/kernel/Makefile
+++ b/arch/mips/sgi/kernel/Makefile
@@ -15,9 +15,6 @@
OBJS = indy_mc.o indy_sc.o indy_hpc.o indy_int.o indy_rtc.o \
system.o indyIRQ.o reset.o setup.o time.o
-ifdef CONFIG_SGI_PROM_CONSOLE
-OBJS += promcon.o
-endif
all: sgikern.a
diff --git a/arch/mips/sgi/kernel/indy_timer.c b/arch/mips/sgi/kernel/indy_timer.c
deleted file mode 100644
index 3306cdc25..000000000
--- a/arch/mips/sgi/kernel/indy_timer.c
+++ /dev/null
@@ -1,297 +0,0 @@
-/* $Id: indy_timer.c,v 1.17 2000/01/21 22:34:03 ralf Exp $
- *
- * indy_timer.c: Setting up the clock on the INDY 8254 controller.
- *
- * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com)
- * Copytight (C) 1997, 1998 Ralf Baechle (ralf@gnu.org)
- */
-#include <linux/errno.h>
-#include <linux/init.h>
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/param.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <linux/interrupt.h>
-#include <linux/timex.h>
-#include <linux/kernel_stat.h>
-
-#include <asm/bootinfo.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/ptrace.h>
-#include <asm/system.h>
-#include <asm/sgialib.h>
-#include <asm/sgi/sgi.h>
-#include <asm/sgi/sgihpc.h>
-#include <asm/sgi/sgint23.h>
-
-
-/* Because of a bug in the i8254 timer we need to use the onchip r4k
- * counter as our system wide timer interrupt running at 100HZ.
- */
-static unsigned long r4k_offset; /* Amount to increment compare reg each time */
-static unsigned long r4k_cur; /* What counter should be at next timer irq */
-
-extern rwlock_t xtime_lock;
-
-static inline void ack_r4ktimer(unsigned long newval)
-{
- write_32bit_cp0_register(CP0_COMPARE, newval);
-}
-
-static int set_rtc_mmss(unsigned long nowtime)
-{
- struct indy_clock *clock = (struct indy_clock *)INDY_CLOCK_REGS;
- int retval = 0;
- int real_seconds, real_minutes, clock_minutes;
-
-#define FROB_FROM_CLOCK(x) (((x) & 0xf) | ((((x) & 0xf0) >> 4) * 10));
-#define FROB_TO_CLOCK(x) ((((((x) & 0xff) / 10)<<4) | (((x) & 0xff) % 10)) & 0xff)
-
- clock->cmd &= ~(0x80);
- clock_minutes = clock->min;
- clock->cmd |= (0x80);
-
- clock_minutes = FROB_FROM_CLOCK(clock_minutes);
- real_seconds = nowtime % 60;
- real_minutes = nowtime / 60;
-
- if(((abs(real_minutes - clock_minutes) + 15)/30) & 1)
- real_minutes += 30; /* correct for half hour time zone */
-
- real_minutes %= 60;
- if(abs(real_minutes - clock_minutes) < 30) {
- /* Force clock oscillator to be on. */
- clock->month &= ~(0x80);
-
- /* Write real_seconds and real_minutes into the Dallas. */
- clock->cmd &= ~(0x80);
- clock->sec = real_seconds;
- clock->min = real_minutes;
- clock->cmd |= (0x80);
- } else
- return -1;
-
-#undef FROB_FROM_CLOCK
-#undef FROB_TO_CLOCK
-
- return retval;
-}
-
-static long last_rtc_update = 0;
-unsigned long missed_heart_beats = 0;
-
-void indy_timer_interrupt(struct pt_regs *regs)
-{
- unsigned long count;
- int irq = 7;
-
- write_lock(&xtime_lock);
- /* Ack timer and compute new compare. */
- count = read_32bit_cp0_register(CP0_COUNT);
- /* This has races. */
- if ((count - r4k_cur) >= r4k_offset) {
- /* If this happens to often we'll need to compensate. */
- missed_heart_beats++;
- r4k_cur = count + r4k_offset;
- }
- else
- r4k_cur += r4k_offset;
- ack_r4ktimer(r4k_cur);
- kstat.irqs[0][irq]++;
- do_timer(regs);
-
- /* We update the Dallas time of day approx. every 11 minutes,
- * because of how the numbers work out we need to make
- * absolutely sure we do this update within 500ms before the
- * next second starts, thus the following code.
- */
- if ((time_status & STA_UNSYNC) == 0 &&
- xtime.tv_sec > last_rtc_update + 660 &&
- xtime.tv_usec >= 500000 - (tick >> 1) &&
- xtime.tv_usec <= 500000 + (tick >> 1)) {
- if (set_rtc_mmss(xtime.tv_sec) == 0)
- last_rtc_update = xtime.tv_sec;
- else
- /* do it again in 60 s */
- last_rtc_update = xtime.tv_sec - 600;
- }
- write_unlock(&xtime_lock);
-}
-
-static unsigned long dosample(volatile unsigned char *tcwp,
- volatile unsigned char *tc2p)
-{
- unsigned long ct0, ct1;
- unsigned char msb, lsb;
-
- /* Start the counter. */
- *tcwp = (SGINT_TCWORD_CNT2 | SGINT_TCWORD_CALL | SGINT_TCWORD_MRGEN);
- *tc2p = (SGINT_TCSAMP_COUNTER & 0xff);
- *tc2p = (SGINT_TCSAMP_COUNTER >> 8);
-
- /* Get initial counter invariant */
- ct0 = read_32bit_cp0_register(CP0_COUNT);
-
- /* Latch and spin until top byte of counter2 is zero */
- do {
- *tcwp = (SGINT_TCWORD_CNT2 | SGINT_TCWORD_CLAT);
- lsb = *tc2p;
- msb = *tc2p;
- ct1 = read_32bit_cp0_register(CP0_COUNT);
- } while(msb);
-
- /* Stop the counter. */
- *tcwp = (SGINT_TCWORD_CNT2 | SGINT_TCWORD_CALL | SGINT_TCWORD_MSWST);
-
- /* Return the difference, this is how far the r4k counter increments
- * for every one HZ.
- */
- return ct1 - ct0;
-}
-
-/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
- * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
- * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
- *
- * [For the Julian calendar (which was used in Russia before 1917,
- * Britain & colonies before 1752, anywhere else before 1582,
- * and is still in use by some communities) leave out the
- * -year/100+year/400 terms, and add 10.]
- *
- * This algorithm was first published by Gauss (I think).
- *
- * WARNING: this function will overflow on 2106-02-07 06:28:16 on
- * machines were long is 32-bit! (However, as time_t is signed, we
- * will already get problems at other places on 2038-01-19 03:14:08)
- */
-static inline unsigned long mktime(unsigned int year, unsigned int mon,
- unsigned int day, unsigned int hour,
- unsigned int min, unsigned int sec)
-{
- if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
- mon += 12; /* Puts Feb last since it has leap day */
- year -= 1;
- }
- return (((
- (unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
- year*365 - 719499
- )*24 + hour /* now have hours */
- )*60 + min /* now have minutes */
- )*60 + sec; /* finally seconds */
-}
-
-static unsigned long __init get_indy_time(void)
-{
- struct indy_clock *clock = (struct indy_clock *)INDY_CLOCK_REGS;
- unsigned int year, mon, day, hour, min, sec;
-
- /* Freeze it. */
- clock->cmd &= ~(0x80);
-
- /* Read regs. */
- sec = clock->sec;
- min = clock->min;
- hour = (clock->hr & 0x3f);
- day = (clock->date & 0x3f);
- mon = (clock->month & 0x1f);
- year = clock->year;
-
- /* Unfreeze clock. */
- clock->cmd |= 0x80;
-
- /* Frob the bits. */
-#define FROB1(x) (((x) & 0xf) + ((((x) & 0xf0) >> 4) * 10));
-#define FROB2(x) (((x) & 0xf) + (((((x) & 0xf0) >> 4) & 0x3) * 10));
-
- /* XXX Should really check that secs register is the same
- * XXX as when we first read it and if not go back and
- * XXX read the regs above again.
- */
- sec = FROB1(sec); min = FROB1(min); day = FROB1(day);
- mon = FROB1(mon); year = FROB1(year);
- hour = FROB2(hour);
-
-#undef FROB1
-#undef FROB2
-
- /* Wheee... */
- if(year < 45)
- year += 30;
- if ((year += 1940) < 1970)
- year += 100;
-
- return mktime(year, mon, day, hour, min, sec);
-}
-
-#define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5)
-
-void __init indy_timer_init(void)
-{
- struct sgi_ioc_timers *p;
- volatile unsigned char *tcwp, *tc2p;
-
- /* Figure out the r4k offset, the algorithm is very simple
- * and works in _all_ cases as long as the 8254 counter
- * register itself works ok (as an interrupt driving timer
- * it does not because of bug, this is why we are using
- * the onchip r4k counter/compare register to serve this
- * purpose, but for r4k_offset calculation it will work
- * ok for us). There are other very complicated ways
- * of performing this calculation but this one works just
- * fine so I am not going to futz around. ;-)
- */
- p = ioc_timers;
- tcwp = &p->tcword;
- tc2p = &p->tcnt2;
-
- printk("calculating r4koff... ");
- dosample(tcwp, tc2p); /* First sample. */
- dosample(tcwp, tc2p); /* Eat one. */
- r4k_offset = dosample(tcwp, tc2p); /* Second sample. */
-
- printk("%08lx(%d)\n", r4k_offset, (int) r4k_offset);
-
- r4k_cur = (read_32bit_cp0_register(CP0_COUNT) + r4k_offset);
- write_32bit_cp0_register(CP0_COMPARE, r4k_cur);
- set_cp0_status(ST0_IM, ALLINTS);
- sti();
-
- write_lock_irq(&xtime_lock);
- xtime.tv_sec = get_indy_time(); /* Read time from RTC. */
- xtime.tv_usec = 0;
- write_unlock_irq(&xtime_lock);
-}
-
-void indy_8254timer_irq(void)
-{
- int cpu = smp_processor_id();
- int irq = 4;
-
- irq_enter(cpu);
- kstat.irqs[0][irq]++;
- printk("indy_8254timer_irq: Whoops, should not have gotten this IRQ\n");
- prom_getchar();
- prom_imode();
- irq_exit(cpu);
-}
-
-void do_gettimeofday(struct timeval *tv)
-{
- unsigned long flags;
-
- read_lock_irqsave(&xtime_lock, flags);
- *tv = xtime;
- read_unlock_irqrestore(&xtime_lock, flags);
-}
-
-void do_settimeofday(struct timeval *tv)
-{
- write_lock_irq(&xtime_lock);
- xtime = *tv;
- time_state = TIME_BAD;
- time_maxerror = MAXPHASE;
- time_esterror = MAXPHASE;
- write_unlock_irq(&xtime_lock);
-}
diff --git a/arch/mips/sgi/kernel/promcon.c b/arch/mips/sgi/kernel/promcon.c
deleted file mode 100644
index 391f9613c..000000000
--- a/arch/mips/sgi/kernel/promcon.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Wrap-around code for a console using the
- * SGI PROM io-routines.
- *
- * Copyright (c) 1999 Ulf Carlsson
- *
- * Derived from DECstation promcon.c
- * Copyright (c) 1998 Harald Koerfgen
- */
-
-#include <linux/tty.h>
-#include <linux/major.h>
-#include <linux/ptrace.h>
-#include <linux/init.h>
-#include <linux/console.h>
-#include <linux/fs.h>
-
-#include <asm/sgialib.h>
-
-static void prom_console_write(struct console *co, const char *s,
- unsigned count)
-{
- unsigned i;
-
- /*
- * Now, do each character
- */
- for (i = 0; i < count; i++) {
- if (*s == 10)
- prom_printf("%c", 13);
- prom_printf("%c", *s++);
- }
-}
-
-static int prom_console_wait_key(struct console *co)
-{
- return prom_getchar();
-}
-
-static int __init prom_console_setup(struct console *co, char *options)
-{
- return 0;
-}
-
-static kdev_t prom_console_device(struct console *c)
-{
- return MKDEV(TTY_MAJOR, 64 + c->index);
-}
-
-static struct console sercons =
-{
- "ttyS",
- prom_console_write,
- NULL,
- prom_console_device,
- prom_console_wait_key,
- NULL,
- prom_console_setup,
- CON_PRINTBUFFER,
- -1,
- 0,
- NULL
-};
-
-/*
- * Register console.
- */
-
-void __init sgi_prom_console_init(void )
-{
- register_console(&sercons);
-}
diff --git a/arch/mips/sgi/kernel/setup.c b/arch/mips/sgi/kernel/setup.c
index f511e98de..a1d4ca08e 100644
--- a/arch/mips/sgi/kernel/setup.c
+++ b/arch/mips/sgi/kernel/setup.c
@@ -32,7 +32,7 @@ extern void breakpoint(void);
static int remote_debug = 0;
#endif
-#if defined(CONFIG_SERIAL_CONSOLE) || defined(CONFIG_SGI_PROM_CONSOLE)
+#if defined(CONFIG_SERIAL_CONSOLE) || defined(CONFIG_ARC_CONSOLE)
extern void console_setup(char *);
#endif
@@ -180,7 +180,7 @@ void sgi_time_init (struct irqaction *irq) {
*/
struct sgi_ioc_timers *p;
volatile unsigned char *tcwp, *tc2p;
- unsigned long r4k_ticks[3] = { 0, 0, 0 };
+ unsigned long r4k_ticks[3];
unsigned long r4k_next;
/* Figure out the r4k offset, the algorithm is very simple
@@ -201,10 +201,12 @@ void sgi_time_init (struct irqaction *irq) {
dosample(tcwp, tc2p); /* Prime cache. */
dosample(tcwp, tc2p); /* Prime cache. */
/* Zero is NOT an option. */
- while (!r4k_ticks[0])
+ do {
r4k_ticks[0] = dosample (tcwp, tc2p);
- while (!r4k_ticks[1])
+ } while (!r4k_ticks[0]);
+ do {
r4k_ticks[1] = dosample (tcwp, tc2p);
+ } while (!r4k_ticks[1]);
if (r4k_ticks[0] != r4k_ticks[1]) {
printk ("warning: timer counts differ, retrying...");
@@ -290,7 +292,7 @@ void __init sgi_setup(void)
}
#endif
-#ifdef CONFIG_SGI_PROM_CONSOLE
+#ifdef CONFIG_ARC_CONSOLE
console_setup("ttyS0");
#endif
diff --git a/arch/mips64/sgi-ip22/ip22-setup.c b/arch/mips64/sgi-ip22/ip22-setup.c
index 82aa098c5..937d291d1 100644
--- a/arch/mips64/sgi-ip22/ip22-setup.c
+++ b/arch/mips64/sgi-ip22/ip22-setup.c
@@ -153,7 +153,7 @@ void __init ip22_setup(void)
console_setup ("ttyS0");
}
#endif
-#ifdef CONFIG_SGI_PROM_CONSOLE
+#ifdef CONFIG_ARC_CONSOLE
console_setup("ttyS0");
#endif
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 9c7faf625..3b5a2c497 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -49,9 +49,6 @@ extern void fbmem_init(void);
#ifdef CONFIG_PROM_CONSOLE
extern void prom_con_init(void);
#endif
-#ifdef CONFIG_SGI_PROM_CONSOLE
-extern void sgi_prom_console_init(void);
-#endif
#ifdef CONFIG_MDA_CONSOLE
extern void mda_console_init(void);
#endif
@@ -636,9 +633,6 @@ int __init chr_dev_init(void)
#if defined (CONFIG_PROM_CONSOLE)
prom_con_init();
#endif
-#if defined (CONFIG_SGI_PROM_CONSOLE)
- sgi_prom_console_init();
-#endif
#if defined (CONFIG_MDA_CONSOLE)
mda_console_init();
#endif
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 4e8d4db73..0d6e6f3fa 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -2198,6 +2198,9 @@ void __init console_init(void)
#ifdef CONFIG_SERIAL_SA1100_CONSOLE
sa1100_rs_console_init();
#endif
+#ifdef CONFIG_ARC_CONSOLE
+ arc_console_init();
+#endif
}
static struct tty_driver dev_tty_driver, dev_syscons_driver;