summaryrefslogtreecommitdiffstats
path: root/sys/dev/atkbdc/atkbd.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2003-07-13 10:08:33 +0000
committersimokawa <simokawa@FreeBSD.org>2003-07-13 10:08:33 +0000
commitb996c0141e1b5464cf5b7fdb2f8955a35aab7ea6 (patch)
tree48ffb293d446cd13a18abcab139c6d9e88750ab0 /sys/dev/atkbdc/atkbd.c
parentaa63ccc301ed9eee98808858bb61937800849203 (diff)
downloadFreeBSD-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/atkbdc/atkbd.c')
-rw-r--r--sys/dev/atkbdc/atkbd.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c
index 569f14b..053b8b2 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;
OpenPOWER on IntegriCloud