Port-news68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

news68k PROM function based framebuffer console support



Dear news68k users,

As seen in source-changes@, I've committed preliminary PROM internal
function based framebuffer console output support:
http://mail-index.NetBSD.org/source-changes/2011/11/20/msg029148.html

---
Module Name:    src
Committed By:   tsutsui
Date:           Sun Nov 20 15:38:00 UTC 2011

Modified Files:
        src/sys/arch/news68k/conf: GENERIC INSTALL files.news68k majors.news68k
        src/sys/arch/news68k/dev: if_le.c kb_hb.c si.c zs.c
        src/sys/arch/news68k/include: cpu.h vmparam.h
        src/sys/arch/news68k/news68k: locore.s machdep.c pmap_bootstrap.c
Added Files:
        src/sys/arch/news68k/news68k: romcalls.S romcons.c

Log Message:
Add preliminary PROM internal function based framebuffer console support,
which was demonstrated at Open Source Conference 2011 Kansai @ Kyoto
back in July:
http://www.NetBSD.org/gallery/events.html#opensourceconf2011-Kansai

- map 0xc0000000-0xffffffff PA region (which is mirror of PA 0x0-0x3fffffff)
  to the same VA via %tt0 and %tt1 registers and move KVA space accordingly
  (like luna68k does for its devices)
- save trap #0 vector for PROM function calls in early bootstrap
  and register it to trap #14 to call it from kernel for console output
- add dumb romcall based tty attachment taken from src/sys/dev/ofw/ofcons.c
- add rom function call stubs from news68k/stand/common/romcalls.S
- remove IIOV() macro for device registers where now mapped PA==VA via %tt1

XXX: romcons is not enabled yet because there is no generic interface
XXX: to attach wskbd(4) to non wsdisplay(4) devices like this romcons.
---

It's still disabled by default, but it can be used with the attached
ugly patch for MI wskbd.c to attach MI wskbd to MD romcons:

---
Index: sys/dev/wscons/wskbd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wskbd.c,v
retrieving revision 1.130
diff -u -p -r1.130 wskbd.c
--- sys/dev/wscons/wskbd.c      26 Oct 2010 05:12:34 -0000      1.130
+++ sys/dev/wscons/wskbd.c      20 Nov 2011 15:59:17 -0000
@@ -703,6 +703,27 @@ wskbd_input(device_t dev, u_int type, in
                return;
        }
 #endif
+#ifdef news68k
+#include "romcons.h"
+#if NROMCONS > 0
+       if (sc->sc_translating) {
+               int num, i;
+               keysym_t ks;
+               extern bool romcons_is_console;
+               extern void romcons_kbdinput(int);
+
+               if (romcons_is_console) {
+                       num = wskbd_translate(sc->id, type, value);
+                       for (i = 0; i < num; i++) {
+                               ks = sc->id->t_symbols[i];
+                               if (KS_GROUP(ks) == KS_GROUP_Plain &&
+                                   KS_VALUE(ks) <= 0x7f);
+                                       romcons_kbdinput(KS_VALUE(ks));
+                       }
+               }
+       }
+#endif
+#endif
 
        wskbd_deliver_event(sc, type, value);
 

---

Have fun,

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index