patch-2.4.0-test9 linux/arch/ppc/xmon/start.c
Next file: linux/arch/ppc/xmon/xmon.c
Previous file: linux/arch/ppc/mm/init.c
Back to the patch index
Back to the overall index
- Lines: 128
- Date:
Sun Sep 17 09:48:07 2000
- Orig file:
v2.4.0-test8/linux/arch/ppc/xmon/start.c
- Orig date:
Mon Jun 19 17:59:37 2000
diff -u --recursive --new-file v2.4.0-test8/linux/arch/ppc/xmon/start.c linux/arch/ppc/xmon/start.c
@@ -8,6 +8,7 @@
#include <asm/page.h>
#include <linux/adb.h>
#include <linux/pmu.h>
+#include <linux/cuda.h>
#include <linux/kernel.h>
#include <asm/prom.h>
#include <asm/bootx.h>
@@ -67,6 +68,12 @@
use_screen = 1;
}
#endif
+#ifdef CONFIG_ADB_CUDA
+ if (!via_modem && disp_bi ) {
+ prom_drawstring("xmon uses screen and keyboard\n");
+ use_screen = 1;
+ }
+#endif
#endif
#ifdef CHRP_ESCC
@@ -100,6 +107,10 @@
/* should already be mapped by the kernel boot */
sccc = (volatile unsigned char *) (isa_io_base + 0x3fd);
sccd = (volatile unsigned char *) (isa_io_base + 0x3f8);
+ if (xmon_use_sccb) {
+ sccc -= 0x100;
+ sccd -= 0x100;
+ }
TXRDY = 0x20;
RXRDY = 1;
}
@@ -109,6 +120,19 @@
void xmon_init_scc(void);
extern void pmu_poll(void);
+extern void cuda_poll(void);
+
+static inline void do_poll_adb(void)
+{
+#ifdef CONFIG_ADB_PMU
+ if (sys_ctrler == SYS_CTRLER_PMU)
+ pmu_poll();
+#endif /* CONFIG_ADB_PMU */
+#ifdef CONFIG_ADB_CUDA
+ if (sys_ctrler == SYS_CTRLER_CUDA)
+ cuda_poll();
+#endif /* CONFIG_ADB_CUDA */
+}
int
xmon_write(void *handle, void *ptr, int nb)
@@ -128,12 +152,8 @@
xmon_init_scc();
ct = 0;
for (i = 0; i < nb; ++i) {
- while ((*sccc & TXRDY) == 0) {
-#ifdef CONFIG_ADB_PMU
- if (sys_ctrler == SYS_CTRLER_PMU)
- pmu_poll();
-#endif /* CONFIG_ADB_PMU */
- }
+ while ((*sccc & TXRDY) == 0)
+ do_poll_adb();
c = p[i];
if (c == '\n' && !ct) {
c = '\r';
@@ -189,9 +209,7 @@
prom_drawchar('\b');
t = 200000;
}
-#ifdef CONFIG_ADB_PMU
- pmu_poll();
-#endif /* CONFIG_ADB_PMU */
+ do_poll_adb();
} while (xmon_adb_keycode == -1);
k = xmon_adb_keycode;
if (on)
@@ -230,14 +248,9 @@
xmon_init_scc();
for (i = 0; i < nb; ++i) {
while ((*sccc & RXRDY) == 0)
-#ifdef CONFIG_ADB_PMU
- if (sys_ctrler == SYS_CTRLER_PMU)
- pmu_poll();
-#else
- ;
-#endif /* CONFIG_ADB_PMU */
+ do_poll_adb();
buf_access();
- *p++ = *sccd;
+ *p++ = *sccd;
}
return i;
}
@@ -246,10 +259,7 @@
xmon_read_poll(void)
{
if ((*sccc & RXRDY) == 0) {
-#ifdef CONFIG_ADB_PMU
- if (sys_ctrler == SYS_CTRLER_PMU)
- pmu_poll();
-#endif /* CONFIG_ADB_PMU */
+ do_poll_adb();
return -1;
}
buf_access();
@@ -490,4 +500,20 @@
}
*p = 0;
return str;
+}
+
+void
+xmon_enter(void)
+{
+#ifdef CONFIG_ADB_PMU
+ pmu_suspend();
+#endif
+}
+
+void
+xmon_leave(void)
+{
+#ifdef CONFIG_ADB_PMU
+ pmu_resume();
+#endif
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)