Message ID | 1415808176-13282-1-git-send-email-alexander.stein@systec-electronic.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: > This features already exists for board config setups. Add support for > device tree based systems. > > Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> > --- > Please note: Due to current lack of hardware I could not test it yet. V2 > includes the changes proposed by Dmitry. > > Changes in v2: > * Added device tree bindings > * IRQ is only parsed and mapped when there is no "gpios" property > Can you list one or more examples in the patch description? Are these systems that don't expose the GPIO controller with a standalone driver, or systems that really actually connect the buttons to an interrupt pin? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 12 November 2014 17:04:57, Arnd Bergmann wrote: > On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: > > This features already exists for board config setups. Add support for > > device tree based systems. > > > > Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> > > --- > > Please note: Due to current lack of hardware I could not test it yet. V2 > > includes the changes proposed by Dmitry. > > > > Changes in v2: > > * Added device tree bindings > > * IRQ is only parsed and mapped when there is no "gpios" property > > > > Can you list one or more examples in the patch description? > Are these systems that don't expose the GPIO controller with a > standalone driver, or systems that really actually connect the > buttons to an interrupt pin? You mean a use case? I came to this situation to test interrupt polarity on a microcontroller, thus a simple /IRQ pin, no GPIO at all. So in the end I have an input just connected to an interrupt line. I noticed gpio_keys using platform data only can be used for this setup. So I added this support for device tree. Best regards, Alexander -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 12 November 2014 17:38:31 Alexander Stein wrote: > On Wednesday 12 November 2014 17:04:57, Arnd Bergmann wrote: > > On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: > > > This features already exists for board config setups. Add support for > > > device tree based systems. > > > > > > Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> > > > --- > > > Please note: Due to current lack of hardware I could not test it yet. V2 > > > includes the changes proposed by Dmitry. > > > > > > Changes in v2: > > > * Added device tree bindings > > > * IRQ is only parsed and mapped when there is no "gpios" property > > > > > > > Can you list one or more examples in the patch description? > > Are these systems that don't expose the GPIO controller with a > > standalone driver, or systems that really actually connect the > > buttons to an interrupt pin? > > You mean a use case? I came to this situation to test interrupt polarity on a microcontroller, thus a simple /IRQ pin, no GPIO at all. So in the end I have an input just connected to an interrupt line. > I noticed gpio_keys using platform data only can be used for this setup. So I added this support for device tree. > I meant a specific board file that uses this, which can't be converted to DT without your change. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wednesday 12 November 2014 20:16:06, Arnd Bergmann wrote: > On Wednesday 12 November 2014 17:38:31 Alexander Stein wrote: > > On Wednesday 12 November 2014 17:04:57, Arnd Bergmann wrote: > > > On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: > > > > This features already exists for board config setups. Add support for > > > > device tree based systems. > > > > > > > > Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> > > > > --- > > > > Please note: Due to current lack of hardware I could not test it yet. V2 > > > > includes the changes proposed by Dmitry. > > > > > > > > Changes in v2: > > > > * Added device tree bindings > > > > * IRQ is only parsed and mapped when there is no "gpios" property > > > > > > > > > > Can you list one or more examples in the patch description? > > > Are these systems that don't expose the GPIO controller with a > > > standalone driver, or systems that really actually connect the > > > buttons to an interrupt pin? > > > > You mean a use case? I came to this situation to test interrupt polarity on a microcontroller, thus a simple /IRQ pin, no GPIO at all. So in the end I have an input just connected to an interrupt line. > > I noticed gpio_keys using platform data only can be used for this setup. So I added this support for device tree. > > > > I meant a specific board file that uses this, which can't be converted > to DT without your change. I've searched (hopefully) the complete arch/ tree on v3.18-rc4 for struct gpio_keys_button and checked each occurrence. I didn't found any usage of IRQ based input keys. Best regards, Alexander -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 11:35:42 Alexander Stein wrote: > On Wednesday 12 November 2014 20:16:06, Arnd Bergmann wrote: > > On Wednesday 12 November 2014 17:38:31 Alexander Stein wrote: > > > On Wednesday 12 November 2014 17:04:57, Arnd Bergmann wrote: > > > > On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: > > > > > This features already exists for board config setups. Add support for > > > > > device tree based systems. > > > > > > > > > > Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> > > > > > --- > > > > > Please note: Due to current lack of hardware I could not test it yet. V2 > > > > > includes the changes proposed by Dmitry. > > > > > > > > > > Changes in v2: > > > > > * Added device tree bindings > > > > > * IRQ is only parsed and mapped when there is no "gpios" property > > > > > > > > > > > > > Can you list one or more examples in the patch description? > > > > Are these systems that don't expose the GPIO controller with a > > > > standalone driver, or systems that really actually connect the > > > > buttons to an interrupt pin? > > > > > > You mean a use case? I came to this situation to test interrupt polarity on a microcontroller, thus a simple /IRQ pin, no GPIO at all. So in the end I have an input just connected to an interrupt line. > > > I noticed gpio_keys using platform data only can be used for this setup. So I added this support for device tree. > > > > > > > I meant a specific board file that uses this, which can't be converted > > to DT without your change. > > I've searched (hopefully) the complete arch/ tree on v3.18-rc4 for > struct gpio_keys_button and checked each occurrence. I didn't found > any usage of IRQ based input keys. Ok, I see. I notice that Laxman Dewangan initially added the feature as part of (I assume) work on Tegra, but these days Tegra is DT-only so it can't actually get used for that any more. If we have a real usecase, I think we can still take your patch, but my impression at the moment is that it may be better to instead remove the feature entirely by reverting d8ee4a1c9052 ("Input: gpio_keys - add support for interrupt only keys"). Regarding your initial use case of testing interrupt polarity, would you have been able to do the same thing by looking at the interrupt count in /proc/interrupts? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 11:47:13, Arnd Bergmann wrote: > Regarding your initial use case of testing interrupt polarity, would > you have been able to do the same thing by looking at the interrupt > count in /proc/interrupts? This is only possible if some driver actually requests this interrupt, no? Best regards, Alexander
On Thursday 13 November 2014 04:17 PM, Arnd Bergmann wrote: > On Thursday 13 November 2014 11:35:42 Alexander Stein wrote: >> On Wednesday 12 November 2014 20:16:06, Arnd Bergmann wrote: >>> On Wednesday 12 November 2014 17:38:31 Alexander Stein wrote: >>>> On Wednesday 12 November 2014 17:04:57, Arnd Bergmann wrote: >>>>> On Wednesday 12 November 2014 17:02:56 Alexander Stein wrote: >>>>>> This features already exists for board config setups. Add support for >>>>>> device tree based systems. >>>>>> >>>>>> Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> >>>>>> --- >>>>>> Please note: Due to current lack of hardware I could not test it yet. V2 >>>>>> includes the changes proposed by Dmitry. >>>>>> >>>>>> Changes in v2: >>>>>> * Added device tree bindings >>>>>> * IRQ is only parsed and mapped when there is no "gpios" property >>>>>> >>>>> Can you list one or more examples in the patch description? >>>>> Are these systems that don't expose the GPIO controller with a >>>>> standalone driver, or systems that really actually connect the >>>>> buttons to an interrupt pin? >>>> You mean a use case? I came to this situation to test interrupt polarity on a microcontroller, thus a simple /IRQ pin, no GPIO at all. So in the end I have an input just connected to an interrupt line. >>>> I noticed gpio_keys using platform data only can be used for this setup. So I added this support for device tree. >>>> >>> I meant a specific board file that uses this, which can't be converted >>> to DT without your change. >> I've searched (hopefully) the complete arch/ tree on v3.18-rc4 for >> struct gpio_keys_button and checked each occurrence. I didn't found >> any usage of IRQ based input keys. > Ok, I see. > > I notice that Laxman Dewangan initially added the feature as part of > (I assume) work on Tegra, but these days Tegra is DT-only so it can't > actually get used for that any more. > > If we have a real usecase, I think we can still take your patch, but > my impression at the moment is that it may be better to instead > remove the feature entirely by reverting d8ee4a1c9052 ("Input: > gpio_keys - add support for interrupt only keys"). > > Regarding your initial use case of testing interrupt polarity, would > you have been able to do the same thing by looking at the interrupt > count in /proc/interrupts? > Yes, I posted patch for interrupt key on context on key connected to PMIC-Onkey. On PMIC, there is onkey pin input which generates interrupt only when it toggles. So if we have key (power key on our platforms) connected to this pin then we will only get interrupt from PMIC. Instead of implementing full interrupt key driver, I added this support on existing gpio keys. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 11:52:48 Alexander Stein wrote: > On Thursday 13 November 2014 11:47:13, Arnd Bergmann wrote: > > Regarding your initial use case of testing interrupt polarity, would > > you have been able to do the same thing by looking at the interrupt > > count in /proc/interrupts? > > This is only possible if some driver actually requests this interrupt, no? Yes, I think that is correct, at least with sparseirq, which is now the default. For interrupts that are mapped by the irqchip, you can look up the number of spurious interrupts in /proc/irq/<nr>/spurious. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 04:30 PM, Arnd Bergmann wrote: > On Thursday 13 November 2014 11:52:48 Alexander Stein wrote: >> On Thursday 13 November 2014 11:47:13, Arnd Bergmann wrote: >>> Regarding your initial use case of testing interrupt polarity, would >>> you have been able to do the same thing by looking at the interrupt >>> count in /proc/interrupts? >> This is only possible if some driver actually requests this interrupt, no? > Yes, I think that is correct, at least with sparseirq, which is now the > default. For interrupts that are mapped by the irqchip, you can look > up the number of spurious interrupts in /proc/irq/<nr>/spurious. > > yes, I came across multiple PMIC(TPS65910, MAXIM, Ricoh) module which generates interrupt when their On-key pin get toggle. Key is connected with this pin of PMIC and for on-key driver, we are using the gpio-keys driver by passing interrupt number instead of complete new driver. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 16:29:02 Laxman Dewangan wrote: > On Thursday 13 November 2014 04:17 PM, Arnd Bergmann wrote: > > I notice that Laxman Dewangan initially added the feature as part of > > (I assume) work on Tegra, but these days Tegra is DT-only so it can't > > actually get used for that any more. > > > > If we have a real usecase, I think we can still take your patch, but > > my impression at the moment is that it may be better to instead > > remove the feature entirely by reverting d8ee4a1c9052 ("Input: > > gpio_keys - add support for interrupt only keys"). > > > > Regarding your initial use case of testing interrupt polarity, would > > you have been able to do the same thing by looking at the interrupt > > count in /proc/interrupts? > > > > Yes, I posted patch for interrupt key on context on key connected to > PMIC-Onkey. > On PMIC, there is onkey pin input which generates interrupt only when it > toggles. So if we have key (power key on our platforms) connected to > this pin then we will only get interrupt from PMIC. > Instead of implementing full interrupt key driver, I added this support > on existing gpio keys. So is this code still in place, and do you think it's worthwhile to have a DT binding for it? Could the PMIC register a gpio controller instead? Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 13 November 2014 04:35 PM, Arnd Bergmann wrote: > On Thursday 13 November 2014 16:29:02 Laxman Dewangan wrote: >> >> Yes, I posted patch for interrupt key on context on key connected to >> PMIC-Onkey. >> On PMIC, there is onkey pin input which generates interrupt only when it >> toggles. So if we have key (power key on our platforms) connected to >> this pin then we will only get interrupt from PMIC. >> Instead of implementing full interrupt key driver, I added this support >> on existing gpio keys. > So is this code still in place, and do you think it's worthwhile to > have a DT binding for it? > > Could the PMIC register a gpio controller instead? > > This pin is not supported as GPIO and so exporting the functionality through GPIO is not feasible until we treat the onkey as GPIO pin without actual gpio functionality i..e only interrupt functionality. -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/devicetree/bindings/input/gpio-keys.txt b/Documentation/devicetree/bindings/input/gpio-keys.txt index 5c2c021..a4a38fc 100644 --- a/Documentation/devicetree/bindings/input/gpio-keys.txt +++ b/Documentation/devicetree/bindings/input/gpio-keys.txt @@ -10,10 +10,13 @@ Optional properties: Each button (key) is represented as a sub-node of "gpio-keys": Subnode properties: - - gpios: OF device-tree gpio specification. - label: Descriptive name of the key. - linux,code: Keycode to emit. +Required mutual exclusive subnode-properties: + - gpios: OF device-tree gpio specification. + - interrupts: the interrupt line for that input + Optional subnode-properties: - linux,input-type: Specify event type this button/key generates. If not specified defaults to <1> == EV_KEY. @@ -33,4 +36,9 @@ Example nodes: linux,code = <103>; gpios = <&gpio1 0 1>; }; + button@22 { + label = "GPIO Key DOWN"; + linux,code = <108>; + interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; + }; ... diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index 8c98e97..ce0d909 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -29,6 +29,7 @@ #include <linux/of.h> #include <linux/of_platform.h> #include <linux/of_gpio.h> +#include <linux/of_irq.h> #include <linux/spinlock.h> struct gpio_button_data { @@ -617,28 +618,33 @@ gpio_keys_get_devtree_pdata(struct device *dev) i = 0; for_each_child_of_node(node, pp) { - int gpio; + int gpio = -1; + int irq; enum of_gpio_flags flags; if (!of_find_property(pp, "gpios", NULL)) { - pdata->nbuttons--; - dev_warn(dev, "Found button without gpios\n"); - continue; - } - - gpio = of_get_gpio_flags(pp, 0, &flags); - if (gpio < 0) { - error = gpio; - if (error != -EPROBE_DEFER) - dev_err(dev, - "Failed to get gpio flags, error: %d\n", - error); - return ERR_PTR(error); + irq = irq_of_parse_and_map(pp, 0); + if (irq == 0) { + pdata->nbuttons--; + dev_warn(dev, "Found button without gpios or irqs\n"); + continue; + } + } else { + gpio = of_get_gpio_flags(pp, 0, &flags); + if (gpio < 0) { + error = gpio; + if (error != -EPROBE_DEFER) + dev_err(dev, + "Failed to get gpio flags, error: %d\n", + error); + return ERR_PTR(error); + } } button = &pdata->buttons[i++]; button->gpio = gpio; + button->irq = irq; button->active_low = flags & OF_GPIO_ACTIVE_LOW; if (of_property_read_u32(pp, "linux,code", &button->code)) {
This features already exists for board config setups. Add support for device tree based systems. Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com> --- Please note: Due to current lack of hardware I could not test it yet. V2 includes the changes proposed by Dmitry. Changes in v2: * Added device tree bindings * IRQ is only parsed and mapped when there is no "gpios" property .../devicetree/bindings/input/gpio-keys.txt | 10 ++++++- drivers/input/keyboard/gpio_keys.c | 34 +++++++++++++--------- 2 files changed, 29 insertions(+), 15 deletions(-)