git: kernel - Fix keyboard probe for chromebooks (2)
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Jan 2 18:18:40 PST 2014
commit 7f3d8d5546c701eceefe4437a49ffa6f01c7aa09
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Jan 2 18:11:26 2014 -0800
kernel - Fix keyboard probe for chromebooks (2)
* Chromebooks (Acer C720 at least) appear to be using a BIOS emulator
for the i8042 which gets really unhappy if the keyboard port is disabled,
even temporarily.
* The original FreeBSD code disables and enables the keyboard port all the
time, and even sends discrete disable commands (instead of just trusting
that the command register flags will do the job).
In addition, the PSM probe code may also disable the keyboard port
temporarily while enabling and messing with the AUX port.
* Remove these actions. The keyboard probe will now only disable the
keyboard port during the probe and init_keyboard() call, which then
proceeds to issue sufficient commands to the keyboard to wake it up
again.
The PSM probe now no longer touches the keyboard port disable/interrupt
bits. At all. Theoetically it should not be necessary to disable the
keyboard port while probing the aux port.
* The saved command_mask in the softc is no longer used, remove it.
* It is unclear whether the controller properly prioritizes data returned
from controller commands in-front of the data returned from the keyboard
or aux ports. However, as it stands now, we cannot safely disable the
data from the ports while issuing controller commands and waiting for
controller command responses so...
Summary of changes:
sys/dev/misc/kbd/atkbd.c | 56 +++++++++++++++++-------------
sys/dev/misc/kbd/atkbdc.c | 16 +--------
sys/dev/misc/kbd/atkbdcreg.h | 3 --
sys/dev/misc/psm/psm.c | 81 ++++++++++++++++++++------------------------
4 files changed, 70 insertions(+), 86 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7f3d8d5546c701eceefe4437a49ffa6f01c7aa09
--
DragonFly BSD source repository
More information about the Commits
mailing list