• Thomas Renninger's avatar
    x86 platform drivers: hp-wmi fix buffer size depending on ACPI version · 8dda6b04
    Thomas Renninger authored
    Depending on ACPI version (1.0 -> 32 bit) an integer could be
    32 or 64 bit long. _WED internal concatenates two integers and
    the return value will be 8 byte (2* 32 bit) or 16 byte (2* 64 bit)
    long, depending on the ACPI version.
    
    Also the data send with the WMI event is defined to be splitted into:
      - Event ID -> 4 bytes
      - Event Data -> 4 bytes
    
    This gets messed up with new ACPI versions.
    But it's a HP BIOS bug that may get fixed in the future
    -> Support both, 16 and 8 byte _WED buffers.
    
    Also the wrong assumption that from the event data sent, only the
    first byte is relevant got cleaned up that it fits event_id/event_data
    as described above.
    Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
    CC: robert.moore@intel.com
    Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
    CC: platform-driver-x86@vger.kernel.org
    CC: linux-acpi@vger.kernel.org
    8dda6b04
hp-wmi.c 16.5 KB