lkml.org 
[lkml]   [2019]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH] driver: platform: Add support for GpioInt() ACPI to platform_get_irq()
    From
    From: Enrico Granata <egranata@chromium.org>

    ACPI 5 added support for GpioInt resources as a way to provide
    information about interrupts mediated via a GPIO controller.

    Several device buses (e.g. SPI, I2C) have support for retrieving
    an IRQ specified via this type of resource, and providing it
    directly to the driver as an IRQ number.
    This is not currently done for the platform drivers, as platform_get_irq()
    does not try to parse GpioInt() resources.

    This commit adds that functionality.

    Signed-off-by: Enrico Granata <egranata@chromium.org>
    ---
    drivers/base/platform.c | 12 +++++++++++-
    1 file changed, 11 insertions(+), 1 deletion(-)

    diff --git a/drivers/base/platform.c b/drivers/base/platform.c
    index 1c958eb33ef4d..c50c4f9033aef 100644
    --- a/drivers/base/platform.c
    +++ b/drivers/base/platform.c
    @@ -127,7 +127,17 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)
    irqd_set_trigger_type(irqd, r->flags & IORESOURCE_BITS);
    }

    - return r ? r->start : -ENXIO;
    + if (r)
    + return r->start;
    +
    + /*
    + * If no IRQ was found, try to parse ACPI GpioInt resources
    + * as a last resort.
    + */
    + if (has_acpi_companion(&dev->dev))
    + return acpi_dev_gpio_irq_get(ACPI_COMPANION(&dev->dev), num);
    +
    + return -ENXIO;
    #endif
    }
    EXPORT_SYMBOL_GPL(platform_get_irq);
    --
    2.20.1.611.gfbb209baf1-goog
    \
     
     \ /
      Last update: 2019-02-07 19:51    [W:2.973 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site