From 61a72158bb8f85456dd00ebf24c1008ef7313fa5 Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Mon, 16 Dec 2019 04:52:06 +0000 Subject: [PATCH] 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. --- sys/dev/kbd/kbd.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c index 1d2f13ab82c..5e4731bb60e 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);