On modern platforms using device tree and non-legacy IRQ domains there is usually no way to perform direct translation between GPIO and IRQ, because the IRQ of interest is not mapped yet into sparse IRQ namespace. This patch modifies the gpio_keys driver to parse IRQ from device tree and use gpio_to_irq only as a fallback. Signed-off-by: Tomasz Figa <t.figa@xxxxxxxxxxx> --- Documentation/devicetree/bindings/gpio/gpio_keys.txt | 2 ++ drivers/input/keyboard/gpio_keys.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/gpio/gpio_keys.txt b/Documentation/devicetree/bindings/gpio/gpio_keys.txt index 5c2c021..7f318a5 100644 --- a/Documentation/devicetree/bindings/gpio/gpio_keys.txt +++ b/Documentation/devicetree/bindings/gpio/gpio_keys.txt @@ -20,6 +20,8 @@ Optional subnode-properties: - debounce-interval: Debouncing interval time in milliseconds. If not specified defaults to 5. - gpio-key,wakeup: Boolean, button can wake-up the system. + - interrupt: Interrupt used for this key (required if no translation + between GPIO and IRQ is available). Example nodes: diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 6a68041..a33660c 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -28,6 +28,7 @@ #include <linux/gpio.h> #include <linux/of_platform.h> #include <linux/of_gpio.h> +#include <linux/of_irq.h> #include <linux/spinlock.h> struct gpio_button_data { @@ -464,7 +465,7 @@ static int __devinit gpio_keys_setup_key(struct platform_device *pdev, button->debounce_interval; } - irq = gpio_to_irq(button->gpio); + irq = (button->irq) ? : gpio_to_irq(button->gpio); if (irq < 0) { error = irq; dev_err(dev, @@ -597,6 +598,7 @@ gpio_keys_get_devtree_pdata(struct device *dev) button = &pdata->buttons[i++]; + button->irq = irq_of_parse_and_map(pp, 0); button->gpio = of_get_gpio_flags(pp, 0, &flags); button->active_low = flags & OF_GPIO_ACTIVE_LOW; -- 1.7.12 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html