From 8ce4e5189e95293ec4571d852337fd3266f28ba7 Mon Sep 17 00:00:00 2001 From: Hidetoshi Shimokawa Date: Sun, 13 Jul 2003 10:08:33 +0000 Subject: [PATCH] Fix for FAIL_IF_NO_KBD case as expected. Even if we have no AT keyboard, an AT keyboard is registered because it's probed with KB_CONF_PROBE_ONLY flag set during console initialization. Unregister the keyboard if it doesn't present while second probe. This should fix USB keyboard only case without 'kbdcontrol -k /dev/kbd1'. --- sys/dev/atkbdc/atkbd.c | 4 +++- sys/dev/kbd/atkbd.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c index 569f14bbd22..053b8b2f9eb 100644 --- a/sys/dev/atkbdc/atkbd.c +++ b/sys/dev/atkbdc/atkbd.c @@ -417,8 +417,10 @@ atkbd_init(int unit, keyboard_t **kbdp, void *arg, int flags) kbd->kb_config = flags & ~KB_CONF_PROBE_ONLY; if (KBD_HAS_DEVICE(kbd) && init_keyboard(state->kbdc, &kbd->kb_type, kbd->kb_config) - && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD)) + && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD)) { + kbd_unregister(kbd); return ENXIO; + } atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state); get_typematic(kbd); delay[0] = kbd->kb_delay1; diff --git a/sys/dev/kbd/atkbd.c b/sys/dev/kbd/atkbd.c index 569f14bbd22..053b8b2f9eb 100644 --- a/sys/dev/kbd/atkbd.c +++ b/sys/dev/kbd/atkbd.c @@ -417,8 +417,10 @@ atkbd_init(int unit, keyboard_t **kbdp, void *arg, int flags) kbd->kb_config = flags & ~KB_CONF_PROBE_ONLY; if (KBD_HAS_DEVICE(kbd) && init_keyboard(state->kbdc, &kbd->kb_type, kbd->kb_config) - && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD)) + && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD)) { + kbd_unregister(kbd); return ENXIO; + } atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state); get_typematic(kbd); delay[0] = kbd->kb_delay1;