Re: [PATCH 2/2] ACPI / battery: add quirk for Acer Aspire V5-573G

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2014-06-04 3:01 GMT+08:00 Alexander Mezin <mezin.alexander@xxxxxxxxx>:
> On Acer Aspire V5-573G battery notifications are sometimes
> triggered too early. For example, when AC is unplugged and
> notification is triggered, battery state is still reported as
> "Full", and changes to "Discharging" only after short delay,
> without any notification.
>
> This patch solves the problem by adding 1 second sleep.
> Similar quirk is already implemented in AC driver for other laptop.

Could you provide the output of acpidump?

>
> Signed-off-by: Alexander Mezin <mezin.alexander@xxxxxxxxx>
> ---
>  drivers/acpi/battery.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
> index f17bc7e..87d26c3 100644
> --- a/drivers/acpi/battery.c
> +++ b/drivers/acpi/battery.c
> @@ -32,6 +32,7 @@
>  #include <linux/jiffies.h>
>  #include <linux/async.h>
>  #include <linux/dmi.h>
> +#include <linux/delay.h>
>  #include <linux/slab.h>
>  #include <linux/suspend.h>
>  #include <asm/unaligned.h>
> @@ -66,6 +67,7 @@ MODULE_DESCRIPTION("ACPI Battery Driver");
>  MODULE_LICENSE("GPL");
>
>  static int battery_bix_broken_package;
> +static int battery_notification_delay_ms;
>  static unsigned int cache_time = 1000;
>  module_param(cache_time, uint, 0644);
>  MODULE_PARM_DESC(cache_time, "cache time in milliseconds");
> @@ -1028,6 +1030,14 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event)
>         if (!battery)
>                 return;
>         old = battery->bat.dev;
> +       /*
> +       * On Acer Aspire V5-573G notifications are sometimes triggered too
> +       * early. For example, when AC is unplugged and notification is
> +       * triggered, battery state is still reported as "Full", and changes to
> +       * "Discharging" only after short delay, without any notification.
> +       */
> +       if (battery_notification_delay_ms > 0)
> +               msleep(battery_notification_delay_ms);
>         if (event == ACPI_BATTERY_NOTIFY_INFO)
>                 acpi_battery_refresh(battery);
>         acpi_battery_update(battery);
> @@ -1064,6 +1074,12 @@ static int battery_bix_broken_package_quirk(const struct dmi_system_id *d)
>         return 0;
>  }
>
> +static int battery_notification_delay_quirk(const struct dmi_system_id *d)
> +{
> +       battery_notification_delay_ms = 1000;
> +       return 0;
> +}
> +
>  static struct dmi_system_id bat_dmi_table[] = {
>         {
>                 .callback = battery_bix_broken_package_quirk,
> @@ -1073,6 +1089,14 @@ static struct dmi_system_id bat_dmi_table[] = {
>                         DMI_MATCH(DMI_PRODUCT_NAME, "PC-LZ750LS"),
>                 },
>         },
> +       {
> +               .callback = battery_notification_delay_quirk,
> +               .ident = "Acer Aspire V5-573G",
> +               .matches = {
> +                       DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
> +                       DMI_MATCH(DMI_PRODUCT_NAME, "Aspire V5-573G"),
> +               },
> +       },
>         {},
>  };
>
> --
> 2.0.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Best regards
Tianyu Lan
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux