• Lennart Poettering's avatar
    acpi,msi-laptop: Fall back to EC polling mode for MSI laptop specific EC commands · 00eb43a1
    Lennart Poettering authored
    The ACPI EC that is used in MSI laptops knows some non-standard
    commands for changing the screen brighntess and a few other things,
    which are used by the msi-laptop.c driver. Unfortunately for these
    commands no GPE events for IBF and OBF are triggered. Since nowadays
    the EC code uses the ec_intr=1 mode by default, this causes these
    operations to timeout, although they don't fail. In result, all
    operations that you can do with the msi-laptop.c driver take more or
    less 1s to complete, which is awfully slow.
    
    In one of the more recent kernels (2.6.20?) the EC subsystem has been
    revamped. With that change the EC timeout has been increased. before
    that increase the MSI EC accesses were slow -- but not *that* slow,
    hence I took notice of this limitation of the MSI EC hardware only very
    recently.
    
    The standard EC operations on the MSI EC as defined in the ACPI spec
    support GPE events properly.
    
    The following patch adds a new argument "force_poll" to the
    ec_transaction() function (and friends). If set to 1, the function
    will poll for IBF/OBF even if ec_intr=1 is enabled. If set to 0 the
    current behaviour is used. The msi-laptop driver is modified to make
    use of this new flag, so that OBF/IBF is polled for the special MSI EC
    transactions -- but only for them.
    Signed-off-by: default avatarLennart Poettering <mzxreary@0pointer.de>
    Acked-by: default avatarAlexey Starikovskiy <aystarik@gmail.com>
    Signed-off-by: default avatarLen Brown <len.brown@intel.com>
    00eb43a1
msi-laptop.c 8.84 KB