On 04/10/16 23:33, Mike Larkin wrote:
Please test this diff on all machines that you can successfully (today) resume with 'zzz'. Please make sure that after resume, the keyboard still works.This diff re-enables the keyboard on resume. Previously, we were re-enabling the keyboard *controller* but apparently on some machines (notably the HP 4530s) the keyboard itself resumes in 'disabled' state and requires a re-enable. Keyboards are finicky, and this diff requires widespread testing before it can go in, to ensure no regressions. Please let me know if you have keyboard issues after resume. Thanks. -ml Index: dev/pckbc/pckbd.c =================================================================== RCS file: /cvs/src/sys/dev/pckbc/pckbd.c,v retrieving revision 1.42 diff -u -p -a -u -r1.42 pckbd.c --- dev/pckbc/pckbd.c 4 May 2015 09:33:46 -0000 1.42 +++ dev/pckbc/pckbd.c 11 Apr 2016 06:24:06 -0000 @@ -123,13 +123,14 @@ static int pckbd_is_console(pckbc_tag_t, int pckbdprobe(struct device *, void *, void *); void pckbdattach(struct device *, struct device *, void *); +int pckbdactivate(struct device *, int); struct cfattach pckbd_ca = { sizeof(struct pckbd_softc), pckbdprobe, pckbdattach, NULL, - NULL + pckbdactivate }; int pckbd_enable(void *, int); @@ -181,6 +182,29 @@ static int pckbd_decode(struct pckbd_int static int pckbd_led_encode(int); struct pckbd_internal pckbd_consdata; + +int +pckbdactivate(struct device *self, int act) +{ + struct pckbd_softc *sc = (struct pckbd_softc *)self; + int rv = 0; + u_char cmd[1]; + + switch(act) { + case DVACT_RESUME: + /* + * Some keyboards are not enabled after a reset, + * so make sure it is enabled now. + */ + cmd[0] = KBC_ENABLE; + (void) pckbc_poll_cmd(sc->id->t_kbctag, sc->id->t_kbcslot, + cmd, 1, 0, NULL, 0); + rv = config_activate_children(self, act); + break; + } + + return (rv); +} int pckbd_set_xtscancode(pckbc_tag_t kbctag, pckbc_slot_t kbcslot,
I have an HP 9480m that suffers from the "keyboard broken after resume" problem. This patch seems to fix it! The attached USB keyboard still functions normally.
Thanks!
