Re: [PATCH V3 2/2] input: pmic8xxx_pwrkey: Add support for power key

2011-05-22 Thread Samuel Ortiz
Hi Anirudh,

On Fri, May 13, 2011 at 03:17:51PM +0530, Anirudh Ghayal wrote:
 From: Trilok Soni ts...@codeaurora.org
 
 Add support for PMIC8XXX power key driven over dedicated
 KYPD_PWR_N pin.
Patch applied. Thanks for the patch, and thanks Dmitry for the review.

Cheers,
Samuel.

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V3 2/2] input: pmic8xxx_pwrkey: Add support for power key

2011-05-17 Thread Dmitry Torokhov
On Fri, May 13, 2011 at 03:17:51PM +0530, Anirudh Ghayal wrote:
 From: Trilok Soni ts...@codeaurora.org
 
 Add support for PMIC8XXX power key driven over dedicated
 KYPD_PWR_N pin.
 
 Cc: Dmitry Torokhov dmitry.torok...@gmail.com
 Signed-off-by: Trilok Soni ts...@codeaurora.org
 Signed-off-by: Anirudh Ghayal agha...@codeaurora.org

Acked-by: Dmitry Torokhov d...@mail.ru

Anirudh,

Looks great, thank you for making changes. Please feel free to merge
with the rest of the pmic8xxx MFD patches. I assume they will go through
MFD tree, right?

Thanks.

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


Re: [PATCH V3 2/2] input: pmic8xxx_pwrkey: Add support for power key

2011-05-17 Thread Anirudh Ghayal

Hi Samuel,

Can you please pull this patch in your MFD tree. 
https://patchwork.kernel.org/patch/782212/.

This patch depends on the pm8xxx MFD core.

Thank you,
~Anirudh

On 5/17/2011 12:06 PM, Dmitry Torokhov wrote:

On Fri, May 13, 2011 at 03:17:51PM +0530, Anirudh Ghayal wrote:

From: Trilok Sonits...@codeaurora.org

Add support for PMIC8XXX power key driven over dedicated
KYPD_PWR_N pin.

Cc: Dmitry Torokhovdmitry.torok...@gmail.com
Signed-off-by: Trilok Sonits...@codeaurora.org
Signed-off-by: Anirudh Ghayalagha...@codeaurora.org


Acked-by: Dmitry Torokhovd...@mail.ru

Anirudh,

Looks great, thank you for making changes. Please feel free to merge
with the rest of the pmic8xxx MFD patches. I assume they will go through
MFD tree, right?

Thanks.



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


[PATCH V3 2/2] input: pmic8xxx_pwrkey: Add support for power key

2011-05-13 Thread Anirudh Ghayal
From: Trilok Soni ts...@codeaurora.org

Add support for PMIC8XXX power key driven over dedicated
KYPD_PWR_N pin.

Cc: Dmitry Torokhov dmitry.torok...@gmail.com
Signed-off-by: Trilok Soni ts...@codeaurora.org
Signed-off-by: Anirudh Ghayal agha...@codeaurora.org
---
 drivers/input/misc/Kconfig|   11 ++
 drivers/input/misc/Makefile   |1 +
 drivers/input/misc/pmic8xxx-pwrkey.c  |  231 +
 include/linux/input/pmic8xxx-pwrkey.h |   31 +
 4 files changed, 274 insertions(+), 0 deletions(-)
 create mode 100644 drivers/input/misc/pmic8xxx-pwrkey.c
 create mode 100644 include/linux/input/pmic8xxx-pwrkey.h

diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index f9cf088..45dc6aa 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -330,6 +330,17 @@ config INPUT_PWM_BEEPER
  To compile this driver as a module, choose M here: the module will be
  called pwm-beeper.
 
+config INPUT_PMIC8XXX_PWRKEY
+   tristate PMIC8XXX power key support
+   depends on MFD_PM8XXX
+   help
+ Say Y here if you want support for the PMIC8XXX power key.
+
+ If unsure, say N.
+
+ To compile this driver as a module, choose M here: the
+ module will be called pmic8xxx-pwrkey.
+
 config INPUT_GPIO_ROTARY_ENCODER
