Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Alexander Stein
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.st...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Arnd Bergmann
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.st...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Alexander Stein
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
-- 
Dipl.-Inf. Alexander Stein

SYS TEC electronic GmbH
Am Windrad 2
08468 Heinsdorfergrund
Tel.: 03765 38600-1156
Fax: 03765 38600-4100
Email: alexander.st...@systec-electronic.com
Website: www.systec-electronic.com
 
Managing Director: Dipl.-Phys. Siegmar Schmidt
Commercial registry: Amtsgericht Chemnitz, HRB 28082

--
To unsubscribe from this list: send the line unsubscribe linux-input in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Arnd Bergmann
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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Laxman Dewangan

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.st...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Arnd Bergmann
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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Laxman Dewangan

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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-13 Thread Laxman Dewangan

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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-12 Thread Alexander Stein
This features already exists for board config setups. Add support for
device tree based systems.

Signed-off-by: Alexander Stein alexander.st...@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(-)

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)) {
-- 
2.0.4

--
To unsubscribe from this list: send the line unsubscribe linux-input in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/1] Input: gpio_keys - add device tree support for interrupt only keys

2014-11-12 Thread Alexander Stein
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.st...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html