diff options
| author | Kazutaka YOKOTA <yokota@FreeBSD.org> | 1999-01-14 03:17:32 +0000 |
|---|---|---|
| committer | Kazutaka YOKOTA <yokota@FreeBSD.org> | 1999-01-14 03:17:32 +0000 |
| commit | 47d8621a0bed8c1185680ad719e88e5578adbe9a (patch) | |
| tree | f54212c3b72fdd70b9d1b5c840a9f7a848e0c0c0 | |
| parent | 5f2848a953c6dbe81c232e4ebf213f829767a173 (diff) | |
Notes
| -rw-r--r-- | sys/i386/isa/pcvt/pcvt_drv.c | 24 | ||||
| -rw-r--r-- | sys/i386/isa/pcvt/pcvt_kbd.c | 5 |
2 files changed, 15 insertions, 14 deletions
diff --git a/sys/i386/isa/pcvt/pcvt_drv.c b/sys/i386/isa/pcvt/pcvt_drv.c index c4ed5a1b634a..cb557e10a468 100644 --- a/sys/i386/isa/pcvt/pcvt_drv.c +++ b/sys/i386/isa/pcvt/pcvt_drv.c @@ -169,13 +169,12 @@ pcprobe(struct isa_device *dev) #ifdef _DEV_KBD_KBDREG_H_ int i; - kbd = NULL; - kbd_configure(KB_CONF_PROBE_ONLY); - i = kbd_allocate("*", -1, (void *)&kbd, pcevent, (void *)dev->id_unit); - if ((i < 0) || ((kbd = kbd_get_keyboard(i)) == NULL)) - { + if (kbd == NULL) { reset_keyboard = 0; - return (-1); + kbd_configure(KB_CONF_PROBE_ONLY); + i = kbd_allocate("*", -1, (void *)&kbd, pcevent, (void *)dev->id_unit); + if ((i < 0) || ((kbd = kbd_get_keyboard(i)) == NULL)) + return (-1); } reset_keyboard = 1; /* it's now safe to do kbd reset */ #endif /* _DEV_KBD_KBDREG_H_ */ @@ -898,6 +897,7 @@ pcevent(keyboard_t *thiskbd, int event, void *arg) pcrint(unit); return 0; case KBDIO_UNLOADING: + reset_keyboard = 0; kbd = NULL; kbd_release(thiskbd, (void *)&kbd); timeout(detect_kbd, (void *)unit, hz*4); @@ -1182,17 +1182,17 @@ pccnprobe(struct consdev *cp) } #ifdef _DEV_KBD_KBDREG_H_ - kbd = NULL; - kbd_configure(KB_CONF_PROBE_ONLY); - i = kbd_allocate("*", -1, (void *)&kbd, pcevent, (void *)dvp->id_unit); - if (i >= 0) - kbd = kbd_get_keyboard(i); - /* * Don't reset the keyboard via `kbdio' just yet. * The system clock has not been calibrated... */ reset_keyboard = 0; + if (kbd == NULL) { + kbd_configure(KB_CONF_PROBE_ONLY); + i = kbd_allocate("*", -1, (void *)&kbd, pcevent, (void *)dvp->id_unit); + if (i >= 0) + kbd = kbd_get_keyboard(i); + } #if PCVT_SCANSET == 2 /* diff --git a/sys/i386/isa/pcvt/pcvt_kbd.c b/sys/i386/isa/pcvt/pcvt_kbd.c index c7a2cfc34387..50457dc16b5d 100644 --- a/sys/i386/isa/pcvt/pcvt_kbd.c +++ b/sys/i386/isa/pcvt/pcvt_kbd.c @@ -346,9 +346,10 @@ settpmrate(int rate) else if(kbd_cmd(tpmrate) != 0) printf("Keyboard TYPEMATIC data timeout\n"); #else + if (kbd == NULL) + return; tpmrate = rate & 0x7f; - if ((*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETRAD, - (caddr_t)&tpmrate) == 0) + if ((*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETRAD, (caddr_t)&tpmrate)) printf("pcvt: failed to set keyboard TYPEMATIC.\n"); #endif /* !_DEV_KBD_KBDREG_H_ */ } |
