linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] Hi655x powerkey support for HiKey (v4)
@ 2016-06-14 22:43 John Stultz
  2016-06-14 22:43 ` [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC John Stultz
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: John Stultz @ 2016-06-14 22:43 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Dmitry Torokhov, Rob Herring, Lee Jones,
	Jorge Ramirez-Ortiz, Feng Chen, Wei Xu, Guodong Xu

This patchset enables the pmic powerkey to function on HiKey,
that I'd like to submit for consideration to be merged.

New in v4:
* Integrated a few cleanup suggestions from Lee Jones.
* Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match);
  line I missed when removing the dts initialization logic.

Review and feedback are always appreciated!

thanks
-john


Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Cc: Feng Chen <puck.chen@hisilicon.com>
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>


John Stultz (3):
  mfd: hi655x-pmic: Fixup issue with un-acked interrupts
  mfd: hi655x-pmic: Rename some interrupt macro names
  mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver

Jorge Ramirez-Ortiz (1):
  drivers: input: powerkey for HISI 65xx SoC

 drivers/input/misc/Kconfig         |   9 +++
 drivers/input/misc/Makefile        |   1 +
 drivers/input/misc/hisi_powerkey.c | 147 +++++++++++++++++++++++++++++++++++++
 drivers/mfd/hi655x-pmic.c          |  52 +++++++++----
 include/linux/mfd/hi655x-pmic.h    |  25 +++++--
 5 files changed, 213 insertions(+), 21 deletions(-)
 create mode 100644 drivers/input/misc/hisi_powerkey.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-14 22:43 [PATCH 0/4] Hi655x powerkey support for HiKey (v4) John Stultz
@ 2016-06-14 22:43 ` John Stultz
  2016-06-22  0:06   ` John Stultz
  2016-06-14 22:43 ` [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts John Stultz
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-14 22:43 UTC (permalink / raw)
  To: lkml
  Cc: Jorge Ramirez-Ortiz, Dmitry Torokhov, Rob Herring, Lee Jones,
	Feng Chen, Wei Xu, Guodong Xu, John Stultz

From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>

This driver provides a input driver for the power button on the
HiSi 65xx SoC for boards like HiKey.

This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
then basically rewritten by Jorge, but preserving the original
module author credits.

Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Cc: Feng Chen <puck.chen@hisilicon.com>
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
[jstultz: Reworked commit message, folded in other fixes/cleanups
from Jorge, implemented some larger cleanups suggested by DmitryT]
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
v2: Major rework integrating feedback from Dmitry.
v3: Dropped of_match compatible line since no longer using DT
    for this.
v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
    I missed in the last revision, which casued build issues w/
    modules.
 
 drivers/input/misc/Kconfig         |   9 +++
 drivers/input/misc/Makefile        |   1 +
 drivers/input/misc/hisi_powerkey.c | 147 +++++++++++++++++++++++++++++++++++++
 3 files changed, 157 insertions(+)
 create mode 100644 drivers/input/misc/hisi_powerkey.c

diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 1f2337a..07aacfc 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -796,4 +796,13 @@ config INPUT_DRV2667_HAPTICS
 	  To compile this driver as a module, choose M here: the
 	  module will be called drv2667-haptics.
 
+config HISI_POWERKEY
+	tristate "Hisilicon PMIC ONKEY support"
+	depends on ARCH_HISI || COMPILE_TEST
+	help
+	  Say Y to enable support for PMIC ONKEY.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called hisi_powerkey.
+
 endif
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 0357a08..f264777 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -75,3 +75,4 @@ obj-$(CONFIG_INPUT_WM831X_ON)		+= wm831x-on.o
 obj-$(CONFIG_INPUT_XEN_KBDDEV_FRONTEND)	+= xen-kbdfront.o
 obj-$(CONFIG_INPUT_YEALINK)		+= yealink.o
 obj-$(CONFIG_INPUT_IDEAPAD_SLIDEBAR)	+= ideapad_slidebar.o
+obj-$(CONFIG_HISI_POWERKEY)		+= hisi_powerkey.o
diff --git a/drivers/input/misc/hisi_powerkey.c b/drivers/input/misc/hisi_powerkey.c
new file mode 100644
index 0000000..e5ab5d8
--- /dev/null
+++ b/drivers/input/misc/hisi_powerkey.c
@@ -0,0 +1,147 @@
+/*
+ * Hisilicon PMIC powerkey driver
+ *
+ * Copyright (C) 2013 Hisilicon Ltd.
+ * Copyright (C) 2015, 2016 Linaro Ltd.
+ *
+ * This file is subject to the terms and conditions of the GNU General
+ * Public License. See the file "COPYING" in the main directory of this
+ * archive for more details.
+ *
+ * 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/platform_device.h>
+#include <linux/interrupt.h>
+#include <linux/reboot.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_irq.h>
+#include <linux/input.h>
+#include <linux/slab.h>
+
+/* the held interrupt will trigger after 4 seconds */
+#define MAX_HELD_TIME	(4 * MSEC_PER_SEC)
+
+
+enum id_action { ID_PRESSED, ID_RELEASED, ID_HELD, ID_LAST };
+const char *const irq_names[ID_LAST] = {"down", "up", "hold 4s"};
+
+struct hi65xx_priv {
+	struct input_dev *input;
+};
+
+static irqreturn_t hi65xx_power_press_isr(int irq, void *q)
+{
+	struct hi65xx_priv *p = q;
+
+	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
+	input_report_key(p->input, KEY_POWER, 1);
+	input_sync(p->input);
+
+	return IRQ_HANDLED;
+}
+
+static irqreturn_t hi65xx_power_release_isr(int irq, void *q)
+{
+	struct hi65xx_priv *p = q;
+
+	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
+	input_report_key(p->input, KEY_POWER, 0);
+	input_sync(p->input);
+
+	return IRQ_HANDLED;
+}
+
+static irqreturn_t hi65xx_restart_toggle_isr(int irq, void *q)
+{
+	struct hi65xx_priv *p = q;
+	int value = test_bit(KEY_RESTART, p->input->key);
+
+	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
+	input_report_key(p->input, KEY_RESTART, !value);
+	input_sync(p->input);
+
+	return IRQ_HANDLED;
+}
+
+irqreturn_t (*irq_handlers[ID_LAST])(int irq, void *q) = {
+	hi65xx_power_press_isr,
+	hi65xx_power_release_isr,
+	hi65xx_restart_toggle_isr,
+};
+
+static int hi65xx_powerkey_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct hi65xx_priv *priv;
+	int irq, i, ret;
+
+	priv = devm_kzalloc(dev, sizeof(struct hi65xx_priv), GFP_KERNEL);
+	if (!priv)
+		return -ENOMEM;
+
+	priv->input = devm_input_allocate_device(&pdev->dev);
+	if (!priv->input) {
+		dev_err(&pdev->dev, "failed to allocate input device\n");
+		return -ENOMEM;
+	}
+
+	priv->input->phys = "hisi_on/input0";
+	priv->input->name = "HISI 65xx PowerOn Key";
+
+	input_set_capability(priv->input, EV_KEY, KEY_POWER);
+	input_set_capability(priv->input, EV_KEY, KEY_RESTART);
+
+	for (i = 0; i < ID_LAST; i++) {
+
+		irq = platform_get_irq_byname(pdev, irq_names[i]);
+		if (irq < 0) {
+			dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
+			return irq;
+		}
+
+		ret = devm_request_any_context_irq(dev, irq,
+					irq_handlers[i], IRQF_ONESHOT,
+					irq_names[i], priv);
+		if (ret < 0) {
+			dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
+			return ret;
+		}
+	}
+
+	ret = input_register_device(priv->input);
+	if (ret) {
+		dev_err(&pdev->dev, "failed to register input device: %d\n",
+			ret);
+		return ret;
+	}
+
+	platform_set_drvdata(pdev, priv);
+	device_init_wakeup(&pdev->dev, 1);
+
+	return 0;
+}
+
+static int hi65xx_powerkey_remove(struct platform_device *pdev)
+{
+	device_init_wakeup(&pdev->dev, 0);
+	return 0;
+}
+
+static struct platform_driver hi65xx_powerkey_driver = {
+	.driver = {
+		.name = "hi65xx-powerkey",
+	},
+	.probe = hi65xx_powerkey_probe,
+	.remove  = hi65xx_powerkey_remove,
+};
+
+module_platform_driver(hi65xx_powerkey_driver);
+
+MODULE_AUTHOR("Zhiliang Xue <xuezhiliang@huawei.com");
+MODULE_DESCRIPTION("Hisi PMIC Power key driver");
+MODULE_LICENSE("GPL v2");
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts
  2016-06-14 22:43 [PATCH 0/4] Hi655x powerkey support for HiKey (v4) John Stultz
  2016-06-14 22:43 ` [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC John Stultz
@ 2016-06-14 22:43 ` John Stultz
  2016-06-15 12:54   ` Lee Jones
  2016-06-14 22:43 ` [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names John Stultz
  2016-06-14 22:43 ` [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver John Stultz
  3 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-14 22:43 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Dmitry Torokhov, Rob Herring, Lee Jones,
	Jorge Ramirez-Ortiz, Feng Chen, Wei Xu, Guodong Xu

While trying to get the powerkey to function, I found when
pressing the key, I would get infinitely repeating interrupts.

After digging around a bit, it seems we didn't set the ack_base
value for the regmap irqchip logic, so nothing was acking the
interrupt.

This patch adds the ack_base, which seems to make things work.

Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Cc: Feng Chen <puck.chen@hisilicon.com>
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
 drivers/mfd/hi655x-pmic.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
index 05ddc78..68ab370 100644
--- a/drivers/mfd/hi655x-pmic.c
+++ b/drivers/mfd/hi655x-pmic.c
@@ -45,6 +45,7 @@ static const struct regmap_irq_chip hi655x_irq_chip = {
 	.num_regs = 1,
 	.num_irqs = ARRAY_SIZE(hi655x_irqs),
 	.status_base = HI655X_IRQ_STAT_BASE,
+	.ack_base = HI655X_IRQ_STAT_BASE,
 	.mask_base = HI655X_IRQ_MASK_BASE,
 };
 
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names
  2016-06-14 22:43 [PATCH 0/4] Hi655x powerkey support for HiKey (v4) John Stultz
  2016-06-14 22:43 ` [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC John Stultz
  2016-06-14 22:43 ` [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts John Stultz
@ 2016-06-14 22:43 ` John Stultz
  2016-06-15 12:54   ` Lee Jones
  2016-06-14 22:43 ` [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver John Stultz
  3 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-14 22:43 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Dmitry Torokhov, Rob Herring, Lee Jones,
	Jorge Ramirez-Ortiz, Feng Chen, Wei Xu, Guodong Xu

Currently the hi655x-pmic driver has names for interrupt mask
values, but not for the interrupt numbers themselves.

So to allow for interrupt numbers to have sane names, rename
the mask values with the _MASK postfix and use the existing
names as the interrupt name

Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Cc: Feng Chen <puck.chen@hisilicon.com>
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
 drivers/mfd/hi655x-pmic.c       | 16 ++++++++--------
 include/linux/mfd/hi655x-pmic.h | 25 +++++++++++++++++--------
 2 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
index 68ab370..072e6fe 100644
--- a/drivers/mfd/hi655x-pmic.c
+++ b/drivers/mfd/hi655x-pmic.c
@@ -29,14 +29,14 @@ static const struct mfd_cell hi655x_pmic_devs[] = {
 };
 
 static const struct regmap_irq hi655x_irqs[] = {
-	{ .reg_offset = 0, .mask = OTMP_D1R_INT },
-	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT },
-	{ .reg_offset = 0, .mask = VSYS_UV_D3R_INT },
-	{ .reg_offset = 0, .mask = VSYS_6P0_D200UR_INT },
-	{ .reg_offset = 0, .mask = PWRON_D4SR_INT },
-	{ .reg_offset = 0, .mask = PWRON_D20F_INT },
-	{ .reg_offset = 0, .mask = PWRON_D20R_INT },
-	{ .reg_offset = 0, .mask = RESERVE_INT },
+	{ .reg_offset = 0, .mask = OTMP_D1R_INT_MASK },
+	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT_MASK },
+	{ .reg_offset = 0, .mask = VSYS_UV_D3R_INT_MASK },
+	{ .reg_offset = 0, .mask = VSYS_6P0_D200UR_INT_MASK },
+	{ .reg_offset = 0, .mask = PWRON_D4SR_INT_MASK },
+	{ .reg_offset = 0, .mask = PWRON_D20F_INT_MASK },
+	{ .reg_offset = 0, .mask = PWRON_D20R_INT_MASK },
+	{ .reg_offset = 0, .mask = RESERVE_INT_MASK },
 };
 
 static const struct regmap_irq_chip hi655x_irq_chip = {
diff --git a/include/linux/mfd/hi655x-pmic.h b/include/linux/mfd/hi655x-pmic.h
index dbbe9a6..62f03c2 100644
--- a/include/linux/mfd/hi655x-pmic.h
+++ b/include/linux/mfd/hi655x-pmic.h
@@ -34,14 +34,23 @@
 #define PMU_VER_START                   0x10
 #define PMU_VER_END                     0x38
 
-#define RESERVE_INT                     BIT(7)
-#define PWRON_D20R_INT                  BIT(6)
-#define PWRON_D20F_INT                  BIT(5)
-#define PWRON_D4SR_INT                  BIT(4)
-#define VSYS_6P0_D200UR_INT             BIT(3)
-#define VSYS_UV_D3R_INT                 BIT(2)
-#define VSYS_2P5_R_INT                  BIT(1)
-#define OTMP_D1R_INT                    BIT(0)
+#define RESERVE_INT                     7
+#define PWRON_D20R_INT                  6
+#define PWRON_D20F_INT                  5
+#define PWRON_D4SR_INT                  4
+#define VSYS_6P0_D200UR_INT             3
+#define VSYS_UV_D3R_INT                 2
+#define VSYS_2P5_R_INT                  1
+#define OTMP_D1R_INT                    0
+
+#define RESERVE_INT_MASK                BIT(RESERVE_INT)
+#define PWRON_D20R_INT_MASK             BIT(PWRON_D20R_INT)
+#define PWRON_D20F_INT_MASK             BIT(PWRON_D20F_INT)
+#define PWRON_D4SR_INT_MASK             BIT(PWRON_D4SR_INT)
+#define VSYS_6P0_D200UR_INT_MASK        BIT(VSYS_6P0_D200UR_INT)
+#define VSYS_UV_D3R_INT_MASK            BIT(VSYS_UV_D3R_INT)
+#define VSYS_2P5_R_INT_MASK             BIT(VSYS_2P5_R_INT)
+#define OTMP_D1R_INT_MASK               BIT(OTMP_D1R_INT)
 
 struct hi655x_pmic {
 	struct resource *res;
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver
  2016-06-14 22:43 [PATCH 0/4] Hi655x powerkey support for HiKey (v4) John Stultz
                   ` (2 preceding siblings ...)
  2016-06-14 22:43 ` [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names John Stultz
@ 2016-06-14 22:43 ` John Stultz
  2016-06-15 12:54   ` Lee Jones
  3 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-14 22:43 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Dmitry Torokhov, Rob Herring, Lee Jones,
	Jorge Ramirez-Ortiz, Feng Chen, Wei Xu, Guodong Xu

Wire up the powerkey driver functionality for the hi655x PMIC.

Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Cc: Feng Chen <puck.chen@hisilicon.com>
Cc: Wei Xu <xuwei5@hisilicon.com>
Cc: Guodong Xu <guodong.xu@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
---
v4: Cleaned up magic values and realigned regulator entry to be
    a onliner

 drivers/mfd/hi655x-pmic.c | 35 ++++++++++++++++++++++++++++++-----
 1 file changed, 30 insertions(+), 5 deletions(-)

diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
index 072e6fe..e955a0c 100644
--- a/drivers/mfd/hi655x-pmic.c
+++ b/drivers/mfd/hi655x-pmic.c
@@ -24,10 +24,6 @@
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 
-static const struct mfd_cell hi655x_pmic_devs[] = {
-	{ .name = "hi655x-regulator", },
-};
-
 static const struct regmap_irq hi655x_irqs[] = {
 	{ .reg_offset = 0, .mask = OTMP_D1R_INT_MASK },
 	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT_MASK },
@@ -56,6 +52,34 @@ static struct regmap_config hi655x_regmap_config = {
 	.max_register = HI655X_BUS_ADDR(0xFFF),
 };
 
+static struct resource pwrkey_resources[] = {
+	{
+		.name	= "down",
+		.start	= PWRON_D20R_INT,
+		.end	= PWRON_D20R_INT,
+		.flags	= IORESOURCE_IRQ,
+	}, {
+		.name	= "up",
+		.start	= PWRON_D20F_INT,
+		.end	= PWRON_D20F_INT,
+		.flags	= IORESOURCE_IRQ,
+	}, {
+		.name	= "hold 4s",
+		.start	= PWRON_D4SR_INT,
+		.end	= PWRON_D4SR_INT,
+		.flags	= IORESOURCE_IRQ,
+	},
+};
+
+static const struct mfd_cell hi655x_pmic_devs[] = {
+	{
+		.name		= "hi65xx-powerkey",
+		.num_resources	= ARRAY_SIZE(pwrkey_resources),
+		.resources	= &pwrkey_resources[0],
+	},
+	{	.name		= "hi655x-regulator", },
+};
+
 static void hi655x_local_irq_clear(struct regmap *map)
 {
 	int i;
@@ -124,7 +148,8 @@ static int hi655x_pmic_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, pmic);
 
 	ret = mfd_add_devices(dev, PLATFORM_DEVID_AUTO, hi655x_pmic_devs,
-			      ARRAY_SIZE(hi655x_pmic_devs), NULL, 0, NULL);
+			      ARRAY_SIZE(hi655x_pmic_devs), NULL, 0,
+			      regmap_irq_get_domain(pmic->irq_data));
 	if (ret) {
 		dev_err(dev, "Failed to register device %d\n", ret);
 		regmap_del_irq_chip(gpio_to_irq(pmic->gpio), pmic->irq_data);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts
  2016-06-14 22:43 ` [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts John Stultz
@ 2016-06-15 12:54   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2016-06-15 12:54 UTC (permalink / raw)
  To: John Stultz
  Cc: lkml, Dmitry Torokhov, Rob Herring, Jorge Ramirez-Ortiz,
	Feng Chen, Wei Xu, Guodong Xu

On Tue, 14 Jun 2016, John Stultz wrote:

> While trying to get the powerkey to function, I found when
> pressing the key, I would get infinitely repeating interrupts.
> 
> After digging around a bit, it seems we didn't set the ack_base
> value for the regmap irqchip logic, so nothing was acking the
> interrupt.
> 
> This patch adds the ack_base, which seems to make things work.
> 
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> Cc: Feng Chen <puck.chen@hisilicon.com>
> Cc: Wei Xu <xuwei5@hisilicon.com>
> Cc: Guodong Xu <guodong.xu@linaro.org>
> Acked-by: Lee Jones <lee.jones@linaro.org>
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
>  drivers/mfd/hi655x-pmic.c | 1 +
>  1 file changed, 1 insertion(+)

Applied, thanks.

> diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
> index 05ddc78..68ab370 100644
> --- a/drivers/mfd/hi655x-pmic.c
> +++ b/drivers/mfd/hi655x-pmic.c
> @@ -45,6 +45,7 @@ static const struct regmap_irq_chip hi655x_irq_chip = {
>  	.num_regs = 1,
>  	.num_irqs = ARRAY_SIZE(hi655x_irqs),
>  	.status_base = HI655X_IRQ_STAT_BASE,
> +	.ack_base = HI655X_IRQ_STAT_BASE,
>  	.mask_base = HI655X_IRQ_MASK_BASE,
>  };
>  

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names
  2016-06-14 22:43 ` [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names John Stultz
@ 2016-06-15 12:54   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2016-06-15 12:54 UTC (permalink / raw)
  To: John Stultz
  Cc: lkml, Dmitry Torokhov, Rob Herring, Jorge Ramirez-Ortiz,
	Feng Chen, Wei Xu, Guodong Xu

On Tue, 14 Jun 2016, John Stultz wrote:

> Currently the hi655x-pmic driver has names for interrupt mask
> values, but not for the interrupt numbers themselves.
> 
> So to allow for interrupt numbers to have sane names, rename
> the mask values with the _MASK postfix and use the existing
> names as the interrupt name
> 
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> Cc: Feng Chen <puck.chen@hisilicon.com>
> Cc: Wei Xu <xuwei5@hisilicon.com>
> Cc: Guodong Xu <guodong.xu@linaro.org>
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
>  drivers/mfd/hi655x-pmic.c       | 16 ++++++++--------
>  include/linux/mfd/hi655x-pmic.h | 25 +++++++++++++++++--------
>  2 files changed, 25 insertions(+), 16 deletions(-)

Applied, thanks.

> diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
> index 68ab370..072e6fe 100644
> --- a/drivers/mfd/hi655x-pmic.c
> +++ b/drivers/mfd/hi655x-pmic.c
> @@ -29,14 +29,14 @@ static const struct mfd_cell hi655x_pmic_devs[] = {
>  };
>  
>  static const struct regmap_irq hi655x_irqs[] = {
> -	{ .reg_offset = 0, .mask = OTMP_D1R_INT },
> -	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT },
> -	{ .reg_offset = 0, .mask = VSYS_UV_D3R_INT },
> -	{ .reg_offset = 0, .mask = VSYS_6P0_D200UR_INT },
> -	{ .reg_offset = 0, .mask = PWRON_D4SR_INT },
> -	{ .reg_offset = 0, .mask = PWRON_D20F_INT },
> -	{ .reg_offset = 0, .mask = PWRON_D20R_INT },
> -	{ .reg_offset = 0, .mask = RESERVE_INT },
> +	{ .reg_offset = 0, .mask = OTMP_D1R_INT_MASK },
> +	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT_MASK },
> +	{ .reg_offset = 0, .mask = VSYS_UV_D3R_INT_MASK },
> +	{ .reg_offset = 0, .mask = VSYS_6P0_D200UR_INT_MASK },
> +	{ .reg_offset = 0, .mask = PWRON_D4SR_INT_MASK },
> +	{ .reg_offset = 0, .mask = PWRON_D20F_INT_MASK },
> +	{ .reg_offset = 0, .mask = PWRON_D20R_INT_MASK },
> +	{ .reg_offset = 0, .mask = RESERVE_INT_MASK },
>  };
>  
>  static const struct regmap_irq_chip hi655x_irq_chip = {
> diff --git a/include/linux/mfd/hi655x-pmic.h b/include/linux/mfd/hi655x-pmic.h
> index dbbe9a6..62f03c2 100644
> --- a/include/linux/mfd/hi655x-pmic.h
> +++ b/include/linux/mfd/hi655x-pmic.h
> @@ -34,14 +34,23 @@
>  #define PMU_VER_START                   0x10
>  #define PMU_VER_END                     0x38
>  
> -#define RESERVE_INT                     BIT(7)
> -#define PWRON_D20R_INT                  BIT(6)
> -#define PWRON_D20F_INT                  BIT(5)
> -#define PWRON_D4SR_INT                  BIT(4)
> -#define VSYS_6P0_D200UR_INT             BIT(3)
> -#define VSYS_UV_D3R_INT                 BIT(2)
> -#define VSYS_2P5_R_INT                  BIT(1)
> -#define OTMP_D1R_INT                    BIT(0)
> +#define RESERVE_INT                     7
> +#define PWRON_D20R_INT                  6
> +#define PWRON_D20F_INT                  5
> +#define PWRON_D4SR_INT                  4
> +#define VSYS_6P0_D200UR_INT             3
> +#define VSYS_UV_D3R_INT                 2
> +#define VSYS_2P5_R_INT                  1
> +#define OTMP_D1R_INT                    0
> +
> +#define RESERVE_INT_MASK                BIT(RESERVE_INT)
> +#define PWRON_D20R_INT_MASK             BIT(PWRON_D20R_INT)
> +#define PWRON_D20F_INT_MASK             BIT(PWRON_D20F_INT)
> +#define PWRON_D4SR_INT_MASK             BIT(PWRON_D4SR_INT)
> +#define VSYS_6P0_D200UR_INT_MASK        BIT(VSYS_6P0_D200UR_INT)
> +#define VSYS_UV_D3R_INT_MASK            BIT(VSYS_UV_D3R_INT)
> +#define VSYS_2P5_R_INT_MASK             BIT(VSYS_2P5_R_INT)
> +#define OTMP_D1R_INT_MASK               BIT(OTMP_D1R_INT)
>  
>  struct hi655x_pmic {
>  	struct resource *res;

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver
  2016-06-14 22:43 ` [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver John Stultz
@ 2016-06-15 12:54   ` Lee Jones
  0 siblings, 0 replies; 15+ messages in thread
From: Lee Jones @ 2016-06-15 12:54 UTC (permalink / raw)
  To: John Stultz
  Cc: lkml, Dmitry Torokhov, Rob Herring, Jorge Ramirez-Ortiz,
	Feng Chen, Wei Xu, Guodong Xu

On Tue, 14 Jun 2016, John Stultz wrote:

> Wire up the powerkey driver functionality for the hi655x PMIC.
> 
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> Cc: Feng Chen <puck.chen@hisilicon.com>
> Cc: Wei Xu <xuwei5@hisilicon.com>
> Cc: Guodong Xu <guodong.xu@linaro.org>
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
> v4: Cleaned up magic values and realigned regulator entry to be
>     a onliner
> 
>  drivers/mfd/hi655x-pmic.c | 35 ++++++++++++++++++++++++++++++-----
>  1 file changed, 30 insertions(+), 5 deletions(-)

Applied, thanks.

> diff --git a/drivers/mfd/hi655x-pmic.c b/drivers/mfd/hi655x-pmic.c
> index 072e6fe..e955a0c 100644
> --- a/drivers/mfd/hi655x-pmic.c
> +++ b/drivers/mfd/hi655x-pmic.c
> @@ -24,10 +24,6 @@
>  #include <linux/platform_device.h>
>  #include <linux/regmap.h>
>  
> -static const struct mfd_cell hi655x_pmic_devs[] = {
> -	{ .name = "hi655x-regulator", },
> -};
> -
>  static const struct regmap_irq hi655x_irqs[] = {
>  	{ .reg_offset = 0, .mask = OTMP_D1R_INT_MASK },
>  	{ .reg_offset = 0, .mask = VSYS_2P5_R_INT_MASK },
> @@ -56,6 +52,34 @@ static struct regmap_config hi655x_regmap_config = {
>  	.max_register = HI655X_BUS_ADDR(0xFFF),
>  };
>  
> +static struct resource pwrkey_resources[] = {
> +	{
> +		.name	= "down",
> +		.start	= PWRON_D20R_INT,
> +		.end	= PWRON_D20R_INT,
> +		.flags	= IORESOURCE_IRQ,
> +	}, {
> +		.name	= "up",
> +		.start	= PWRON_D20F_INT,
> +		.end	= PWRON_D20F_INT,
> +		.flags	= IORESOURCE_IRQ,
> +	}, {
> +		.name	= "hold 4s",
> +		.start	= PWRON_D4SR_INT,
> +		.end	= PWRON_D4SR_INT,
> +		.flags	= IORESOURCE_IRQ,
> +	},
> +};
> +
> +static const struct mfd_cell hi655x_pmic_devs[] = {
> +	{
> +		.name		= "hi65xx-powerkey",
> +		.num_resources	= ARRAY_SIZE(pwrkey_resources),
> +		.resources	= &pwrkey_resources[0],
> +	},
> +	{	.name		= "hi655x-regulator", },
> +};
> +
>  static void hi655x_local_irq_clear(struct regmap *map)
>  {
>  	int i;
> @@ -124,7 +148,8 @@ static int hi655x_pmic_probe(struct platform_device *pdev)
>  	platform_set_drvdata(pdev, pmic);
>  
>  	ret = mfd_add_devices(dev, PLATFORM_DEVID_AUTO, hi655x_pmic_devs,
> -			      ARRAY_SIZE(hi655x_pmic_devs), NULL, 0, NULL);
> +			      ARRAY_SIZE(hi655x_pmic_devs), NULL, 0,
> +			      regmap_irq_get_domain(pmic->irq_data));
>  	if (ret) {
>  		dev_err(dev, "Failed to register device %d\n", ret);
>  		regmap_del_irq_chip(gpio_to_irq(pmic->gpio), pmic->irq_data);

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-14 22:43 ` [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC John Stultz
@ 2016-06-22  0:06   ` John Stultz
  2016-06-23  0:47     ` Dmitry Torokhov
  0 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-22  0:06 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu, John Stultz

On Tue, Jun 14, 2016 at 3:43 PM, John Stultz <john.stultz@linaro.org> wrote:
> From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>
> This driver provides a input driver for the power button on the
> HiSi 65xx SoC for boards like HiKey.
>
> This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
> then basically rewritten by Jorge, but preserving the original
> module author credits.
>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> Cc: Feng Chen <puck.chen@hisilicon.com>
> Cc: Wei Xu <xuwei5@hisilicon.com>
> Cc: Guodong Xu <guodong.xu@linaro.org>
> Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> [jstultz: Reworked commit message, folded in other fixes/cleanups
> from Jorge, implemented some larger cleanups suggested by DmitryT]
> Signed-off-by: John Stultz <john.stultz@linaro.org>
> ---
> v2: Major rework integrating feedback from Dmitry.
> v3: Dropped of_match compatible line since no longer using DT
>     for this.
> v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
>     I missed in the last revision, which casued build issues w/
>     modules.

Hey Dmitry,
  Just wanted to ping you to see if there was anything else you were
wanting changed with this patch. Lee has queued the mfd patches in
-next, so I wanted to be sure to address any concerns you had that was
keeping this from heading upstream in 4.8 (hopefully :).

thanks
-john

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-22  0:06   ` John Stultz
@ 2016-06-23  0:47     ` Dmitry Torokhov
  2016-06-23 20:31       ` John Stultz
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Torokhov @ 2016-06-23  0:47 UTC (permalink / raw)
  To: John Stultz
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Tue, Jun 21, 2016 at 05:06:23PM -0700, John Stultz wrote:
> On Tue, Jun 14, 2016 at 3:43 PM, John Stultz <john.stultz@linaro.org> wrote:
> > From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >
> > This driver provides a input driver for the power button on the
> > HiSi 65xx SoC for boards like HiKey.
> >
> > This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
> > then basically rewritten by Jorge, but preserving the original
> > module author credits.
> >
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: Lee Jones <lee.jones@linaro.org>
> > Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > Cc: Feng Chen <puck.chen@hisilicon.com>
> > Cc: Wei Xu <xuwei5@hisilicon.com>
> > Cc: Guodong Xu <guodong.xu@linaro.org>
> > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > [jstultz: Reworked commit message, folded in other fixes/cleanups
> > from Jorge, implemented some larger cleanups suggested by DmitryT]
> > Signed-off-by: John Stultz <john.stultz@linaro.org>
> > ---
> > v2: Major rework integrating feedback from Dmitry.
> > v3: Dropped of_match compatible line since no longer using DT
> >     for this.
> > v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
> >     I missed in the last revision, which casued build issues w/
> >     modules.
> 
> Hey Dmitry,
>   Just wanted to ping you to see if there was anything else you were
> wanting changed with this patch. Lee has queued the mfd patches in
> -next, so I wanted to be sure to address any concerns you had that was
> keeping this from heading upstream in 4.8 (hopefully :).

Right, sorry, does the following look OK to you? 

Thanks.

-- 
Dmitry


Input: hisi_powerkey - misc changes

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/input/misc/hisi_powerkey.c |  101 +++++++++++++++++-------------------
 1 file changed, 48 insertions(+), 53 deletions(-)

diff --git a/drivers/input/misc/hisi_powerkey.c b/drivers/input/misc/hisi_powerkey.c
index e5ab5d8..675539c 100644
--- a/drivers/input/misc/hisi_powerkey.c
+++ b/drivers/input/misc/hisi_powerkey.c
@@ -26,101 +26,96 @@
 /* the held interrupt will trigger after 4 seconds */
 #define MAX_HELD_TIME	(4 * MSEC_PER_SEC)
 
-
-enum id_action { ID_PRESSED, ID_RELEASED, ID_HELD, ID_LAST };
-const char *const irq_names[ID_LAST] = {"down", "up", "hold 4s"};
-
-struct hi65xx_priv {
-	struct input_dev *input;
-};
-
 static irqreturn_t hi65xx_power_press_isr(int irq, void *q)
 {
-	struct hi65xx_priv *p = q;
+	struct input_dev *input = q;
 
-	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
-	input_report_key(p->input, KEY_POWER, 1);
-	input_sync(p->input);
+	pm_wakeup_event(input->dev.parent, MAX_HELD_TIME);
+	input_report_key(input, KEY_POWER, 1);
+	input_sync(input);
 
 	return IRQ_HANDLED;
 }
 
 static irqreturn_t hi65xx_power_release_isr(int irq, void *q)
 {
-	struct hi65xx_priv *p = q;
+	struct input_dev *input = q;
 
-	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
-	input_report_key(p->input, KEY_POWER, 0);
-	input_sync(p->input);
+	pm_wakeup_event(input->dev.parent, MAX_HELD_TIME);
+	input_report_key(input, KEY_POWER, 0);
+	input_sync(input);
 
 	return IRQ_HANDLED;
 }
 
 static irqreturn_t hi65xx_restart_toggle_isr(int irq, void *q)
 {
-	struct hi65xx_priv *p = q;
-	int value = test_bit(KEY_RESTART, p->input->key);
+	struct input_dev *input = q;
+	int value = test_bit(KEY_RESTART, input->key);
 
-	pm_wakeup_event(p->input->dev.parent, MAX_HELD_TIME);
-	input_report_key(p->input, KEY_RESTART, !value);
-	input_sync(p->input);
+	pm_wakeup_event(input->dev.parent, MAX_HELD_TIME);
+	input_report_key(input, KEY_RESTART, !value);
+	input_sync(input);
 
 	return IRQ_HANDLED;
 }
 
-irqreturn_t (*irq_handlers[ID_LAST])(int irq, void *q) = {
-	hi65xx_power_press_isr,
-	hi65xx_power_release_isr,
-	hi65xx_restart_toggle_isr,
+static const struct {
+	const char *name;
+	irqreturn_t (*handler)(int irq, void *q);
+} hi65xx_irq_info[] = {
+	{ "down", hi65xx_power_press_isr },
+	{ "up", hi65xx_power_release_isr },
+	{ "hold 4s", hi65xx_restart_toggle_isr },
 };
 
 static int hi65xx_powerkey_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
-	struct hi65xx_priv *priv;
-	int irq, i, ret;
-
-	priv = devm_kzalloc(dev, sizeof(struct hi65xx_priv), GFP_KERNEL);
-	if (!priv)
-		return -ENOMEM;
+	struct input_dev *input;
+	int irq, i, error;
 
-	priv->input = devm_input_allocate_device(&pdev->dev);
-	if (!priv->input) {
+	input = devm_input_allocate_device(&pdev->dev);
+	if (!input) {
 		dev_err(&pdev->dev, "failed to allocate input device\n");
 		return -ENOMEM;
 	}
 
-	priv->input->phys = "hisi_on/input0";
-	priv->input->name = "HISI 65xx PowerOn Key";
+	input->phys = "hisi_on/input0";
+	input->name = "HISI 65xx PowerOn Key";
 
-	input_set_capability(priv->input, EV_KEY, KEY_POWER);
-	input_set_capability(priv->input, EV_KEY, KEY_RESTART);
+	input_set_capability(input, EV_KEY, KEY_POWER);
+	input_set_capability(input, EV_KEY, KEY_RESTART);
 
-	for (i = 0; i < ID_LAST; i++) {
+	for (i = 0; i < ARRAY_SIZE(hi65xx_irq_info); i++) {
 
-		irq = platform_get_irq_byname(pdev, irq_names[i]);
+		irq = platform_get_irq_byname(pdev, hi65xx_irq_info[i].name);
 		if (irq < 0) {
-			dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
-			return irq;
+			error = irq;
+			dev_err(dev, "couldn't get irq %s: %d\n",
+				hi65xx_irq_info[i].name, error);
+			return error;
 		}
 
-		ret = devm_request_any_context_irq(dev, irq,
-					irq_handlers[i], IRQF_ONESHOT,
-					irq_names[i], priv);
-		if (ret < 0) {
-			dev_err(dev, "couldn't get irq %s\n", irq_names[i]);
-			return ret;
+		error = devm_request_any_context_irq(dev, irq,
+						     hi65xx_irq_info[i].handler,
+						     IRQF_ONESHOT,
+						     hi65xx_irq_info[i].name,
+						     input);
+		if (error < 0) {
+			dev_err(dev, "couldn't request irq %s: %d\n",
+				hi65xx_irq_info[i].name, error);
+			return error;
 		}
 	}
 
-	ret = input_register_device(priv->input);
-	if (ret) {
+	error = input_register_device(input);
+	if (error) {
 		dev_err(&pdev->dev, "failed to register input device: %d\n",
-			ret);
-		return ret;
+			error);
+		return error;
 	}
 
-	platform_set_drvdata(pdev, priv);
 	device_init_wakeup(&pdev->dev, 1);
 
 	return 0;
@@ -129,6 +124,7 @@ static int hi65xx_powerkey_probe(struct platform_device *pdev)
 static int hi65xx_powerkey_remove(struct platform_device *pdev)
 {
 	device_init_wakeup(&pdev->dev, 0);
+
 	return 0;
 }
 
@@ -139,7 +135,6 @@ static struct platform_driver hi65xx_powerkey_driver = {
 	.probe = hi65xx_powerkey_probe,
 	.remove  = hi65xx_powerkey_remove,
 };
-
 module_platform_driver(hi65xx_powerkey_driver);
 
 MODULE_AUTHOR("Zhiliang Xue <xuezhiliang@huawei.com");

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-23  0:47     ` Dmitry Torokhov
@ 2016-06-23 20:31       ` John Stultz
  2016-06-23 20:40         ` Dmitry Torokhov
  0 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-23 20:31 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Wed, Jun 22, 2016 at 5:47 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Tue, Jun 21, 2016 at 05:06:23PM -0700, John Stultz wrote:
>> On Tue, Jun 14, 2016 at 3:43 PM, John Stultz <john.stultz@linaro.org> wrote:
>> > From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> >
>> > This driver provides a input driver for the power button on the
>> > HiSi 65xx SoC for boards like HiKey.
>> >
>> > This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
>> > then basically rewritten by Jorge, but preserving the original
>> > module author credits.
>> >
>> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>> > Cc: Rob Herring <robh+dt@kernel.org>
>> > Cc: Lee Jones <lee.jones@linaro.org>
>> > Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> > Cc: Feng Chen <puck.chen@hisilicon.com>
>> > Cc: Wei Xu <xuwei5@hisilicon.com>
>> > Cc: Guodong Xu <guodong.xu@linaro.org>
>> > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
>> > [jstultz: Reworked commit message, folded in other fixes/cleanups
>> > from Jorge, implemented some larger cleanups suggested by DmitryT]
>> > Signed-off-by: John Stultz <john.stultz@linaro.org>
>> > ---
>> > v2: Major rework integrating feedback from Dmitry.
>> > v3: Dropped of_match compatible line since no longer using DT
>> >     for this.
>> > v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
>> >     I missed in the last revision, which casued build issues w/
>> >     modules.
>>
>> Hey Dmitry,
>>   Just wanted to ping you to see if there was anything else you were
>> wanting changed with this patch. Lee has queued the mfd patches in
>> -next, so I wanted to be sure to address any concerns you had that was
>> keeping this from heading upstream in 4.8 (hopefully :).
>
> Right, sorry, does the following look OK to you?
>

Yes! It looks great (and I tested it works too)!

Do you want to fold that in, or do you need me to re-submit with those changes?

thanks
-john

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-23 20:31       ` John Stultz
@ 2016-06-23 20:40         ` Dmitry Torokhov
  2016-06-23 20:47           ` Dmitry Torokhov
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Torokhov @ 2016-06-23 20:40 UTC (permalink / raw)
  To: John Stultz
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Thu, Jun 23, 2016 at 01:31:28PM -0700, John Stultz wrote:
> On Wed, Jun 22, 2016 at 5:47 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Tue, Jun 21, 2016 at 05:06:23PM -0700, John Stultz wrote:
> >> On Tue, Jun 14, 2016 at 3:43 PM, John Stultz <john.stultz@linaro.org> wrote:
> >> > From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >> >
> >> > This driver provides a input driver for the power button on the
> >> > HiSi 65xx SoC for boards like HiKey.
> >> >
> >> > This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
> >> > then basically rewritten by Jorge, but preserving the original
> >> > module author credits.
> >> >
> >> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> >> > Cc: Rob Herring <robh+dt@kernel.org>
> >> > Cc: Lee Jones <lee.jones@linaro.org>
> >> > Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >> > Cc: Feng Chen <puck.chen@hisilicon.com>
> >> > Cc: Wei Xu <xuwei5@hisilicon.com>
> >> > Cc: Guodong Xu <guodong.xu@linaro.org>
> >> > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> >> > [jstultz: Reworked commit message, folded in other fixes/cleanups
> >> > from Jorge, implemented some larger cleanups suggested by DmitryT]
> >> > Signed-off-by: John Stultz <john.stultz@linaro.org>
> >> > ---
> >> > v2: Major rework integrating feedback from Dmitry.
> >> > v3: Dropped of_match compatible line since no longer using DT
> >> >     for this.
> >> > v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
> >> >     I missed in the last revision, which casued build issues w/
> >> >     modules.
> >>
> >> Hey Dmitry,
> >>   Just wanted to ping you to see if there was anything else you were
> >> wanting changed with this patch. Lee has queued the mfd patches in
> >> -next, so I wanted to be sure to address any concerns you had that was
> >> keeping this from heading upstream in 4.8 (hopefully :).
> >
> > Right, sorry, does the following look OK to you?
> >
> 
> Yes! It looks great (and I tested it works too)!
> 
> Do you want to fold that in, or do you need me to re-submit with those changes?

I'll fold it in on my side. Thank you for testing it!

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-23 20:40         ` Dmitry Torokhov
@ 2016-06-23 20:47           ` Dmitry Torokhov
  2016-06-23 20:54             ` John Stultz
  0 siblings, 1 reply; 15+ messages in thread
From: Dmitry Torokhov @ 2016-06-23 20:47 UTC (permalink / raw)
  To: John Stultz
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Thu, Jun 23, 2016 at 01:40:22PM -0700, Dmitry Torokhov wrote:
> On Thu, Jun 23, 2016 at 01:31:28PM -0700, John Stultz wrote:
> > On Wed, Jun 22, 2016 at 5:47 PM, Dmitry Torokhov
> > <dmitry.torokhov@gmail.com> wrote:
> > > On Tue, Jun 21, 2016 at 05:06:23PM -0700, John Stultz wrote:
> > >> On Tue, Jun 14, 2016 at 3:43 PM, John Stultz <john.stultz@linaro.org> wrote:
> > >> > From: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > >> >
> > >> > This driver provides a input driver for the power button on the
> > >> > HiSi 65xx SoC for boards like HiKey.
> > >> >
> > >> > This driver was originally by Zhiliang Xue <xuezhiliang@huawei.com>
> > >> > then basically rewritten by Jorge, but preserving the original
> > >> > module author credits.
> > >> >
> > >> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > >> > Cc: Rob Herring <robh+dt@kernel.org>
> > >> > Cc: Lee Jones <lee.jones@linaro.org>
> > >> > Cc: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > >> > Cc: Feng Chen <puck.chen@hisilicon.com>
> > >> > Cc: Wei Xu <xuwei5@hisilicon.com>
> > >> > Cc: Guodong Xu <guodong.xu@linaro.org>
> > >> > Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
> > >> > [jstultz: Reworked commit message, folded in other fixes/cleanups
> > >> > from Jorge, implemented some larger cleanups suggested by DmitryT]
> > >> > Signed-off-by: John Stultz <john.stultz@linaro.org>
> > >> > ---
> > >> > v2: Major rework integrating feedback from Dmitry.
> > >> > v3: Dropped of_match compatible line since no longer using DT
> > >> >     for this.
> > >> > v4: Removed MODULE_DEVICE_TABLE(of, hi65xx_powerkey_of_match) line
> > >> >     I missed in the last revision, which casued build issues w/
> > >> >     modules.
> > >>
> > >> Hey Dmitry,
> > >>   Just wanted to ping you to see if there was anything else you were
> > >> wanting changed with this patch. Lee has queued the mfd patches in
> > >> -next, so I wanted to be sure to address any concerns you had that was
> > >> keeping this from heading upstream in 4.8 (hopefully :).
> > >
> > > Right, sorry, does the following look OK to you?
> > >
> > 
> > Yes! It looks great (and I tested it works too)!
> > 
> > Do you want to fold that in, or do you need me to re-submit with those changes?
> 
> I'll fold it in on my side. Thank you for testing it!

Changed the config symbol to INPUT_HISI_POWERKEY to match other symbols
in drivers/input/misc and queued for the next merge window.

Thanks.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-23 20:47           ` Dmitry Torokhov
@ 2016-06-23 20:54             ` John Stultz
  2016-06-23 21:03               ` Dmitry Torokhov
  0 siblings, 1 reply; 15+ messages in thread
From: John Stultz @ 2016-06-23 20:54 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Thu, Jun 23, 2016 at 1:47 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Jun 23, 2016 at 01:40:22PM -0700, Dmitry Torokhov wrote:
>> On Thu, Jun 23, 2016 at 01:31:28PM -0700, John Stultz wrote:
>> > On Wed, Jun 22, 2016 at 5:47 PM, Dmitry Torokhov
>> > <dmitry.torokhov@gmail.com> wrote:
>> > >
>> > > Right, sorry, does the following look OK to you?
>> > >
>> >
>> > Yes! It looks great (and I tested it works too)!
>> >
>> > Do you want to fold that in, or do you need me to re-submit with those changes?
>>
>> I'll fold it in on my side. Thank you for testing it!
>
> Changed the config symbol to INPUT_HISI_POWERKEY to match other symbols
> in drivers/input/misc and queued for the next merge window.

Thanks, I really appreciate it, and apologies for missing so many
things you had to fix up!
-john

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC
  2016-06-23 20:54             ` John Stultz
@ 2016-06-23 21:03               ` Dmitry Torokhov
  0 siblings, 0 replies; 15+ messages in thread
From: Dmitry Torokhov @ 2016-06-23 21:03 UTC (permalink / raw)
  To: John Stultz
  Cc: Jorge Ramirez-Ortiz, lkml, Rob Herring, Lee Jones, Feng Chen,
	Wei Xu, Guodong Xu

On Thu, Jun 23, 2016 at 01:54:20PM -0700, John Stultz wrote:
> On Thu, Jun 23, 2016 at 1:47 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Thu, Jun 23, 2016 at 01:40:22PM -0700, Dmitry Torokhov wrote:
> >> On Thu, Jun 23, 2016 at 01:31:28PM -0700, John Stultz wrote:
> >> > On Wed, Jun 22, 2016 at 5:47 PM, Dmitry Torokhov
> >> > <dmitry.torokhov@gmail.com> wrote:
> >> > >
> >> > > Right, sorry, does the following look OK to you?
> >> > >
> >> >
> >> > Yes! It looks great (and I tested it works too)!
> >> >
> >> > Do you want to fold that in, or do you need me to re-submit with those changes?
> >>
> >> I'll fold it in on my side. Thank you for testing it!
> >
> > Changed the config symbol to INPUT_HISI_POWERKEY to match other symbols
> > in drivers/input/misc and queued for the next merge window.
> 
> Thanks, I really appreciate it, and apologies for missing so many
> things you had to fix up!

It wasn't a big deal, it's mostly my OCD at play here ;)

-- 
Dmitry

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2016-06-23 21:03 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-14 22:43 [PATCH 0/4] Hi655x powerkey support for HiKey (v4) John Stultz
2016-06-14 22:43 ` [PATCH 1/4] drivers: input: powerkey for HISI 65xx SoC John Stultz
2016-06-22  0:06   ` John Stultz
2016-06-23  0:47     ` Dmitry Torokhov
2016-06-23 20:31       ` John Stultz
2016-06-23 20:40         ` Dmitry Torokhov
2016-06-23 20:47           ` Dmitry Torokhov
2016-06-23 20:54             ` John Stultz
2016-06-23 21:03               ` Dmitry Torokhov
2016-06-14 22:43 ` [PATCH 2/4] mfd: hi655x-pmic: Fixup issue with un-acked interrupts John Stultz
2016-06-15 12:54   ` Lee Jones
2016-06-14 22:43 ` [PATCH 3/4] mfd: hi655x-pmic: Rename some interrupt macro names John Stultz
2016-06-15 12:54   ` Lee Jones
2016-06-14 22:43 ` [PATCH 4/4] mfd: hi655x-pmic: Add powerkey device to hi655x PMIC driver John Stultz
2016-06-15 12:54   ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).