Re: [PATCH v2 10/12] PNP / ACPI: add support for GpioInt resource type

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

 



On Tue, May 23, 2017 at 08:03:25PM +0300, Andy Shevchenko wrote:
> From: Jagadish Krishnamoorthy <jagadish.krishnamoorthy@xxxxxxxxx>
> 
> The PNP ACPI driver parses ACPI interrupt resource but not
> GpioInt resource. When the firmware passes GpioInt resource
> for IRQ the PNP ACPI driver ignores it and hence the interrupt for
> the particular driver will not work.
> One such example is 8042 keyboard which uses PNP driver for obtaining
> the interrupt resource. On Intel Braswell project GpioInt is used
> instead of interrupt resource and the keyboard driver fails to
> register interrupt.
> Fix the issue by parsing GpioInt resource type.

Maybe you can add link to the bugzilla entry here?

> Signed-off-by: Jagadish Krishnamoorthy <jagadish.krishnamoorthy@xxxxxxxxx>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
> ---
>  drivers/pnp/pnpacpi/rsparser.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
> index 4b717c699313..af44e57f5148 100644
> --- a/drivers/pnp/pnpacpi/rsparser.c
> +++ b/drivers/pnp/pnpacpi/rsparser.c
> @@ -180,6 +180,7 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
>  	struct pnp_dev *dev = data;
>  	struct acpi_resource_dma *dma;
>  	struct acpi_resource_vendor_typed *vendor_typed;
> +	struct acpi_resource_gpio *gpio;
>  	struct resource_win win = {{0}, 0};
>  	struct resource *r = &win.res;
>  	int i, flags;
> @@ -210,6 +211,20 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
>  			}
>  		}
>  		return AE_OK;
> +	} else if (acpi_gpio_get_irq_resource(res, &gpio)) {
> +		/*
> +		 * If the resource is GpioInt() type then extract the IRQ
> +		 * from GPIO resource and fill it into IRQ resource type.
> +		 */
> +		i = acpi_dev_gpio_irq_get(dev->data, 0);
> +		if (i >= 0) {
> +			flags = acpi_dev_irq_flags(gpio->triggering,
> +						   gpio->polarity,
> +						   gpio->sharable);
> +		} else
> +			flags = IORESOURCE_DISABLED;

You need to add {} here as well.

With that done you can add my

Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>

> +		pnp_add_irq_resource(dev, i, flags);
> +		return AE_OK;
>  	} else if (r->flags & IORESOURCE_DISABLED) {
>  		pnp_add_irq_resource(dev, 0, IORESOURCE_DISABLED);
>  		return AE_OK;
> -- 
> 2.11.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



[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