All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Lubomir Rintel <lkundrak@v3.sk>
Cc: Mark Gross <markgross@kernel.org>,
	Andy Shevchenko <andy@kernel.org>,
	platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH 1/3] platform/x86: x86-android-tablets: Add support for disabling ACPI _AEI handlers
Date: Tue, 11 Jan 2022 11:09:56 +0100	[thread overview]
Message-ID: <82d28382-eb68-a5a8-32f2-f23fd99e1bc0@redhat.com> (raw)
In-Reply-To: <Yd1Ww7InM/+voqk2@demiurge.local>

Hi,

On 1/11/22 11:06, Lubomir Rintel wrote:
> On Mon, Jan 10, 2022 at 11:39:50AM +0100, Hans de Goede wrote:
>> Some of the broken DSDTs on these devices often also include broken / wrong
>> _AEI (ACPI Event Interrupt) handlers, which can cause e.g. interrupt storms
>> by listening to a floating GPIO pin.
>>
>> Add support for disabling these and disable them on the Asus ME176C and
>> TF103C tablets.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> 
> The whole series looks good to me. Feel free to slap on:
> 
> Reviewed-By: Lubomir Rintel <lkundrak@V3.sk>

Thanks, I've added the tag to the patches in my review-hans branch.

Regards,

Hans



>> ---
>>  drivers/platform/x86/x86-android-tablets.c | 23 ++++++++++++++++++++--
>>  1 file changed, 21 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/platform/x86/x86-android-tablets.c b/drivers/platform/x86/x86-android-tablets.c
>> index 3ba63ad91b28..d125d7a5189a 100644
>> --- a/drivers/platform/x86/x86-android-tablets.c
>> +++ b/drivers/platform/x86/x86-android-tablets.c
>> @@ -26,6 +26,7 @@
>>  #include <linux/string.h>
>>  /* For gpio_get_desc() which is EXPORT_SYMBOL_GPL() */
>>  #include "../../gpio/gpiolib.h"
>> +#include "../../gpio/gpiolib-acpi.h"
>>  
>>  /*
>>   * Helper code to get Linux IRQ numbers given a description of the IRQ source
>> @@ -47,7 +48,7 @@ struct x86_acpi_irq_data {
>>  	int polarity; /* ACPI_ACTIVE_HIGH / ACPI_ACTIVE_LOW / ACPI_ACTIVE_BOTH */
>>  };
>>  
>> -static int x86_acpi_irq_helper_gpiochip_find(struct gpio_chip *gc, void *data)
>> +static int gpiochip_find_match_label(struct gpio_chip *gc, void *data)
>>  {
>>  	return gc->label && !strcmp(gc->label, data);
>>  }
>> @@ -73,7 +74,7 @@ static int x86_acpi_irq_helper_get(const struct x86_acpi_irq_data *data)
>>  		return irq;
>>  	case X86_ACPI_IRQ_TYPE_GPIOINT:
>>  		/* Like acpi_dev_gpio_irq_get(), but without parsing ACPI resources */
>> -		chip = gpiochip_find(data->chip, x86_acpi_irq_helper_gpiochip_find);
>> +		chip = gpiochip_find(data->chip, gpiochip_find_match_label);
>>  		if (!chip) {
>>  			pr_err("error cannot find GPIO chip %s\n", data->chip);
>>  			return -ENODEV;
>> @@ -143,6 +144,7 @@ struct x86_serdev_info {
>>  };
>>  
>>  struct x86_dev_info {
>> +	char *invalid_aei_gpiochip;
>>  	const char * const *modules;
>>  	struct gpiod_lookup_table **gpiod_lookup_tables;
>>  	const struct x86_i2c_client_info *i2c_client_info;
>> @@ -317,6 +319,7 @@ static const struct x86_dev_info asus_me176c_info __initconst = {
>>  	.serdev_count = ARRAY_SIZE(asus_me176c_serdevs),
>>  	.gpiod_lookup_tables = asus_me176c_gpios,
>>  	.modules = bq24190_modules,
>> +	.invalid_aei_gpiochip = "INT33FC:02",
>>  };
>>  
>>  /* Asus TF103C tablets have an Android factory img with everything hardcoded */
>> @@ -417,6 +420,7 @@ static const struct x86_dev_info asus_tf103c_info __initconst = {
>>  	.pdev_count = ARRAY_SIZE(int3496_pdevs),
>>  	.gpiod_lookup_tables = asus_tf103c_gpios,
>>  	.modules = bq24190_modules,
>> +	.invalid_aei_gpiochip = "INT33FC:02",
>>  };
>>  
>>  /*
>> @@ -795,6 +799,7 @@ static __init int x86_android_tablet_init(void)
>>  {
>>  	const struct x86_dev_info *dev_info;
>>  	const struct dmi_system_id *id;
>> +	struct gpio_chip *chip;
>>  	int i, ret = 0;
>>  
>>  	id = dmi_first_match(x86_android_tablet_ids);
>> @@ -803,6 +808,20 @@ static __init int x86_android_tablet_init(void)
>>  
>>  	dev_info = id->driver_data;
>>  
>> +	/*
>> +	 * The broken DSDTs on these devices often also include broken
>> +	 * _AEI (ACPI Event Interrupt) handlers, disable these.
>> +	 */
>> +	if (dev_info->invalid_aei_gpiochip) {
>> +		chip = gpiochip_find(dev_info->invalid_aei_gpiochip,
>> +				     gpiochip_find_match_label);
>> +		if (!chip) {
>> +			pr_err("error cannot find GPIO chip %s\n", dev_info->invalid_aei_gpiochip);
>> +			return -ENODEV;
>> +		}
>> +		acpi_gpiochip_free_interrupts(chip);
>> +	}
>> +
>>  	/*
>>  	 * Since this runs from module_init() it cannot use -EPROBE_DEFER,
>>  	 * instead pre-load any modules which are listed as requirements.
>> -- 
>> 2.33.1
>>
> 


      reply	other threads:[~2022-01-11 10:10 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-10 10:39 [PATCH 1/3] platform/x86: x86-android-tablets: Add support for disabling ACPI _AEI handlers Hans de Goede
2022-01-10 10:39 ` [PATCH 2/3] platform/x86: x86-android-tablets: Add an init() callback to struct x86_dev_info Hans de Goede
2022-01-10 10:39 ` [PATCH 3/3] platform/x86: x86-android-tablets: Constify the gpiod_lookup_tables arrays Hans de Goede
2022-01-11  9:43 ` [PATCH 1/3] platform/x86: x86-android-tablets: Add support for disabling ACPI _AEI handlers Hans de Goede
2022-01-11 10:06 ` Lubomir Rintel
2022-01-11 10:09   ` Hans de Goede [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=82d28382-eb68-a5a8-32f2-f23fd99e1bc0@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=andy@kernel.org \
    --cc=lkundrak@v3.sk \
    --cc=markgross@kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.