Reinitialize the keyboard after the ACPI resume event.

I am not sure if this is absolutely necessary on all systems.  Yet,
there certainly are motherboards and notebook systems which require
this, although there are other systems which just don't.  I hope we
shall know when to do this on which systems, as the development of our
ACPI subsystem progresses...  (I know we didn't need this for the APM
resume.)
This commit is contained in:
Kazutaka YOKOTA 2001-09-23 08:42:06 +00:00
parent 5d78522dd4
commit 275658afcc
3 changed files with 30 additions and 3 deletions

View File

@ -148,12 +148,21 @@ atkbdattach(device_t dev)
static int
atkbdresume(device_t dev)
{
atkbd_softc_t *sc;
keyboard_t *kbd;
int args[2];
sc = device_get_softc(dev);
kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
device_get_unit(dev)));
if (kbd)
if (kbd) {
kbd->kb_flags &= ~KB_INITIALIZED;
args[0] = device_get_unit(device_get_parent(dev));
args[1] = rman_get_start(sc->intr);
(*kbdsw[kbd->kb_index]->init)(device_get_unit(dev), &kbd,
args, device_get_flags(dev));
(*kbdsw[kbd->kb_index]->clear_state)(kbd);
}
return 0;
}

View File

@ -148,12 +148,21 @@ atkbdattach(device_t dev)
static int
atkbdresume(device_t dev)
{
atkbd_softc_t *sc;
keyboard_t *kbd;
int args[2];
sc = device_get_softc(dev);
kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
device_get_unit(dev)));
if (kbd)
if (kbd) {
kbd->kb_flags &= ~KB_INITIALIZED;
args[0] = device_get_unit(device_get_parent(dev));
args[1] = rman_get_start(sc->intr);
(*kbdsw[kbd->kb_index]->init)(device_get_unit(dev), &kbd,
args, device_get_flags(dev));
(*kbdsw[kbd->kb_index]->clear_state)(kbd);
}
return 0;
}

View File

@ -148,12 +148,21 @@ atkbdattach(device_t dev)
static int
atkbdresume(device_t dev)
{
atkbd_softc_t *sc;
keyboard_t *kbd;
int args[2];
sc = device_get_softc(dev);
kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
device_get_unit(dev)));
if (kbd)
if (kbd) {
kbd->kb_flags &= ~KB_INITIALIZED;
args[0] = device_get_unit(device_get_parent(dev));
args[1] = rman_get_start(sc->intr);
(*kbdsw[kbd->kb_index]->init)(device_get_unit(dev), &kbd,
args, device_get_flags(dev));
(*kbdsw[kbd->kb_index]->clear_state)(kbd);
}
return 0;
}