tristate Rotary encoders connected to GPIO pins
depends on GPIOLIB  GENERIC_GPIO
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index e3f7984..38efb2c 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -33,6 +33,7 @@ obj-$(CONFIG_INPUT_PCF8574)   += pcf8574_keypad.o
 obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
 obj-$(CONFIG_INPUT_POWERMATE)  += powermate.o
 obj-$(CONFIG_INPUT_PWM_BEEPER) += pwm-beeper.o
+obj-$(CONFIG_INPUT_PMIC8XXX_PWRKEY)+= pmic8xxx-pwrkey.o
 obj-$(CONFIG_INPUT_RB532_BUTTON)   += rb532_button.o
 obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER)+= rotary_encoder.o
 obj-$(CONFIG_INPUT_SGI_BTNS)   += sgi_btns.o
diff --git a/drivers/input/misc/pmic8xxx-pwrkey.c 
b/drivers/input/misc/pmic8xxx-pwrkey.c
new file mode 100644
index 000..97e07e7
--- /dev/null
+++ b/drivers/input/misc/pmic8xxx-pwrkey.c
@@ -0,0 +1,231 @@
+/* Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include linux/module.h
+#include linux/init.h
+#include linux/kernel.h
+#include linux/errno.h
+#include linux/slab.h
+#include linux/input.h
+#include linux/interrupt.h
+#include linux/platform_device.h
+#include linux/log2.h
+
+#include linux/mfd/pm8xxx/core.h
+#include linux/input/pmic8xxx-pwrkey.h
+
+#define PON_CNTL_1 0x1C
+#define PON_CNTL_PULL_UP BIT(7)
+#define PON_CNTL_TRIG_DELAY_MASK (0x7)
+
+/**
+ * struct pmic8xxx_pwrkey - pmic8xxx pwrkey information
+ * @key_press_irq: key press irq number
+ */
+struct pmic8xxx_pwrkey {
+   struct input_dev *pwr;
+   int key_press_irq;
+};
+
+static irqreturn_t pwrkey_press_irq(int irq, void *_pwrkey)
+{
+   struct pmic8xxx_pwrkey *pwrkey = _pwrkey;
+
+   input_report_key(pwrkey-pwr, KEY_POWER, 1);
+   input_sync(pwrkey-pwr);
+
+   return IRQ_HANDLED;
+}
+
+static irqreturn_t pwrkey_release_irq(int irq, void *_pwrkey)
+{
+   struct pmic8xxx_pwrkey *pwrkey = _pwrkey;
+
+   input_report_key(pwrkey-pwr, KEY_POWER, 0);
+   input_sync(pwrkey-pwr);
+
+   return IRQ_HANDLED;
+}
+
+#ifdef CONFIG_PM_SLEEP
+static int pmic8xxx_pwrkey_suspend(struct device *dev)
+{
+   struct pmic8xxx_pwrkey *pwrkey = dev_get_drvdata(dev);
+
+   if (device_may_wakeup(dev))
+   enable_irq_wake(pwrkey-key_press_irq);
+
+   return 0;
+}
+
+static int pmic8xxx_pwrkey_resume(struct device *dev)
+{
+   struct pmic8xxx_pwrkey *pwrkey = dev_get_drvdata(dev);
+
+   if (device_may_wakeup(dev))
+   disable_irq_wake(pwrkey-key_press_irq);
+
+   return 0;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(pm8xxx_pwr_key_pm_ops,
+   pmic8xxx_pwrkey_suspend, pmic8xxx_pwrkey_resume);
+
+static int __devinit pmic8xxx_pwrkey_probe(struct platform_device *pdev)
+{
+   struct input_dev *pwr;
+   int key_release_irq = platform_get_irq(pdev, 0);
+   int key_press_irq = platform_get_irq(pdev, 1);
+   int err;
+   unsigned int delay;
+   u8 pon_cntl;
+   struct pmic8xxx_pwrkey *pwrkey;
+   const struct pm8xxx_pwrkey_platform_data *pdata = mfd_get_data(pdev);
+
+   if (!pdata) {
+