lkml.org 
[lkml]   [2014]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 67/77] ACPI / Battery: Add a _BIX quirk for NEC LZ750/LS
    Date
    3.12-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Lan Tianyu <tianyu.lan@intel.com>

    commit a90b40385735af0d3031f98e97b439e8944a31b3 upstream.

    The AML method _BIX of NEC LZ750/LS returns a broken package which
    skips the first member "Revision" (ACPI 5.0, Table 10-234).

    Add a quirk for this machine to skip member "Revision" during parsing
    the package returned by _BIX.

    Reference: https://bugzilla.kernel.org/show_bug.cgi?id=67351
    Reported-and-tested-by: Francisco Castro <fcr@adinet.com.uy>
    Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
    Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/acpi/battery.c | 21 ++++++++++++++++++++-
    1 file changed, 20 insertions(+), 1 deletion(-)

    --- a/drivers/acpi/battery.c
    +++ b/drivers/acpi/battery.c
    @@ -68,6 +68,7 @@ MODULE_AUTHOR("Alexey Starikovskiy <asta
    MODULE_DESCRIPTION("ACPI Battery Driver");
    MODULE_LICENSE("GPL");

    +static int battery_bix_broken_package;
    static unsigned int cache_time = 1000;
    module_param(cache_time, uint, 0644);
    MODULE_PARM_DESC(cache_time, "cache time in milliseconds");
    @@ -443,7 +444,12 @@ static int acpi_battery_get_info(struct
    ACPI_EXCEPTION((AE_INFO, status, "Evaluating %s", name));
    return -ENODEV;
    }
    - if (test_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags))
    +
    + if (battery_bix_broken_package)
    + result = extract_package(battery, buffer.pointer,
    + extended_info_offsets + 1,
    + ARRAY_SIZE(extended_info_offsets) - 1);
    + else if (test_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags))
    result = extract_package(battery, buffer.pointer,
    extended_info_offsets,
    ARRAY_SIZE(extended_info_offsets));
    @@ -1054,6 +1060,17 @@ static int battery_notify(struct notifie
    return 0;
    }

    +static struct dmi_system_id bat_dmi_table[] = {
    + {
    + .ident = "NEC LZ750/LS",
    + .matches = {
    + DMI_MATCH(DMI_SYS_VENDOR, "NEC"),
    + DMI_MATCH(DMI_PRODUCT_NAME, "PC-LZ750LS"),
    + },
    + },
    + {},
    +};
    +
    static int acpi_battery_add(struct acpi_device *device)
    {
    int result = 0;
    @@ -1163,6 +1180,8 @@ static void __init acpi_battery_init_asy
    if (!acpi_battery_dir)
    return;
    #endif
    + if (dmi_check_system(bat_dmi_table))
    + battery_bix_broken_package = 1;
    if (acpi_bus_register_driver(&acpi_battery_driver) < 0) {
    #ifdef CONFIG_ACPI_PROCFS_POWER
    acpi_unlock_battery_dir(acpi_battery_dir);



    \
     
     \ /
      Last update: 2014-01-14 08:41    [W:6.811 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site