patch-2.4.10 linux/arch/ppc/xmon/start.c
Next file: linux/arch/s390/kernel/init_task.c
Previous file: linux/arch/ppc/vmlinux.lds
Back to the patch index
Back to the overall index
- Lines: 170
- Date:
Tue Aug 28 06:58:33 2001
- Orig file:
v2.4.9/linux/arch/ppc/xmon/start.c
- Orig date:
Mon May 21 17:04:47 2001
diff -u --recursive --new-file v2.4.9/linux/arch/ppc/xmon/start.c linux/arch/ppc/xmon/start.c
@@ -1,5 +1,5 @@
/*
- * BK Id: SCCS/s.start.c 1.12 05/21/01 21:39:13 paulus
+ * BK Id: SCCS/s.start.c 1.16 08/20/01 22:17:58 paulus
*/
/*
* Copyright (C) 1996 Paul Mackerras.
@@ -18,6 +18,7 @@
#include <asm/feature.h>
#include <asm/processor.h>
#include <asm/delay.h>
+#include <asm/btext.h>
#ifdef CONFIG_SMP
#include <asm/bitops.h>
#endif
@@ -25,8 +26,6 @@
static volatile unsigned char *sccc, *sccd;
unsigned long TXRDY, RXRDY;
extern void xmon_printf(const char *fmt, ...);
-extern void prom_drawchar(char);
-extern void prom_drawstring(const char *str);
static int xmon_expect(const char *str, unsigned int timeout);
static int console;
@@ -56,6 +55,7 @@
void
xmon_map_scc(void)
{
+#ifdef CONFIG_ALL_PPC
volatile unsigned char *base;
use_screen = 0;
@@ -85,14 +85,34 @@
use_screen = 1;
#endif
}
- prom_drawstring("xmon uses ");
+ if (!use_screen && (np = find_devices("escc")) != NULL) {
+ /*
+ * look for the device node for the serial port
+ * we're using and see if it says it has a modem
+ */
+ char *name = xmon_use_sccb? "ch-b": "ch-a";
+ char *slots;
+ int l;
+
+ np = np->child;
+ while (np != NULL && strcmp(np->name, name) != 0)
+ np = np->sibling;
+ if (np != NULL) {
+ /* XXX should parse this properly */
+ slots = get_property(np, "slot-names", &l);
+ if (slots != NULL && l >= 10
+ && strcmp(slots+4, "Modem") == 0)
+ via_modem = 1;
+ }
+ }
+ btext_drawstring("xmon uses ");
if (use_screen)
- prom_drawstring("screen and keyboard\n");
+ btext_drawstring("screen and keyboard\n");
else {
if (via_modem)
- prom_drawstring("modem on ");
- prom_drawstring(xmon_use_sccb? "printer": "modem");
- prom_drawstring(" port\n");
+ btext_drawstring("modem on ");
+ btext_drawstring(xmon_use_sccb? "printer": "modem");
+ btext_drawstring(" port\n");
}
#endif /* CONFIG_BOOTX_TEXT */
@@ -114,15 +134,6 @@
sccc = base + (addr & ~PAGE_MASK);
sccd = sccc + 0x10;
}
- else if ( _machine & _MACH_gemini )
- {
- /* should already be mapped by the kernel boot */
- sccc = (volatile unsigned char *) 0xffeffb0d;
- sccd = (volatile unsigned char *) 0xffeffb08;
- TXRDY = 0x20;
- RXRDY = 1;
- console = 1;
- }
else
{
/* should already be mapped by the kernel boot */
@@ -135,6 +146,14 @@
TXRDY = 0x20;
RXRDY = 1;
}
+#elif defined(CONFIG_GEMINI)
+ /* should already be mapped by the kernel boot */
+ sccc = (volatile unsigned char *) 0xffeffb0d;
+ sccd = (volatile unsigned char *) 0xffeffb08;
+ TXRDY = 0x20;
+ RXRDY = 1;
+ console = 1;
+#endif /* platform */
}
static int scc_initialized = 0;
@@ -175,7 +194,7 @@
if (use_screen) {
/* write it on the screen */
for (i = 0; i < nb; ++i)
- prom_drawchar(*p++);
+ btext_drawchar(*p++);
goto out;
}
#endif
@@ -216,7 +235,7 @@
static unsigned char xmon_keytab[128] =
"asdfhgzxcv\000bqwer" /* 0x00 - 0x0f */
- "yt123465=97-80o]" /* 0x10 - 0x1f */
+ "yt123465=97-80]o" /* 0x10 - 0x1f */
"u[ip\rlj'k;\\,/nm." /* 0x20 - 0x2f */
"\t `\177\0\033\0\0\0\0\0\0\0\0\0\0" /* 0x30 - 0x3f */
"\0.\0*\0+\0\0\0\0\0/\r\0-\0" /* 0x40 - 0x4f */
@@ -224,7 +243,7 @@
static unsigned char xmon_shift_keytab[128] =
"ASDFHGZXCV\000BQWER" /* 0x00 - 0x0f */
- "YT!@#$^%+(&=*)}O" /* 0x10 - 0x1f */
+ "YT!@#$^%+(&_*)}O" /* 0x10 - 0x1f */
"U{IP\rLJ\"K:|<?NM>" /* 0x20 - 0x2f */
"\t ~\177\0\033\0\0\0\0\0\0\0\0\0\0" /* 0x30 - 0x3f */
"\0.\0*\0+\0\0\0\0\0/\r\0-\0" /* 0x40 - 0x4f */
@@ -243,15 +262,15 @@
do {
if (--t < 0) {
on = 1 - on;
- prom_drawchar(on? 0xdb: 0x20);
- prom_drawchar('\b');
+ btext_drawchar(on? 0xdb: 0x20);
+ btext_drawchar('\b');
t = 200000;
}
do_poll_adb();
} while (xmon_adb_keycode == -1);
k = xmon_adb_keycode;
if (on)
- prom_drawstring(" \b");
+ btext_drawstring(" \b");
/* test for shift keys */
if ((k & 0x7f) == 0x38 || (k & 0x7f) == 0x7b) {
@@ -544,7 +563,9 @@
xmon_enter(void)
{
#ifdef CONFIG_ADB_PMU
- pmu_suspend();
+ if (_machine == _MACH_Pmac) {
+ pmu_suspend();
+ }
#endif
}
@@ -552,6 +573,8 @@
xmon_leave(void)
{
#ifdef CONFIG_ADB_PMU
- pmu_resume();
+ if (_machine == _MACH_Pmac) {
+ pmu_resume();
+ }
#endif
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)