Re: [PATCH 1/2] gpiolib: acpi: Turn dmi_system_id table into a generic quirk table

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

 



On Fri, Nov 22, 2019 at 08:23:33PM +0100, Hans de Goede wrote:
> Turn the existing run_edge_events_on_boot_blacklist dmi_system_id table
> into a generic quirk table, storing the quirks in the driver_data ptr.
> 
> This is a preparation patch for adding other types of (DMI based) quirks.
> 

Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>

> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
> ---
>  drivers/gpio/gpiolib-acpi.c | 19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
> index d30e57dc755c..2b47d906d536 100644
> --- a/drivers/gpio/gpiolib-acpi.c
> +++ b/drivers/gpio/gpiolib-acpi.c
> @@ -21,6 +21,8 @@
>  #include "gpiolib.h"
>  #include "gpiolib-acpi.h"
>  
> +#define QUIRK_NO_EDGE_EVENTS_ON_BOOT		0x01l
> +
>  static int run_edge_events_on_boot = -1;
>  module_param(run_edge_events_on_boot, int, 0444);
>  MODULE_PARM_DESC(run_edge_events_on_boot,
> @@ -1309,7 +1311,7 @@ static int acpi_gpio_handle_deferred_request_irqs(void)
>  /* We must use _sync so that this runs after the first deferred_probe run */
>  late_initcall_sync(acpi_gpio_handle_deferred_request_irqs);
>  
> -static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = {
> +static const struct dmi_system_id gpiolib_acpi_quirks[] = {
>  	{
>  		/*
>  		 * The Minix Neo Z83-4 has a micro-USB-B id-pin handler for
> @@ -1319,7 +1321,8 @@ static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = {
>  		.matches = {
>  			DMI_MATCH(DMI_SYS_VENDOR, "MINIX"),
>  			DMI_MATCH(DMI_PRODUCT_NAME, "Z83-4"),
> -		}
> +		},
> +		.driver_data = (void *)QUIRK_NO_EDGE_EVENTS_ON_BOOT,
>  	},
>  	{
>  		/*
> @@ -1331,15 +1334,23 @@ static const struct dmi_system_id run_edge_events_on_boot_blacklist[] = {
>  		.matches = {
>  			DMI_MATCH(DMI_SYS_VENDOR, "Wortmann_AG"),
>  			DMI_MATCH(DMI_PRODUCT_NAME, "TERRA_PAD_1061"),
> -		}
> +		},
> +		.driver_data = (void *)QUIRK_NO_EDGE_EVENTS_ON_BOOT,
>  	},
>  	{} /* Terminating entry */
>  };
>  
>  static int acpi_gpio_setup_params(void)
>  {
> +	const struct dmi_system_id *id;
> +	long quirks = 0;
> +
> +	id = dmi_first_match(gpiolib_acpi_quirks);
> +	if (id)
> +		quirks = (long)id->driver_data;
> +
>  	if (run_edge_events_on_boot < 0) {
> -		if (dmi_check_system(run_edge_events_on_boot_blacklist))
> +		if (quirks & QUIRK_NO_EDGE_EVENTS_ON_BOOT)
>  			run_edge_events_on_boot = 0;
>  		else
>  			run_edge_events_on_boot = 1;
> -- 
> 2.23.0
> 

-- 
With Best Regards,
Andy Shevchenko





[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