diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-07-13 10:08:33 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-07-13 10:08:33 +0000 |
commit | b996c0141e1b5464cf5b7fdb2f8955a35aab7ea6 (patch) | |
tree | 48ffb293d446cd13a18abcab139c6d9e88750ab0 /sys/dev/kbd | |
parent | aa63ccc301ed9eee98808858bb61937800849203 (diff) | |
download | FreeBSD-src-b996c0141e1b5464cf5b7fdb2f8955a35aab7ea6.zip FreeBSD-src-b996c0141e1b5464cf5b7fdb2f8955a35aab7ea6.tar.gz |
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'.
Diffstat (limited to 'sys/dev/kbd')
-rw-r--r-- | sys/dev/kbd/atkbd.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/kbd/atkbd.c b/sys/dev/kbd/atkbd.c index 569f14b..053b8b2 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; |