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