aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/kbd
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2019-12-16 04:52:06 +0000
committerKyle Evans <kevans@FreeBSD.org>2019-12-16 04:52:06 +0000
commit61a72158bb8f85456dd00ebf24c1008ef7313fa5 (patch)
tree99d1ad7baed77141a5e087afb5e8c5c00d1f1625 /sys/dev/kbd
parent21d166316ae34625f3f3a0aae247e2d96eba9a16 (diff)
downloadsrc-61a72158bb8f85456dd00ebf24c1008ef7313fa5.tar.gz
src-61a72158bb8f85456dd00ebf24c1008ef7313fa5.zip
kbd: patch linker set methods, too
This is needed after r355796. Some double-registration of kbd drivers needs to be sorted out, then this sysinit will simply add these drivers into the normal list and kill off any other bits in the driver that are aware of the linker set, for simplicity.
Notes
Notes: svn path=/head/; revision=355799
Diffstat (limited to 'sys/dev/kbd')
-rw-r--r--sys/dev/kbd/kbd.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c
index 1d2f13ab82cf..5e4731bb60e0 100644
--- a/sys/dev/kbd/kbd.c
+++ b/sys/dev/kbd/kbd.c
@@ -1506,3 +1506,20 @@ kbd_ev_event(keyboard_t *kbd, uint16_t type, uint16_t code, int32_t value)
kbdd_ioctl(kbd, KDSETREPEAT, (caddr_t)delay);
}
}
+
+static void
+kbd_drv_init(void)
+{
+ const keyboard_driver_t **list;
+ const keyboard_driver_t *p;
+
+ SET_FOREACH(list, kbddriver_set) {
+ p = *list;
+ if (p->kbdsw->get_fkeystr == NULL)
+ p->kbdsw->get_fkeystr = genkbd_get_fkeystr;
+ if (p->kbdsw->diag == NULL)
+ p->kbdsw->diag = genkbd_diag;
+ }
+}
+
+SYSINIT(kbd_drv_init, SI_SUB_DRIVERS, SI_ORDER_FIRST, kbd_drv_init, NULL);