diff options
author | mikeh <mikeh@FreeBSD.org> | 2003-07-07 05:40:13 +0000 |
---|---|---|
committer | mikeh <mikeh@FreeBSD.org> | 2003-07-07 05:40:13 +0000 |
commit | e4b6a5d87b87b1484372fb950b7b7885cb704190 (patch) | |
tree | 25d3e95cd8c75b6124430f07e85c38a2311429b2 /sys/dev/atkbdc | |
parent | 0dc21a981db8b5ea5f323d91a0c92bf8a3a8341d (diff) | |
download | FreeBSD-src-e4b6a5d87b87b1484372fb950b7b7885cb704190.zip FreeBSD-src-e4b6a5d87b87b1484372fb950b7b7885cb704190.tar.gz |
Reset the PSM aux device twice to help pierce through some KVM's to
get the correct data from the attached mouse. Multiple resets should
be harmless, but just in case, the second one is non-fatal and is just
ignored.
Diffstat (limited to 'sys/dev/atkbdc')
-rw-r--r-- | sys/dev/atkbdc/psm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/dev/atkbdc/psm.c b/sys/dev/atkbdc/psm.c index 02222b5..e4f14b1 100644 --- a/sys/dev/atkbdc/psm.c +++ b/sys/dev/atkbdc/psm.c @@ -1040,6 +1040,10 @@ psmprobe(device_t dev) /* * NOTE: some controllers appears to hang the `keyboard' when the aux * port doesn't exist and `PSMC_RESET_DEV' is issued. + * + * Attempt to reset the controller twice -- this helps + * pierce through some KVM switches. The second reset + * is non-fatal. */ if (!reset_aux_dev(sc->kbdc)) { recover_from_error(sc->kbdc); @@ -1047,6 +1051,11 @@ psmprobe(device_t dev) if (verbose) printf("psm%d: failed to reset the aux device.\n", unit); endprobe(ENXIO); + } else if (!reset_aux_dev(sc->kbdc)) { + recover_from_error(sc->kbdc); + if (verbose >= 2) + printf("psm%d: failed to reset the aux device (2).\n", + unit); } } |