summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/ic/vga.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/sys/dev/ic/vga.c b/sys/dev/ic/vga.c
index 688fbfd2349..cb35acfaa6a 100644
--- a/sys/dev/ic/vga.c
+++ b/sys/dev/ic/vga.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vga.c,v 1.63 2014/07/13 23:10:23 deraadt Exp $ */
+/* $OpenBSD: vga.c,v 1.64 2015/03/29 17:23:00 miod Exp $ */
/* $NetBSD: vga.c,v 1.28.2.1 2000/06/30 16:27:47 simonb Exp $ */
/*-
@@ -86,14 +86,17 @@ static struct vgafont {
int firstchar, numchars;
#endif
int slot;
+ void *fontdata;
} vga_builtinfont = {
- "builtin",
- 16,
- WSDISPLAY_FONTENC_IBM,
+ .name = "builtin",
+ .height = 16,
+ .encoding = WSDISPLAY_FONTENC_IBM,
#ifdef notyet
- 0, 256,
+ .firstchar = 0,
+ .numchars = 256,
#endif
- 0
+ .slot = 0,
+ .fontdata = NULL
};
int vgaconsole, vga_console_type, vga_console_attached;
@@ -838,7 +841,10 @@ vga_load_font(void *v, void *cookie, struct wsdisplay_font *data)
int res, slot;
struct vgafont *f;
- if (scr) {
+ if (data->data == NULL) {
+ if (scr == NULL)
+ return EINVAL;
+
if ((name2 = data->name) != NULL) {
while (*name2 && *name2 != ',')
name2++;
@@ -846,7 +852,7 @@ vga_load_font(void *v, void *cookie, struct wsdisplay_font *data)
*name2++ = '\0';
}
res = vga_selectfont(vc, scr, data->name, name2);
- if (!res)
+ if (res == 0)
vga_setfont(vc, scr);
return (res);
}
@@ -884,6 +890,7 @@ vga_load_font(void *v, void *cookie, struct wsdisplay_font *data)
#endif
vga_loadchars(&vc->hdl, slot, 0, 256, f->height, data->data);
f->slot = slot;
+ f->fontdata = data->data;
vc->vc_fonts[slot] = f;
data->cookie = f;
data->index = slot;