Linux-Watchdog Archive on lore.kernel.org
 help / Atom feed
* [PATCH v7 1/7] dt-bindings: mfd: document stpmic1
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 3/7] dt-bindings: input: document stpmic1 pmic onkey Pascal PAILLET-LME
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

STPMIC1 is a PMIC from STMicroelectronics. The STPMIC1 integrates 10
regulators, 3 power switches, a watchdog and an input for a power on key.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
changes in v7: nothing

 .../devicetree/bindings/mfd/st,stpmic1.txt         | 61 ++++++++++++++++++++++
 include/dt-bindings/mfd/st,stpmic1.h               | 50 ++++++++++++++++++
 2 files changed, 111 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mfd/st,stpmic1.txt
 create mode 100644 include/dt-bindings/mfd/st,stpmic1.h

diff --git a/Documentation/devicetree/bindings/mfd/st,stpmic1.txt b/Documentation/devicetree/bindings/mfd/st,stpmic1.txt
new file mode 100644
index 0000000..afd45c0
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/st,stpmic1.txt
@@ -0,0 +1,61 @@
+* STMicroelectronics STPMIC1 Power Management IC
+
+Required properties:
+- compatible:		: "st,stpmic1"
+- reg:			: The I2C slave address for the STPMIC1 chip.
+- interrupts:		: The interrupt line the device is connected to.
+- #interrupt-cells:	: Should be 1.
+- interrupt-controller:	: Marks the device node as an interrupt controller.
+			    Interrupt numbers are defined at
+			    dt-bindings/mfd/st,stpmic1.h.
+
+STPMIC1 consists in a varied group of sub-devices.
+Each sub-device binding is be described in own documentation file.
+
+Device			 Description
+------			------------
+st,stpmic1-onkey	: Power on key, see ../input/st,stpmic1-onkey.txt
+st,stpmic1-regulators	: Regulators, see ../regulator/st,stpmic1-regulator.txt
+st,stpmic1-wdt		: Watchdog, see ../watchdog/st,stpmic1-wdt.txt
+
+Example:
+
+#include <dt-bindings/mfd/st,stpmic1.h>
+
+pmic: pmic@33 {
+	compatible = "st,stpmic1";
+	reg = <0x33>;
+	interrupt-parent = <&gpioa>;
+	interrupts = <0 2>;
+
+	interrupt-controller;
+	#interrupt-cells = <2>;
+
+	onkey {
+		compatible = "st,stpmic1-onkey";
+		interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>;
+		interrupt-names = "onkey-falling", "onkey-rising";
+		power-off-time-sec = <10>;
+	};
+
+	watchdog {
+		compatible = "st,stpmic1-wdt";
+	};
+
+	regulators {
+		compatible = "st,stpmic1-regulators";
+
+		vdd_core: buck1 {
+			regulator-name = "vdd_core";
+			regulator-boot-on;
+			regulator-min-microvolt = <700000>;
+			regulator-max-microvolt = <1200000>;
+		};
+		vdd: buck3 {
+			regulator-name = "vdd";
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+			regulator-boot-on;
+			regulator-pull-down;
+		};
+	};
diff --git a/include/dt-bindings/mfd/st,stpmic1.h b/include/dt-bindings/mfd/st,stpmic1.h
new file mode 100644
index 0000000..321cd087
--- /dev/null
+++ b/include/dt-bindings/mfd/st,stpmic1.h
@@ -0,0 +1,50 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) STMicroelectronics 2018 - All Rights Reserved
+ * Author: Philippe Peurichard <philippe.peurichard@st.com>,
+ * Pascal Paillet <p.paillet@st.com> for STMicroelectronics.
+ */
+
+#ifndef __DT_BINDINGS_STPMIC1_H__
+#define __DT_BINDINGS_STPMIC1_H__
+
+/* IRQ definitions */
+#define IT_PONKEY_F	0
+#define IT_PONKEY_R	1
+#define IT_WAKEUP_F	2
+#define IT_WAKEUP_R	3
+#define IT_VBUS_OTG_F	4
+#define IT_VBUS_OTG_R	5
+#define IT_SWOUT_F	6
+#define IT_SWOUT_R	7
+
+#define IT_CURLIM_BUCK1	8
+#define IT_CURLIM_BUCK2	9
+#define IT_CURLIM_BUCK3	10
+#define IT_CURLIM_BUCK4	11
+#define IT_OCP_OTG	12
+#define IT_OCP_SWOUT	13
+#define IT_OCP_BOOST	14
+#define IT_OVP_BOOST	15
+
+#define IT_CURLIM_LDO1	16
+#define IT_CURLIM_LDO2	17
+#define IT_CURLIM_LDO3	18
+#define IT_CURLIM_LDO4	19
+#define IT_CURLIM_LDO5	20
+#define IT_CURLIM_LDO6	21
+#define IT_SHORT_SWOTG	22
+#define IT_SHORT_SWOUT	23
+
+#define IT_TWARN_F	24
+#define IT_TWARN_R	25
+#define IT_VINLOW_F	26
+#define IT_VINLOW_R	27
+#define IT_SWIN_F	30
+#define IT_SWIN_R	31
+
+/* BUCK MODES definitions */
+#define STPMIC1_BUCK_MODE_NORMAL 0
+#define STPMIC1_BUCK_MODE_LP 2
+
+#endif /* __DT_BINDINGS_STPMIC1_H__ */
-- 
1.9.1

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

* [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
@ 2018-11-30  9:55 Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 1/7] dt-bindings: mfd: document stpmic1 Pascal PAILLET-LME
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from 
STMicroelectronics. 
The STPMIC1 regulators supply power to an application processor as well as 
to external system peripherals such as DDR, Flash memories and system
devices. It also features onkey button input and an hardware watchdog.
The STPMIC1 is controlled via I2C. 

Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
as parent.

STPMIC1 MFD and regulator drivers maybe mandatory at boot time.

Pascal Paillet (7):
changes in v7:
* rebase on regul/for-next

  dt-bindings: mfd: document stpmic1
  mfd: stpmic1: add stpmic1 driver
  dt-bindings: input: document stpmic1 pmic onkey
  input: stpmic1: add stpmic1 onkey driver
  dt-bindings: watchdog: document stpmic1 pmic watchdog
  watchdog: stpmic1: add stpmic1 watchdog driver
  regulator: stpmic1: fix regulator_lock usage

 .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
 .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
 .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
 drivers/input/misc/Kconfig                         |  11 ++
 drivers/input/misc/Makefile                        |   2 +
 drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
 drivers/mfd/Kconfig                                |  16 ++
 drivers/mfd/Makefile                               |   1 +
 drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++
 drivers/regulator/stpmic1_regulator.c              |   2 +-
 drivers/watchdog/Kconfig                           |  12 ++
 drivers/watchdog/Makefile                          |   1 +
 drivers/watchdog/stpmic1_wdt.c                     | 139 ++++++++++++++
 include/dt-bindings/mfd/st,stpmic1.h               |  50 +++++
 include/linux/mfd/stpmic1.h                        | 212 ++++++++++++++++++++
 15 files changed, 956 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
 create mode 100644 Documentation/devicetree/bindings/mfd/st,stpmic1.txt
 create mode 100644 Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
 create mode 100644 drivers/input/misc/stpmic1_onkey.c
 create mode 100644 drivers/mfd/stpmic1.c
 create mode 100644 drivers/watchdog/stpmic1_wdt.c
 create mode 100644 include/dt-bindings/mfd/st,stpmic1.h
 create mode 100644 include/linux/mfd/stpmic1.h

-- 
1.9.1

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

* [PATCH v7 2/7] mfd: stpmic1: add stpmic1 driver
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 1/7] dt-bindings: mfd: document stpmic1 Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 3/7] dt-bindings: input: document stpmic1 pmic onkey Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 5/7] dt-bindings: watchdog: document stpmic1 pmic watchdog Pascal PAILLET-LME
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

STPMIC1 is a PMIC from STMicroelectronics. The STPMIC1 integrates 10
regulators, 3 power switches, a watchdog and an input for a power on key.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
changes in v7: nothing

 drivers/mfd/Kconfig         |  16 ++++
 drivers/mfd/Makefile        |   1 +
 drivers/mfd/stpmic1.c       | 213 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/stpmic1.h | 212 +++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 442 insertions(+)
 create mode 100644 drivers/mfd/stpmic1.c
 create mode 100644 include/linux/mfd/stpmic1.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 8c5dfdc..0761cb8 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1871,6 +1871,22 @@ config MFD_STM32_TIMERS
 	  for PWM and IIO Timer. This driver allow to share the
 	  registers between the others drivers.
 
+config MFD_STPMIC1
+	tristate "Support for STPMIC1 PMIC"
+	depends on (I2C=y && OF)
+	select REGMAP_I2C
+	select REGMAP_IRQ
+	select MFD_CORE
+	help
+	  Support for ST Microelectronics STPMIC1 PMIC. STPMIC1 has power on
+	  key, watchdog and regulator functionalities which are supported via
+	  the relevant subsystems. This driver provides core support for the
+	  STPMIC1. In order to use the actual functionaltiy of the device other
+	  drivers must be enabled.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called stpmic1.
+
 menu "Multimedia Capabilities Port drivers"
 	depends on ARCH_SA1100
 
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 12980a4..a62fb01 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -233,6 +233,7 @@ obj-$(CONFIG_INTEL_SOC_PMIC_CHTDC_TI)	+= intel_soc_pmic_chtdc_ti.o
 obj-$(CONFIG_MFD_MT6397)	+= mt6397-core.o
 
 obj-$(CONFIG_MFD_ALTERA_A10SR)	+= altera-a10sr.o
+obj-$(CONFIG_MFD_STPMIC1)	+= stpmic1.o
 obj-$(CONFIG_MFD_SUN4I_GPADC)	+= sun4i-gpadc.o
 
 obj-$(CONFIG_MFD_STM32_LPTIMER)	+= stm32-lptimer.o
diff --git a/drivers/mfd/stpmic1.c b/drivers/mfd/stpmic1.c
new file mode 100644
index 0000000..7dfbe89
--- /dev/null
+++ b/drivers/mfd/stpmic1.c
@@ -0,0 +1,213 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) STMicroelectronics 2018
+// Author: Pascal Paillet <p.paillet@st.com>
+
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#include <linux/mfd/core.h>
+#include <linux/mfd/stpmic1.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_irq.h>
+#include <linux/of_platform.h>
+#include <linux/pm_wakeirq.h>
+#include <linux/regmap.h>
+
+#include <dt-bindings/mfd/st,stpmic1.h>
+
+#define STPMIC1_MAIN_IRQ 0
+
+static const struct regmap_range stpmic1_readable_ranges[] = {
+	regmap_reg_range(TURN_ON_SR, VERSION_SR),
+	regmap_reg_range(SWOFF_PWRCTRL_CR, LDO6_STDBY_CR),
+	regmap_reg_range(BST_SW_CR, BST_SW_CR),
+	regmap_reg_range(INT_PENDING_R1, INT_PENDING_R4),
+	regmap_reg_range(INT_CLEAR_R1, INT_CLEAR_R4),
+	regmap_reg_range(INT_MASK_R1, INT_MASK_R4),
+	regmap_reg_range(INT_SET_MASK_R1, INT_SET_MASK_R4),
+	regmap_reg_range(INT_CLEAR_MASK_R1, INT_CLEAR_MASK_R4),
+	regmap_reg_range(INT_SRC_R1, INT_SRC_R1),
+};
+
+static const struct regmap_range stpmic1_writeable_ranges[] = {
+	regmap_reg_range(SWOFF_PWRCTRL_CR, LDO6_STDBY_CR),
+	regmap_reg_range(BST_SW_CR, BST_SW_CR),
+	regmap_reg_range(INT_CLEAR_R1, INT_CLEAR_R4),
+	regmap_reg_range(INT_SET_MASK_R1, INT_SET_MASK_R4),
+	regmap_reg_range(INT_CLEAR_MASK_R1, INT_CLEAR_MASK_R4),
+};
+
+static const struct regmap_range stpmic1_volatile_ranges[] = {
+	regmap_reg_range(TURN_ON_SR, VERSION_SR),
+	regmap_reg_range(WCHDG_CR, WCHDG_CR),
+	regmap_reg_range(INT_PENDING_R1, INT_PENDING_R4),
+	regmap_reg_range(INT_SRC_R1, INT_SRC_R4),
+};
+
+static const struct regmap_access_table stpmic1_readable_table = {
+	.yes_ranges = stpmic1_readable_ranges,
+	.n_yes_ranges = ARRAY_SIZE(stpmic1_readable_ranges),
+};
+
+static const struct regmap_access_table stpmic1_writeable_table = {
+	.yes_ranges = stpmic1_writeable_ranges,
+	.n_yes_ranges = ARRAY_SIZE(stpmic1_writeable_ranges),
+};
+
+static const struct regmap_access_table stpmic1_volatile_table = {
+	.yes_ranges = stpmic1_volatile_ranges,
+	.n_yes_ranges = ARRAY_SIZE(stpmic1_volatile_ranges),
+};
+
+const struct regmap_config stpmic1_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	.cache_type = REGCACHE_RBTREE,
+	.max_register = PMIC_MAX_REGISTER_ADDRESS,
+	.rd_table = &stpmic1_readable_table,
+	.wr_table = &stpmic1_writeable_table,
+	.volatile_table = &stpmic1_volatile_table,
+};
+
+static const struct regmap_irq stpmic1_irqs[] = {
+	REGMAP_IRQ_REG(IT_PONKEY_F, 0, 0x01),
+	REGMAP_IRQ_REG(IT_PONKEY_R, 0, 0x02),
+	REGMAP_IRQ_REG(IT_WAKEUP_F, 0, 0x04),
+	REGMAP_IRQ_REG(IT_WAKEUP_R, 0, 0x08),
+	REGMAP_IRQ_REG(IT_VBUS_OTG_F, 0, 0x10),
+	REGMAP_IRQ_REG(IT_VBUS_OTG_R, 0, 0x20),
+	REGMAP_IRQ_REG(IT_SWOUT_F, 0, 0x40),
+	REGMAP_IRQ_REG(IT_SWOUT_R, 0, 0x80),
+
+	REGMAP_IRQ_REG(IT_CURLIM_BUCK1, 1, 0x01),
+	REGMAP_IRQ_REG(IT_CURLIM_BUCK2, 1, 0x02),
+	REGMAP_IRQ_REG(IT_CURLIM_BUCK3, 1, 0x04),
+	REGMAP_IRQ_REG(IT_CURLIM_BUCK4, 1, 0x08),
+	REGMAP_IRQ_REG(IT_OCP_OTG, 1, 0x10),
+	REGMAP_IRQ_REG(IT_OCP_SWOUT, 1, 0x20),
+	REGMAP_IRQ_REG(IT_OCP_BOOST, 1, 0x40),
+	REGMAP_IRQ_REG(IT_OVP_BOOST, 1, 0x80),
+
+	REGMAP_IRQ_REG(IT_CURLIM_LDO1, 2, 0x01),
+	REGMAP_IRQ_REG(IT_CURLIM_LDO2, 2, 0x02),
+	REGMAP_IRQ_REG(IT_CURLIM_LDO3, 2, 0x04),
+	REGMAP_IRQ_REG(IT_CURLIM_LDO4, 2, 0x08),
+	REGMAP_IRQ_REG(IT_CURLIM_LDO5, 2, 0x10),
+	REGMAP_IRQ_REG(IT_CURLIM_LDO6, 2, 0x20),
+	REGMAP_IRQ_REG(IT_SHORT_SWOTG, 2, 0x40),
+	REGMAP_IRQ_REG(IT_SHORT_SWOUT, 2, 0x80),
+
+	REGMAP_IRQ_REG(IT_TWARN_F, 3, 0x01),
+	REGMAP_IRQ_REG(IT_TWARN_R, 3, 0x02),
+	REGMAP_IRQ_REG(IT_VINLOW_F, 3, 0x04),
+	REGMAP_IRQ_REG(IT_VINLOW_R, 3, 0x08),
+	REGMAP_IRQ_REG(IT_SWIN_F, 3, 0x40),
+	REGMAP_IRQ_REG(IT_SWIN_R, 3, 0x80),
+};
+
+static const struct regmap_irq_chip stpmic1_regmap_irq_chip = {
+	.name = "pmic_irq",
+	.status_base = INT_PENDING_R1,
+	.mask_base = INT_CLEAR_MASK_R1,
+	.unmask_base = INT_SET_MASK_R1,
+	.ack_base = INT_CLEAR_R1,
+	.num_regs = STPMIC1_PMIC_NUM_IRQ_REGS,
+	.irqs = stpmic1_irqs,
+	.num_irqs = ARRAY_SIZE(stpmic1_irqs),
+};
+
+static int stpmic1_probe(struct i2c_client *i2c,
+			 const struct i2c_device_id *id)
+{
+	struct stpmic1 *ddata;
+	struct device *dev = &i2c->dev;
+	int ret;
+	struct device_node *np = dev->of_node;
+	u32 reg;
+
+	ddata = devm_kzalloc(dev, sizeof(struct stpmic1), GFP_KERNEL);
+	if (!ddata)
+		return -ENOMEM;
+
+	i2c_set_clientdata(i2c, ddata);
+	ddata->dev = dev;
+
+	ddata->regmap = devm_regmap_init_i2c(i2c, &stpmic1_regmap_config);
+	if (IS_ERR(ddata->regmap))
+		return PTR_ERR(ddata->regmap);
+
+	ddata->irq = of_irq_get(np, STPMIC1_MAIN_IRQ);
+	if (ddata->irq < 0) {
+		dev_err(dev, "Failed to get main IRQ: %d\n", ddata->irq);
+		return ddata->irq;
+	}
+
+	ret = regmap_read(ddata->regmap, VERSION_SR, &reg);
+	if (ret) {
+		dev_err(dev, "Unable to read PMIC version\n");
+		return ret;
+	}
+	dev_info(dev, "PMIC Chip Version: 0x%x\n", reg);
+
+	/* Initialize PMIC IRQ Chip & associated IRQ domains */
+	ret = devm_regmap_add_irq_chip(dev, ddata->regmap, ddata->irq,
+				       IRQF_ONESHOT | IRQF_SHARED,
+				       0, &stpmic1_regmap_irq_chip,
+				       &ddata->irq_data);
+	if (ret) {
+		dev_err(dev, "IRQ Chip registration failed: %d\n", ret);
+		return ret;
+	}
+
+	return devm_of_platform_populate(dev);
+}
+
+#ifdef CONFIG_PM_SLEEP
+static int stpmic1_suspend(struct device *dev)
+{
+	struct i2c_client *i2c = to_i2c_client(dev);
+	struct stpmic1 *pmic_dev = i2c_get_clientdata(i2c);
+
+	disable_irq(pmic_dev->irq);
+
+	return 0;
+}
+
+static int stpmic1_resume(struct device *dev)
+{
+	struct i2c_client *i2c = to_i2c_client(dev);
+	struct stpmic1 *pmic_dev = i2c_get_clientdata(i2c);
+	int ret;
+
+	ret = regcache_sync(pmic_dev->regmap);
+	if (ret)
+		return ret;
+
+	enable_irq(pmic_dev->irq);
+
+	return 0;
+}
+#endif
+
+static SIMPLE_DEV_PM_OPS(stpmic1_pm, stpmic1_suspend, stpmic1_resume);
+
+static const struct of_device_id stpmic1_of_match[] = {
+	{ .compatible = "st,stpmic1", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, stpmic1_of_match);
+
+static struct i2c_driver stpmic1_driver = {
+	.driver = {
+		.name = "stpmic1",
+		.of_match_table = of_match_ptr(stpmic1_of_match),
+		.pm = &stpmic1_pm,
+	},
+	.probe = stpmic1_probe,
+};
+
+module_i2c_driver(stpmic1_driver);
+
+MODULE_DESCRIPTION("STPMIC1 PMIC Driver");
+MODULE_AUTHOR("Pascal Paillet <p.paillet@st.com>");
+MODULE_LICENSE("GPL v2");
diff --git a/include/linux/mfd/stpmic1.h b/include/linux/mfd/stpmic1.h
new file mode 100644
index 0000000..fa3f99f
--- /dev/null
+++ b/include/linux/mfd/stpmic1.h
@@ -0,0 +1,212 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) STMicroelectronics 2018 - All Rights Reserved
+ * Author: Philippe Peurichard <philippe.peurichard@st.com>,
+ * Pascal Paillet <p.paillet@st.com> for STMicroelectronics.
+ */
+
+#ifndef __LINUX_MFD_STPMIC1_H
+#define __LINUX_MFD_STPMIC1_H
+
+#define TURN_ON_SR		0x1
+#define TURN_OFF_SR		0x2
+#define ICC_LDO_TURN_OFF_SR	0x3
+#define ICC_BUCK_TURN_OFF_SR	0x4
+#define RREQ_STATE_SR		0x5
+#define VERSION_SR		0x6
+
+#define SWOFF_PWRCTRL_CR	0x10
+#define PADS_PULL_CR		0x11
+#define BUCKS_PD_CR		0x12
+#define LDO14_PD_CR		0x13
+#define LDO56_VREF_PD_CR	0x14
+#define VBUS_DET_VIN_CR		0x15
+#define PKEY_TURNOFF_CR		0x16
+#define BUCKS_MASK_RANK_CR	0x17
+#define BUCKS_MASK_RESET_CR	0x18
+#define LDOS_MASK_RANK_CR	0x19
+#define LDOS_MASK_RESET_CR	0x1A
+#define WCHDG_CR		0x1B
+#define WCHDG_TIMER_CR		0x1C
+#define BUCKS_ICCTO_CR		0x1D
+#define LDOS_ICCTO_CR		0x1E
+
+#define BUCK1_ACTIVE_CR		0x20
+#define BUCK2_ACTIVE_CR		0x21
+#define BUCK3_ACTIVE_CR		0x22
+#define BUCK4_ACTIVE_CR		0x23
+#define VREF_DDR_ACTIVE_CR	0x24
+#define LDO1_ACTIVE_CR		0x25
+#define LDO2_ACTIVE_CR		0x26
+#define LDO3_ACTIVE_CR		0x27
+#define LDO4_ACTIVE_CR		0x28
+#define LDO5_ACTIVE_CR		0x29
+#define LDO6_ACTIVE_CR		0x2A
+
+#define BUCK1_STDBY_CR		0x30
+#define BUCK2_STDBY_CR		0x31
+#define BUCK3_STDBY_CR		0x32
+#define BUCK4_STDBY_CR		0x33
+#define VREF_DDR_STDBY_CR	0x34
+#define LDO1_STDBY_CR		0x35
+#define LDO2_STDBY_CR		0x36
+#define LDO3_STDBY_CR		0x37
+#define LDO4_STDBY_CR		0x38
+#define LDO5_STDBY_CR		0x39
+#define LDO6_STDBY_CR		0x3A
+
+#define BST_SW_CR		0x40
+
+#define INT_PENDING_R1		0x50
+#define INT_PENDING_R2		0x51
+#define INT_PENDING_R3		0x52
+#define INT_PENDING_R4		0x53
+
+#define INT_DBG_LATCH_R1	0x60
+#define INT_DBG_LATCH_R2	0x61
+#define INT_DBG_LATCH_R3	0x62
+#define INT_DBG_LATCH_R4	0x63
+
+#define INT_CLEAR_R1		0x70
+#define INT_CLEAR_R2		0x71
+#define INT_CLEAR_R3		0x72
+#define INT_CLEAR_R4		0x73
+
+#define INT_MASK_R1		0x80
+#define INT_MASK_R2		0x81
+#define INT_MASK_R3		0x82
+#define INT_MASK_R4		0x83
+
+#define INT_SET_MASK_R1		0x90
+#define INT_SET_MASK_R2		0x91
+#define INT_SET_MASK_R3		0x92
+#define INT_SET_MASK_R4		0x93
+
+#define INT_CLEAR_MASK_R1	0xA0
+#define INT_CLEAR_MASK_R2	0xA1
+#define INT_CLEAR_MASK_R3	0xA2
+#define INT_CLEAR_MASK_R4	0xA3
+
+#define INT_SRC_R1		0xB0
+#define INT_SRC_R2		0xB1
+#define INT_SRC_R3		0xB2
+#define INT_SRC_R4		0xB3
+
+#define PMIC_MAX_REGISTER_ADDRESS INT_SRC_R4
+
+#define STPMIC1_PMIC_NUM_IRQ_REGS 4
+
+#define TURN_OFF_SR_ICC_EVENT	0x08
+
+#define LDO_VOLTAGE_MASK		GENMASK(6, 2)
+#define BUCK_VOLTAGE_MASK		GENMASK(7, 2)
+#define LDO_BUCK_VOLTAGE_SHIFT		2
+
+#define LDO_ENABLE_MASK			BIT(0)
+#define BUCK_ENABLE_MASK		BIT(0)
+
+#define BUCK_HPLP_ENABLE_MASK		BIT(1)
+#define BUCK_HPLP_SHIFT			1
+
+#define STDBY_ENABLE_MASK  BIT(0)
+
+#define BUCKS_PD_CR_REG_MASK	GENMASK(7, 0)
+#define BUCK_MASK_RANK_REGISTER_MASK	GENMASK(3, 0)
+#define BUCK_MASK_RESET_REGISTER_MASK	GENMASK(3, 0)
+#define LDO1234_PULL_DOWN_REGISTER_MASK	GENMASK(7, 0)
+#define LDO56_VREF_PD_CR_REG_MASK	GENMASK(5, 0)
+#define LDO_MASK_RANK_REGISTER_MASK	GENMASK(5, 0)
+#define LDO_MASK_RESET_REGISTER_MASK	GENMASK(5, 0)
+
+#define BUCK1_PULL_DOWN_REG		BUCKS_PD_CR
+#define BUCK1_PULL_DOWN_MASK		BIT(0)
+#define BUCK2_PULL_DOWN_REG		BUCKS_PD_CR
+#define BUCK2_PULL_DOWN_MASK		BIT(2)
+#define BUCK3_PULL_DOWN_REG		BUCKS_PD_CR
+#define BUCK3_PULL_DOWN_MASK		BIT(4)
+#define BUCK4_PULL_DOWN_REG		BUCKS_PD_CR
+#define BUCK4_PULL_DOWN_MASK		BIT(6)
+
+#define LDO1_PULL_DOWN_REG		LDO14_PD_CR
+#define LDO1_PULL_DOWN_MASK		BIT(0)
+#define LDO2_PULL_DOWN_REG		LDO14_PD_CR
+#define LDO2_PULL_DOWN_MASK		BIT(2)
+#define LDO3_PULL_DOWN_REG		LDO14_PD_CR
+#define LDO3_PULL_DOWN_MASK		BIT(4)
+#define LDO4_PULL_DOWN_REG		LDO14_PD_CR
+#define LDO4_PULL_DOWN_MASK		BIT(6)
+#define LDO5_PULL_DOWN_REG		LDO56_VREF_PD_CR
+#define LDO5_PULL_DOWN_MASK		BIT(0)
+#define LDO6_PULL_DOWN_REG		LDO56_VREF_PD_CR
+#define LDO6_PULL_DOWN_MASK		BIT(2)
+#define VREF_DDR_PULL_DOWN_REG		LDO56_VREF_PD_CR
+#define VREF_DDR_PULL_DOWN_MASK		BIT(4)
+
+#define BUCKS_ICCTO_CR_REG_MASK	GENMASK(6, 0)
+#define LDOS_ICCTO_CR_REG_MASK	GENMASK(5, 0)
+
+#define LDO_BYPASS_MASK			BIT(7)
+
+/* Main PMIC Control Register
+ * SWOFF_PWRCTRL_CR
+ * Address : 0x10
+ */
+#define ICC_EVENT_ENABLED		BIT(4)
+#define PWRCTRL_POLARITY_HIGH		BIT(3)
+#define PWRCTRL_PIN_VALID		BIT(2)
+#define RESTART_REQUEST_ENABLED		BIT(1)
+#define SOFTWARE_SWITCH_OFF_ENABLED	BIT(0)
+
+/* Main PMIC PADS Control Register
+ * PADS_PULL_CR
+ * Address : 0x11
+ */
+#define WAKEUP_DETECTOR_DISABLED	BIT(4)
+#define PWRCTRL_PD_ACTIVE		BIT(3)
+#define PWRCTRL_PU_ACTIVE		BIT(2)
+#define WAKEUP_PD_ACTIVE		BIT(1)
+#define PONKEY_PU_INACTIVE		BIT(0)
+
+/* Main PMIC VINLOW Control Register
+ * VBUS_DET_VIN_CRC DMSC
+ * Address : 0x15
+ */
+#define SWIN_DETECTOR_ENABLED		BIT(7)
+#define SWOUT_DETECTOR_ENABLED		BIT(6)
+#define VINLOW_ENABLED			BIT(0)
+#define VINLOW_CTRL_REG_MASK		GENMASK(7, 0)
+
+/* USB Control Register
+ * Address : 0x40
+ */
+#define BOOST_OVP_DISABLED		BIT(7)
+#define VBUS_OTG_DETECTION_DISABLED	BIT(6)
+#define SW_OUT_DISCHARGE		BIT(5)
+#define VBUS_OTG_DISCHARGE		BIT(4)
+#define OCP_LIMIT_HIGH			BIT(3)
+#define SWIN_SWOUT_ENABLED		BIT(2)
+#define USBSW_OTG_SWITCH_ENABLED	BIT(1)
+#define BOOST_ENABLED			BIT(0)
+
+/* PKEY_TURNOFF_CR
+ * Address : 0x16
+ */
+#define PONKEY_PWR_OFF			BIT(7)
+#define PONKEY_CC_FLAG_CLEAR		BIT(6)
+#define PONKEY_TURNOFF_TIMER_MASK	GENMASK(3, 0)
+#define PONKEY_TURNOFF_MASK		GENMASK(7, 0)
+
+/*
+ * struct stpmic1 - stpmic1 master device for sub-drivers
+ * @dev: master device of the chip (can be used to access platform data)
+ * @irq: main IRQ number
+ * @regmap_irq_chip_data: irq chip data
+ */
+struct stpmic1 {
+	struct device *dev;
+	struct regmap *regmap;
+	int irq;
+	struct regmap_irq_chip_data *irq_data;
+};
+
+#endif /*  __LINUX_MFD_STPMIC1_H */
-- 
1.9.1

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

* [PATCH v7 3/7] dt-bindings: input: document stpmic1 pmic onkey
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 1/7] dt-bindings: mfd: document stpmic1 Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 2/7] mfd: stpmic1: add stpmic1 driver Pascal PAILLET-LME
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

The stpmic1 pmic is able to manage an onkey button. It can be configured
to shut-down the power supplies on a long key-press with an adjustable
duration.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
changes in v7: nothing

 .../devicetree/bindings/input/st,stpmic1-onkey.txt | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt

diff --git a/Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt b/Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
new file mode 100644
index 0000000..4494613
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
@@ -0,0 +1,28 @@
+STMicroelectronics STPMIC1 Onkey
+
+Required properties:
+
+- compatible = "st,stpmic1-onkey";
+- interrupts: interrupt line to use
+- interrupt-names = "onkey-falling", "onkey-rising"
+	onkey-falling: happens when onkey is pressed; IT_PONKEY_F of pmic
+	onkey-rising: happens when onkey is released; IT_PONKEY_R of pmic
+
+Optional properties:
+
+- st,onkey-clear-cc-flag: onkey is able power on after an
+  over-current shutdown event.
+- st,onkey-pu-inactive: onkey pull up is not active
+- power-off-time-sec: Duration in seconds which the key should be kept
+        pressed for device to power off automatically (from 1 to 16 seconds).
+        see See Documentation/devicetree/bindings/input/keys.txt
+
+Example:
+
+onkey {
+	compatible = "st,stpmic1-onkey";
+	interrupt-parent = <&pmic>;
+	interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>;
+	interrupt-names = "onkey-falling", "onkey-rising";
+	power-off-time-sec = <10>;
+};
-- 
1.9.1

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

* [PATCH v7 5/7] dt-bindings: watchdog: document stpmic1 pmic watchdog
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (2 preceding siblings ...)
  2018-11-30  9:55 ` [PATCH v7 2/7] mfd: stpmic1: add stpmic1 driver Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 4/7] input: stpmic1: add stpmic1 onkey driver Pascal PAILLET-LME
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

The stpmic1 PMIC embeds a watchdog which is disabled by default.
In case of watchdog, the PMIC goes off.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
---
changes in v7: nothing

 Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt

diff --git a/Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt b/Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
new file mode 100644
index 0000000..7cc1407
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
@@ -0,0 +1,11 @@
+STMicroelectronics STPMIC1 Watchdog
+
+Required properties:
+
+- compatible : should be "st,stpmic1-wdt"
+
+Example:
+
+watchdog {
+	compatible = "st,stpmic1-wdt";
+};
-- 
1.9.1

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

* [PATCH v7 4/7] input: stpmic1: add stpmic1 onkey driver
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (3 preceding siblings ...)
  2018-11-30  9:55 ` [PATCH v7 5/7] dt-bindings: watchdog: document stpmic1 pmic watchdog Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 6/7] watchdog: stpmic1: add stpmic1 watchdog driver Pascal PAILLET-LME
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

The stpmic1 pmic is able to manage an onkey button. This driver exposes
the stpmic1 onkey as an input device. It can also be configured to
shut-down the power supplies on a long key-press with an adjustable
duration.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
changes in v7: nothing

 drivers/input/misc/Kconfig         |  11 +++
 drivers/input/misc/Makefile        |   2 +
 drivers/input/misc/stpmic1_onkey.c | 198 +++++++++++++++++++++++++++++++++++++
 3 files changed, 211 insertions(+)
 create mode 100644 drivers/input/misc/stpmic1_onkey.c

diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index ca59a2b..279fb02 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -851,4 +851,15 @@ config INPUT_SC27XX_VIBRA
 	  To compile this driver as a module, choose M here. The module will
 	  be called sc27xx_vibra.
 
+config INPUT_STPMIC1_ONKEY
+	tristate "STPMIC1 PMIC Onkey support"
+	depends on MFD_STPMIC1
+	help
+	  Say Y to enable support of onkey embedded into STPMIC1 PMIC. onkey
+	  can be used to wakeup from low power modes and force a shut-down on
+	  long press.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called stpmic1_onkey.
+
 endif
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 9d0f9d1..1b44202 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -71,6 +71,7 @@ obj-$(CONFIG_INPUT_SGI_BTNS)		+= sgi_btns.o
 obj-$(CONFIG_INPUT_SIRFSOC_ONKEY)	+= sirfsoc-onkey.o
 obj-$(CONFIG_INPUT_SOC_BUTTON_ARRAY)	+= soc_button_array.o
 obj-$(CONFIG_INPUT_SPARCSPKR)		+= sparcspkr.o
+obj-$(CONFIG_INPUT_STPMIC1_ONKEY)  	+= stpmic1_onkey.o
 obj-$(CONFIG_INPUT_TPS65218_PWRBUTTON)	+= tps65218-pwrbutton.o
 obj-$(CONFIG_INPUT_TWL4030_PWRBUTTON)	+= twl4030-pwrbutton.o
 obj-$(CONFIG_INPUT_TWL4030_VIBRA)	+= twl4030-vibra.o
@@ -81,3 +82,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
+
diff --git a/drivers/input/misc/stpmic1_onkey.c b/drivers/input/misc/stpmic1_onkey.c
new file mode 100644
index 0000000..7b49c99
--- /dev/null
+++ b/drivers/input/misc/stpmic1_onkey.c
@@ -0,0 +1,198 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) STMicroelectronics 2018
+// Author: Pascal Paillet <p.paillet@st.com> for STMicroelectronics.
+
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/mfd/stpmic1.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+
+/**
+ * struct stpmic1_onkey - OnKey data
+ * @input_dev:		pointer to input device
+ * @irq_falling:	irq that we are hooked on to
+ * @irq_rising:		irq that we are hooked on to
+ */
+struct stpmic1_onkey {
+	struct input_dev *input_dev;
+	int irq_falling;
+	int irq_rising;
+};
+
+static irqreturn_t onkey_falling_irq(int irq, void *ponkey)
+{
+	struct stpmic1_onkey *onkey = ponkey;
+	struct input_dev *input_dev = onkey->input_dev;
+
+	input_report_key(input_dev, KEY_POWER, 1);
+	pm_wakeup_event(input_dev->dev.parent, 0);
+	input_sync(input_dev);
+
+	return IRQ_HANDLED;
+}
+
+static irqreturn_t onkey_rising_irq(int irq, void *ponkey)
+{
+	struct stpmic1_onkey *onkey = ponkey;
+	struct input_dev *input_dev = onkey->input_dev;
+
+	input_report_key(input_dev, KEY_POWER, 0);
+	pm_wakeup_event(input_dev->dev.parent, 0);
+	input_sync(input_dev);
+
+	return IRQ_HANDLED;
+}
+
+static int stpmic1_onkey_probe(struct platform_device *pdev)
+{
+	struct stpmic1 *pmic = dev_get_drvdata(pdev->dev.parent);
+	struct device *dev = &pdev->dev;
+	struct input_dev *input_dev;
+	struct stpmic1_onkey *onkey;
+	unsigned int val, reg = 0;
+	int error;
+
+	onkey = devm_kzalloc(dev, sizeof(*onkey), GFP_KERNEL);
+	if (!onkey)
+		return -ENOMEM;
+
+	onkey->irq_falling = platform_get_irq_byname(pdev, "onkey-falling");
+	if (onkey->irq_falling < 0) {
+		dev_err(dev, "failed: request IRQ onkey-falling %d\n",
+			onkey->irq_falling);
+		return onkey->irq_falling;
+	}
+
+	onkey->irq_rising = platform_get_irq_byname(pdev, "onkey-rising");
+	if (onkey->irq_rising < 0) {
+		dev_err(dev, "failed: request IRQ onkey-rising %d\n",
+			onkey->irq_rising);
+		return onkey->irq_rising;
+	}
+
+	if (!device_property_read_u32(dev, "power-off-time-sec", &val)) {
+		if (val > 0 && val <= 16) {
+			dev_dbg(dev, "power-off-time=%d seconds\n", val);
+			reg |= PONKEY_PWR_OFF;
+			reg |= ((16 - val) & PONKEY_TURNOFF_TIMER_MASK);
+		} else {
+			dev_err(dev, "power-off-time-sec out of range\n");
+			return -EINVAL;
+		}
+	}
+
+	if (device_property_present(dev, "st,onkey-clear-cc-flag"))
+		reg |= PONKEY_CC_FLAG_CLEAR;
+
+	error = regmap_update_bits(pmic->regmap, PKEY_TURNOFF_CR,
+				   PONKEY_TURNOFF_MASK, reg);
+	if (error) {
+		dev_err(dev, "PKEY_TURNOFF_CR write failed: %d\n", error);
+		return error;
+	}
+
+	if (device_property_present(dev, "st,onkey-pu-inactive")) {
+		error = regmap_update_bits(pmic->regmap, PADS_PULL_CR,
+					   PONKEY_PU_INACTIVE,
+					   PONKEY_PU_INACTIVE);
+		if (error) {
+			dev_err(dev, "ONKEY Pads configuration failed: %d\n",
+				error);
+			return error;
+		}
+	}
+
+	input_dev = devm_input_allocate_device(dev);
+	if (!input_dev) {
+		dev_err(dev, "Can't allocate Pwr Onkey Input Device\n");
+		return -ENOMEM;
+	}
+
+	input_dev->name = "pmic_onkey";
+	input_dev->phys = "pmic_onkey/input0";
+
+	input_set_capability(input_dev, EV_KEY, KEY_POWER);
+
+	onkey->input_dev = input_dev;
+
+	/* interrupt is nested in a thread */
+	error = devm_request_threaded_irq(dev, onkey->irq_falling, NULL,
+					  onkey_falling_irq, IRQF_ONESHOT,
+					  dev_name(dev), onkey);
+	if (error) {
+		dev_err(dev, "Can't get IRQ Onkey Falling: %d\n", error);
+		return error;
+	}
+
+	error = devm_request_threaded_irq(dev, onkey->irq_rising, NULL,
+					  onkey_rising_irq, IRQF_ONESHOT,
+					  dev_name(dev), onkey);
+	if (error) {
+		dev_err(dev, "Can't get IRQ Onkey Rising: %d\n", error);
+		return error;
+	}
+
+	error = input_register_device(input_dev);
+	if (error) {
+		dev_err(dev, "Can't register power button: %d\n", error);
+		return error;
+	}
+
+	platform_set_drvdata(pdev, onkey);
+	device_init_wakeup(dev, true);
+
+	return 0;
+}
+
+static int __maybe_unused stpmic1_onkey_suspend(struct device *dev)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct stpmic1_onkey *onkey = platform_get_drvdata(pdev);
+
+	if (device_may_wakeup(dev)) {
+		enable_irq_wake(onkey->irq_falling);
+		enable_irq_wake(onkey->irq_rising);
+	}
+	return 0;
+}
+
+static int __maybe_unused stpmic1_onkey_resume(struct device *dev)
+{
+	struct platform_device *pdev = to_platform_device(dev);
+	struct stpmic1_onkey *onkey = platform_get_drvdata(pdev);
+
+	if (device_may_wakeup(dev)) {
+		disable_irq_wake(onkey->irq_falling);
+		disable_irq_wake(onkey->irq_rising);
+	}
+	return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(stpmic1_onkey_pm,
+			 stpmic1_onkey_suspend,
+			 stpmic1_onkey_resume);
+
+static const struct of_device_id of_stpmic1_onkey_match[] = {
+	{ .compatible = "st,stpmic1-onkey" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, of_stpmic1_onkey_match);
+
+static struct platform_driver stpmic1_onkey_driver = {
+	.probe	= stpmic1_onkey_probe,
+	.driver	= {
+		.name	= "stpmic1_onkey",
+		.of_match_table = of_match_ptr(of_stpmic1_onkey_match),
+		.pm	= &stpmic1_onkey_pm,
+	},
+};
+module_platform_driver(stpmic1_onkey_driver);
+
+MODULE_DESCRIPTION("Onkey driver for STPMIC1");
+MODULE_AUTHOR("Pascal Paillet <p.paillet@st.com>");
+MODULE_LICENSE("GPL v2");
-- 
1.9.1

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

* [PATCH v7 6/7] watchdog: stpmic1: add stpmic1 watchdog driver
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (4 preceding siblings ...)
  2018-11-30  9:55 ` [PATCH v7 4/7] input: stpmic1: add stpmic1 onkey driver Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-11-30  9:55 ` [PATCH v7 7/7] regulator: stpmic1: fix regulator_lock usage Pascal PAILLET-LME
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

The stpmic1 PMIC embeds a watchdog which is disabled by default. As soon
as the watchdog is started, it must be refreshed periodically otherwise
the PMIC goes off.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
---
changes in v7: nothing

 drivers/watchdog/Kconfig       |  12 ++++
 drivers/watchdog/Makefile      |   1 +
 drivers/watchdog/stpmic1_wdt.c | 139 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 152 insertions(+)
 create mode 100644 drivers/watchdog/stpmic1_wdt.c

diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 2d64333..cc5155b 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -817,6 +817,18 @@ config STM32_WATCHDOG
 	  To compile this driver as a module, choose M here: the
 	  module will be called stm32_iwdg.
 
+config STPMIC1_WATCHDOG
+	tristate "STPMIC1 PMIC watchdog support"
+	depends on MFD_STPMIC1
+	select WATCHDOG_CORE
+	help
+	  Say Y here to include watchdog support embedded into STPMIC1 PMIC.
+	  If the watchdog timer expires, stpmic1 will shut down all its power
+	  supplies.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called spmic1_wdt.
+
 config UNIPHIER_WATCHDOG
 	tristate "UniPhier watchdog support"
 	depends on ARCH_UNIPHIER || COMPILE_TEST
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile
index f69cdff..bdc072c 100644
--- a/drivers/watchdog/Makefile
+++ b/drivers/watchdog/Makefile
@@ -218,3 +218,4 @@ obj-$(CONFIG_SOFT_WATCHDOG) += softdog.o
 obj-$(CONFIG_MENF21BMC_WATCHDOG) += menf21bmc_wdt.o
 obj-$(CONFIG_MENZ069_WATCHDOG) += menz69_wdt.o
 obj-$(CONFIG_RAVE_SP_WATCHDOG) += rave-sp-wdt.o
+obj-$(CONFIG_STPMIC1_WATCHDOG) += stpmic1_wdt.o
diff --git a/drivers/watchdog/stpmic1_wdt.c b/drivers/watchdog/stpmic1_wdt.c
new file mode 100644
index 0000000..ad431d8
--- /dev/null
+++ b/drivers/watchdog/stpmic1_wdt.c
@@ -0,0 +1,139 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (C) STMicroelectronics 2018
+// Author: Pascal Paillet <p.paillet@st.com> for STMicroelectronics.
+
+#include <linux/kernel.h>
+#include <linux/mfd/stpmic1.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+#include <linux/slab.h>
+#include <linux/watchdog.h>
+
+/* WATCHDOG CONTROL REGISTER bit */
+#define WDT_START		BIT(0)
+#define WDT_PING		BIT(1)
+#define WDT_START_MASK		BIT(0)
+#define WDT_PING_MASK		BIT(1)
+#define WDT_STOP		0
+
+#define PMIC_WDT_MIN_TIMEOUT 1
+#define PMIC_WDT_MAX_TIMEOUT 256
+#define PMIC_WDT_DEFAULT_TIMEOUT 30
+
+static bool nowayout = WATCHDOG_NOWAYOUT;
+module_param(nowayout, bool, 0);
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
+		 __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+
+struct stpmic1_wdt {
+	struct stpmic1 *pmic;
+	struct watchdog_device wdtdev;
+};
+
+static int pmic_wdt_start(struct watchdog_device *wdd)
+{
+	struct stpmic1_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	return regmap_update_bits(wdt->pmic->regmap,
+				  WCHDG_CR, WDT_START_MASK, WDT_START);
+}
+
+static int pmic_wdt_stop(struct watchdog_device *wdd)
+{
+	struct stpmic1_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	return regmap_update_bits(wdt->pmic->regmap,
+				  WCHDG_CR, WDT_START_MASK, WDT_STOP);
+}
+
+static int pmic_wdt_ping(struct watchdog_device *wdd)
+{
+	struct stpmic1_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	return regmap_update_bits(wdt->pmic->regmap,
+				  WCHDG_CR, WDT_PING_MASK, WDT_PING);
+}
+
+static int pmic_wdt_set_timeout(struct watchdog_device *wdd,
+				unsigned int timeout)
+{
+	struct stpmic1_wdt *wdt = watchdog_get_drvdata(wdd);
+
+	wdd->timeout = timeout;
+	/* timeout is equal to register value + 1 */
+	return regmap_write(wdt->pmic->regmap, WCHDG_TIMER_CR, timeout - 1);
+}
+
+static const struct watchdog_info pmic_watchdog_info = {
+	.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
+	.identity = "STPMIC1 PMIC Watchdog",
+};
+
+static const struct watchdog_ops pmic_watchdog_ops = {
+	.owner = THIS_MODULE,
+	.start = pmic_wdt_start,
+	.stop = pmic_wdt_stop,
+	.ping = pmic_wdt_ping,
+	.set_timeout = pmic_wdt_set_timeout,
+};
+
+static int pmic_wdt_probe(struct platform_device *pdev)
+{
+	int ret;
+	struct stpmic1 *pmic;
+	struct stpmic1_wdt *wdt;
+
+	if (!pdev->dev.parent)
+		return -EINVAL;
+
+	pmic = dev_get_drvdata(pdev->dev.parent);
+	if (!pmic)
+		return -EINVAL;
+
+	wdt = devm_kzalloc(&pdev->dev, sizeof(struct stpmic1_wdt), GFP_KERNEL);
+	if (!wdt)
+		return -ENOMEM;
+
+	wdt->pmic = pmic;
+
+	wdt->wdtdev.info = &pmic_watchdog_info;
+	wdt->wdtdev.ops = &pmic_watchdog_ops;
+	wdt->wdtdev.min_timeout = PMIC_WDT_MIN_TIMEOUT;
+	wdt->wdtdev.max_timeout = PMIC_WDT_MAX_TIMEOUT;
+	wdt->wdtdev.parent = &pdev->dev;
+
+	wdt->wdtdev.timeout = PMIC_WDT_DEFAULT_TIMEOUT;
+	watchdog_init_timeout(&wdt->wdtdev, 0, &pdev->dev);
+
+	watchdog_set_nowayout(&wdt->wdtdev, nowayout);
+	watchdog_set_drvdata(&wdt->wdtdev, wdt);
+
+	ret = devm_watchdog_register_device(&pdev->dev, &wdt->wdtdev);
+	if (ret)
+		return ret;
+
+	dev_dbg(wdt->pmic->dev, "PMIC Watchdog driver probed\n");
+	return 0;
+}
+
+static const struct of_device_id of_pmic_wdt_match[] = {
+	{ .compatible = "st,stpmic1-wdt" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, of_pmic_wdt_match);
+
+static struct platform_driver stpmic1_wdt_driver = {
+	.probe = pmic_wdt_probe,
+	.driver = {
+		.name = "stpmic1-wdt",
+		.of_match_table = of_pmic_wdt_match,
+	},
+};
+module_platform_driver(stpmic1_wdt_driver);
+
+MODULE_DESCRIPTION("Watchdog driver for STPMIC1 device");
+MODULE_AUTHOR("Pascal Paillet <p.paillet@st.com>");
+MODULE_LICENSE("GPL v2");
-- 
1.9.1

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

* [PATCH v7 7/7] regulator: stpmic1: fix regulator_lock usage
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (5 preceding siblings ...)
  2018-11-30  9:55 ` [PATCH v7 6/7] watchdog: stpmic1: add stpmic1 watchdog driver Pascal PAILLET-LME
@ 2018-11-30  9:55 ` Pascal PAILLET-LME
  2018-12-03  7:11 ` [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Lee Jones
  2018-12-14 12:47 ` Lee Jones
  8 siblings, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-11-30  9:55 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, mark.rutland, lee.jones, lgirdwood,
	broonie, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin
  Cc: Pascal PAILLET-LME

fix a compilation issue due to regulator_lock usage.

Signed-off-by: Pascal Paillet <p.paillet@st.com>
---
changes in v7: 
* new patch due to rebase on regul/for-next

 drivers/regulator/stpmic1_regulator.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/regulator/stpmic1_regulator.c b/drivers/regulator/stpmic1_regulator.c
index eac0848..16ba029 100644
--- a/drivers/regulator/stpmic1_regulator.c
+++ b/drivers/regulator/stpmic1_regulator.c
@@ -489,7 +489,7 @@ static irqreturn_t stpmic1_curlim_irq_handler(int irq, void *data)
 {
 	struct regulator_dev *rdev = (struct regulator_dev *)data;
 
-	regulator_lock(rdev, NULL);
+	regulator_lock(rdev);
 
 	/* Send an overcurrent notification */
 	regulator_notifier_call_chain(rdev,
-- 
1.9.1

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (6 preceding siblings ...)
  2018-11-30  9:55 ` [PATCH v7 7/7] regulator: stpmic1: fix regulator_lock usage Pascal PAILLET-LME
@ 2018-12-03  7:11 ` Lee Jones
  2018-12-04 15:24   ` Pascal PAILLET-LME
  2018-12-14 12:47 ` Lee Jones
  8 siblings, 1 reply; 18+ messages in thread
From: Lee Jones @ 2018-12-03  7:11 UTC (permalink / raw)
  To: Pascal PAILLET-LME
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:

> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from 
> STMicroelectronics. 
> The STPMIC1 regulators supply power to an application processor as well as 
> to external system peripherals such as DDR, Flash memories and system
> devices. It also features onkey button input and an hardware watchdog.
> The STPMIC1 is controlled via I2C. 
> 
> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> as parent.
> 
> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> 
> Pascal Paillet (7):
> changes in v7:
> * rebase on regul/for-next
> 
>   dt-bindings: mfd: document stpmic1
>   mfd: stpmic1: add stpmic1 driver
>   dt-bindings: input: document stpmic1 pmic onkey
>   input: stpmic1: add stpmic1 onkey driver
>   dt-bindings: watchdog: document stpmic1 pmic watchdog
>   watchdog: stpmic1: add stpmic1 watchdog driver
>   regulator: stpmic1: fix regulator_lock usage
> 
>  .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
>  .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
>  .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
>  drivers/input/misc/Kconfig                         |  11 ++
>  drivers/input/misc/Makefile                        |   2 +
>  drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
>  drivers/mfd/Kconfig                                |  16 ++
>  drivers/mfd/Makefile                               |   1 +
>  drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++

>  drivers/regulator/stpmic1_regulator.c              |   2 +-

Is it just Mark you're waiting on now?

>  drivers/watchdog/Kconfig                           |  12 ++
>  drivers/watchdog/Makefile                          |   1 +
>  drivers/watchdog/stpmic1_wdt.c                     | 139 ++++++++++++++
>  include/dt-bindings/mfd/st,stpmic1.h               |  50 +++++
>  include/linux/mfd/stpmic1.h                        | 212 ++++++++++++++++++++
>  15 files changed, 956 insertions(+), 1 deletion(-)
>  create mode 100644 Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
>  create mode 100644 Documentation/devicetree/bindings/mfd/st,stpmic1.txt
>  create mode 100644 Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
>  create mode 100644 drivers/input/misc/stpmic1_onkey.c
>  create mode 100644 drivers/mfd/stpmic1.c
>  create mode 100644 drivers/watchdog/stpmic1_wdt.c
>  create mode 100644 include/dt-bindings/mfd/st,stpmic1.h
>  create mode 100644 include/linux/mfd/stpmic1.h
> 

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-03  7:11 ` [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Lee Jones
@ 2018-12-04 15:24   ` Pascal PAILLET-LME
  2018-12-05  9:36     ` Lee Jones
  0 siblings, 1 reply; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-12-04 15:24 UTC (permalink / raw)
  To: Lee Jones
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

Hi Lee,

Le 12/03/2018 08:11 AM, Lee Jones a écrit :
> On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
>
>> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from
>> STMicroelectronics.
>> The STPMIC1 regulators supply power to an application processor as well as
>> to external system peripherals such as DDR, Flash memories and system
>> devices. It also features onkey button input and an hardware watchdog.
>> The STPMIC1 is controlled via I2C.
>>
>> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
>> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
>> as parent.
>>
>> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
>>
>> Pascal Paillet (7):
>> changes in v7:
>> * rebase on regul/for-next
>>
>>    dt-bindings: mfd: document stpmic1
>>    mfd: stpmic1: add stpmic1 driver
>>    dt-bindings: input: document stpmic1 pmic onkey
>>    input: stpmic1: add stpmic1 onkey driver
>>    dt-bindings: watchdog: document stpmic1 pmic watchdog
>>    watchdog: stpmic1: add stpmic1 watchdog driver
>>    regulator: stpmic1: fix regulator_lock usage
>>
>>   .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
>>   .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
>>   .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
>>   drivers/input/misc/Kconfig                         |  11 ++
>>   drivers/input/misc/Makefile                        |   2 +
>>   drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
>>   drivers/mfd/Kconfig                                |  16 ++
>>   drivers/mfd/Makefile                               |   1 +
>>   drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++
>>   drivers/regulator/stpmic1_regulator.c              |   2 +-
> Is it just Mark you're waiting on now?
It is ok now, Mark has applied the patch.
Evrey thing has been acked now. What is the nex step ?

>>   drivers/watchdog/Kconfig                           |  12 ++
>>   drivers/watchdog/Makefile                          |   1 +
>>   drivers/watchdog/stpmic1_wdt.c                     | 139 ++++++++++++++
>>   include/dt-bindings/mfd/st,stpmic1.h               |  50 +++++
>>   include/linux/mfd/stpmic1.h                        | 212 ++++++++++++++++++++
>>   15 files changed, 956 insertions(+), 1 deletion(-)
>>   create mode 100644 Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
>>   create mode 100644 Documentation/devicetree/bindings/mfd/st,stpmic1.txt
>>   create mode 100644 Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
>>   create mode 100644 drivers/input/misc/stpmic1_onkey.c
>>   create mode 100644 drivers/mfd/stpmic1.c
>>   create mode 100644 drivers/watchdog/stpmic1_wdt.c
>>   create mode 100644 include/dt-bindings/mfd/st,stpmic1.h
>>   create mode 100644 include/linux/mfd/stpmic1.h
>>

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-04 15:24   ` Pascal PAILLET-LME
@ 2018-12-05  9:36     ` Lee Jones
  2018-12-05 15:36       ` Pascal PAILLET-LME
  0 siblings, 1 reply; 18+ messages in thread
From: Lee Jones @ 2018-12-05  9:36 UTC (permalink / raw)
  To: Pascal PAILLET-LME
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

On Tue, 04 Dec 2018, Pascal PAILLET-LME wrote:
> Le 12/03/2018 08:11 AM, Lee Jones a écrit :
> > On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
> >
> >> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from
> >> STMicroelectronics.
> >> The STPMIC1 regulators supply power to an application processor as well as
> >> to external system peripherals such as DDR, Flash memories and system
> >> devices. It also features onkey button input and an hardware watchdog.
> >> The STPMIC1 is controlled via I2C.
> >>
> >> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> >> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> >> as parent.
> >>
> >> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> >>
> >> Pascal Paillet (7):
> >> changes in v7:
> >> * rebase on regul/for-next
> >>
> >>    dt-bindings: mfd: document stpmic1
> >>    mfd: stpmic1: add stpmic1 driver
> >>    dt-bindings: input: document stpmic1 pmic onkey
> >>    input: stpmic1: add stpmic1 onkey driver
> >>    dt-bindings: watchdog: document stpmic1 pmic watchdog
> >>    watchdog: stpmic1: add stpmic1 watchdog driver
> >>    regulator: stpmic1: fix regulator_lock usage
> >>
> >>   .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
> >>   .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
> >>   .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
> >>   drivers/input/misc/Kconfig                         |  11 ++
> >>   drivers/input/misc/Makefile                        |   2 +
> >>   drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
> >>   drivers/mfd/Kconfig                                |  16 ++
> >>   drivers/mfd/Makefile                               |   1 +
> >>   drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++
> >>   drivers/regulator/stpmic1_regulator.c              |   2 +-
> > Is it just Mark you're waiting on now?
> It is ok now, Mark has applied the patch.
> Evrey thing has been acked now. What is the nex step ?

Mark has applied patch 7?

Why don't I see that?  Should you have removed it from this set?

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-05  9:36     ` Lee Jones
@ 2018-12-05 15:36       ` Pascal PAILLET-LME
  2018-12-07  7:31         ` Lee Jones
  0 siblings, 1 reply; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-12-05 15:36 UTC (permalink / raw)
  To: Lee Jones
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin


pascal paillet (p.paillet@st.com) Le Mans / France
Microcontrollers and Digital ICs Group | Application Development
TEL: +33.(0)2.44.02.74.69 | TINA: 166 7469

Le 12/05/2018 10:36 AM, Lee Jones a écrit :
> On Tue, 04 Dec 2018, Pascal PAILLET-LME wrote:
>> Le 12/03/2018 08:11 AM, Lee Jones a écrit :
>>> On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
>>>
>>>> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from
>>>> STMicroelectronics.
>>>> The STPMIC1 regulators supply power to an application processor as well as
>>>> to external system peripherals such as DDR, Flash memories and system
>>>> devices. It also features onkey button input and an hardware watchdog.
>>>> The STPMIC1 is controlled via I2C.
>>>>
>>>> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
>>>> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
>>>> as parent.
>>>>
>>>> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
>>>>
>>>> Pascal Paillet (7):
>>>> changes in v7:
>>>> * rebase on regul/for-next
>>>>
>>>>     dt-bindings: mfd: document stpmic1
>>>>     mfd: stpmic1: add stpmic1 driver
>>>>     dt-bindings: input: document stpmic1 pmic onkey
>>>>     input: stpmic1: add stpmic1 onkey driver
>>>>     dt-bindings: watchdog: document stpmic1 pmic watchdog
>>>>     watchdog: stpmic1: add stpmic1 watchdog driver
>>>>     regulator: stpmic1: fix regulator_lock usage
>>>>
>>>>    .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
>>>>    .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
>>>>    .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
>>>>    drivers/input/misc/Kconfig                         |  11 ++
>>>>    drivers/input/misc/Makefile                        |   2 +
>>>>    drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
>>>>    drivers/mfd/Kconfig                                |  16 ++
>>>>    drivers/mfd/Makefile                               |   1 +
>>>>    drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++
>>>>    drivers/regulator/stpmic1_regulator.c              |   2 +-
>>> Is it just Mark you're waiting on now?
>> It is ok now, Mark has applied the patch.
>> Evrey thing has been acked now. What is the nex step ?
> Mark has applied patch 7?
>
> Why don't I see that?  Should you have removed it from this set?
Hi Lee, I have received an email from Mark telliing that the regulator 
patch is applied on

  https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git  

I can see it on the branch regul/for-next.


thank you,
pascal


>

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-05 15:36       ` Pascal PAILLET-LME
@ 2018-12-07  7:31         ` Lee Jones
  2018-12-07 12:19           ` Mark Brown
  0 siblings, 1 reply; 18+ messages in thread
From: Lee Jones @ 2018-12-07  7:31 UTC (permalink / raw)
  To: Pascal PAILLET-LME
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

On Wed, 05 Dec 2018, Pascal PAILLET-LME wrote:

> 
> pascal paillet (p.paillet@st.com) Le Mans / France
> Microcontrollers and Digital ICs Group | Application Development
> TEL: +33.(0)2.44.02.74.69 | TINA: 166 7469
> 
> Le 12/05/2018 10:36 AM, Lee Jones a écrit :
> > On Tue, 04 Dec 2018, Pascal PAILLET-LME wrote:
> >> Le 12/03/2018 08:11 AM, Lee Jones a écrit :
> >>> On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
> >>>
> >>>> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from
> >>>> STMicroelectronics.
> >>>> The STPMIC1 regulators supply power to an application processor as well as
> >>>> to external system peripherals such as DDR, Flash memories and system
> >>>> devices. It also features onkey button input and an hardware watchdog.
> >>>> The STPMIC1 is controlled via I2C.
> >>>>
> >>>> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> >>>> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> >>>> as parent.
> >>>>
> >>>> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> >>>>
> >>>> Pascal Paillet (7):
> >>>> changes in v7:
> >>>> * rebase on regul/for-next
> >>>>
> >>>>     dt-bindings: mfd: document stpmic1
> >>>>     mfd: stpmic1: add stpmic1 driver
> >>>>     dt-bindings: input: document stpmic1 pmic onkey
> >>>>     input: stpmic1: add stpmic1 onkey driver
> >>>>     dt-bindings: watchdog: document stpmic1 pmic watchdog
> >>>>     watchdog: stpmic1: add stpmic1 watchdog driver
> >>>>     regulator: stpmic1: fix regulator_lock usage
> >>>>
> >>>>    .../devicetree/bindings/input/st,stpmic1-onkey.txt |  28 +++
> >>>>    .../devicetree/bindings/mfd/st,stpmic1.txt         |  61 ++++++
> >>>>    .../bindings/watchdog/st,stpmic1-wdt.txt           |  11 ++
> >>>>    drivers/input/misc/Kconfig                         |  11 ++
> >>>>    drivers/input/misc/Makefile                        |   2 +
> >>>>    drivers/input/misc/stpmic1_onkey.c                 | 198 +++++++++++++++++++
> >>>>    drivers/mfd/Kconfig                                |  16 ++
> >>>>    drivers/mfd/Makefile                               |   1 +
> >>>>    drivers/mfd/stpmic1.c                              | 213 +++++++++++++++++++++
> >>>>    drivers/regulator/stpmic1_regulator.c              |   2 +-
> >>> Is it just Mark you're waiting on now?
> >> It is ok now, Mark has applied the patch.
> >> Evrey thing has been acked now. What is the nex step ?
> > Mark has applied patch 7?
> >
> > Why don't I see that?  Should you have removed it from this set?
> Hi Lee, I have received an email from Mark telliing that the regulator 
> patch is applied on
> 
>   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git  
> 
> I can see it on the branch regul/for-next.

Mark,

Does your patch tracker only reply to the author?

Any reason why I don't see it?

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-07  7:31         ` Lee Jones
@ 2018-12-07 12:19           ` Mark Brown
  0 siblings, 0 replies; 18+ messages in thread
From: Mark Brown @ 2018-12-07 12:19 UTC (permalink / raw)
  To: Lee Jones
  Cc: Pascal PAILLET-LME, dmitry.torokhov, robh+dt, mark.rutland,
	lgirdwood, wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin

[-- Attachment #1: Type: text/plain, Size: 587 bytes --]

On Fri, Dec 07, 2018 at 07:31:32AM +0000, Lee Jones wrote:
> On Wed, 05 Dec 2018, Pascal PAILLET-LME wrote:

> > Hi Lee, I have received an email from Mark telliing that the regulator 
> > patch is applied on

> >   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git  

> > I can see it on the branch regul/for-next.

> Does your patch tracker only reply to the author?

> Any reason why I don't see it?

It gets sent to anyone in patchwork.  It is possible there was some
problem talking to patchwork, or that your mail system has filtered the
mail.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
                   ` (7 preceding siblings ...)
  2018-12-03  7:11 ` [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Lee Jones
@ 2018-12-14 12:47 ` Lee Jones
  2018-12-14 14:36   ` Pascal PAILLET-LME
  2019-01-15  0:48   ` dmitry.torokhov
  8 siblings, 2 replies; 18+ messages in thread
From: Lee Jones @ 2018-12-14 12:47 UTC (permalink / raw)
  To: Pascal PAILLET-LME
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:

> The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from 
> STMicroelectronics. 
> The STPMIC1 regulators supply power to an application processor as well as 
> to external system peripherals such as DDR, Flash memories and system
> devices. It also features onkey button input and an hardware watchdog.
> The STPMIC1 is controlled via I2C. 
> 
> Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> as parent.
> 
> STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> 
> Pascal Paillet (7):
> changes in v7:
> * rebase on regul/for-next
> 
>   dt-bindings: mfd: document stpmic1
>   mfd: stpmic1: add stpmic1 driver
>   dt-bindings: input: document stpmic1 pmic onkey
>   input: stpmic1: add stpmic1 onkey driver
>   dt-bindings: watchdog: document stpmic1 pmic watchdog
>   watchdog: stpmic1: add stpmic1 watchdog driver
>   regulator: stpmic1: fix regulator_lock usage

Could you please remove any patches which have been applied and
[RESEND]?

Also, is Dmitry planning on Acking:

  dt-bindings: input: document stpmic1 pmic onkey

... or is Rob's Ack enough?

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-14 12:47 ` Lee Jones
@ 2018-12-14 14:36   ` Pascal PAILLET-LME
  2019-01-15  0:48   ` dmitry.torokhov
  1 sibling, 0 replies; 18+ messages in thread
From: Pascal PAILLET-LME @ 2018-12-14 14:36 UTC (permalink / raw)
  To: Lee Jones
  Cc: dmitry.torokhov, robh+dt, mark.rutland, lgirdwood, broonie, wim,
	linux, linux-input, devicetree, linux-kernel, linux-watchdog,
	benjamin.gaignard, eballetbo, axel.lin

Hello Lee,

Le 12/14/2018 01:47 PM, Lee Jones a écrit :
> changes in v7:
> * rebase on regul/for-next
>
>    dt-bindings: mfd: document stpmic1
>    mfd: stpmic1: add stpmic1 driver
>    dt-bindings: input: document stpmic1 pmic onkey
>    input: stpmic1: add stpmic1 onkey driver
>    dt-bindings: watchdog: document stpmic1 pmic watchdog
>    watchdog: stpmic1: add stpmic1 watchdog driver
>    regulator: stpmic1: fix regulator_lock usage
> Could you please remove any patches which have been applied and
> [RESEND]?
DONE, I have resent a V8 without  the regulator patch.

> Also, is Dmitry planning on Acking:
>
>    dt-bindings: input: document stpmic1 pmic onkey
>
> ... or is Rob's Ack enough?
>


thank you,
pascal

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2018-12-14 12:47 ` Lee Jones
  2018-12-14 14:36   ` Pascal PAILLET-LME
@ 2019-01-15  0:48   ` dmitry.torokhov
  2019-01-16  8:13     ` Lee Jones
  1 sibling, 1 reply; 18+ messages in thread
From: dmitry.torokhov @ 2019-01-15  0:48 UTC (permalink / raw)
  To: Lee Jones
  Cc: Pascal PAILLET-LME, robh+dt, mark.rutland, lgirdwood, broonie,
	wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin

On Fri, Dec 14, 2018 at 12:47:01PM +0000, Lee Jones wrote:
> On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
> 
> > The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from 
> > STMicroelectronics. 
> > The STPMIC1 regulators supply power to an application processor as well as 
> > to external system peripherals such as DDR, Flash memories and system
> > devices. It also features onkey button input and an hardware watchdog.
> > The STPMIC1 is controlled via I2C. 
> > 
> > Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> > irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> > as parent.
> > 
> > STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> > 
> > Pascal Paillet (7):
> > changes in v7:
> > * rebase on regul/for-next
> > 
> >   dt-bindings: mfd: document stpmic1
> >   mfd: stpmic1: add stpmic1 driver
> >   dt-bindings: input: document stpmic1 pmic onkey
> >   input: stpmic1: add stpmic1 onkey driver
> >   dt-bindings: watchdog: document stpmic1 pmic watchdog
> >   watchdog: stpmic1: add stpmic1 watchdog driver
> >   regulator: stpmic1: fix regulator_lock usage
> 
> Could you please remove any patches which have been applied and
> [RESEND]?
> 
> Also, is Dmitry planning on Acking:
> 
>   dt-bindings: input: document stpmic1 pmic onkey
> 
> ... or is Rob's Ack enough?

For bindings I normally defer to Rob (unless I see something that really
bugs me and then I'll speak up).

Thanks.

-- 
Dmitry

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

* Re: [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver
  2019-01-15  0:48   ` dmitry.torokhov
@ 2019-01-16  8:13     ` Lee Jones
  0 siblings, 0 replies; 18+ messages in thread
From: Lee Jones @ 2019-01-16  8:13 UTC (permalink / raw)
  To: dmitry.torokhov
  Cc: Pascal PAILLET-LME, robh+dt, mark.rutland, lgirdwood, broonie,
	wim, linux, linux-input, devicetree, linux-kernel,
	linux-watchdog, benjamin.gaignard, eballetbo, axel.lin

On Mon, 14 Jan 2019, dmitry.torokhov@gmail.com wrote:

> On Fri, Dec 14, 2018 at 12:47:01PM +0000, Lee Jones wrote:
> > On Fri, 30 Nov 2018, Pascal PAILLET-LME wrote:
> > 
> > > The goal of this patch-set is to propose a driver for the STPMIC1 PMIC from 
> > > STMicroelectronics. 
> > > The STPMIC1 regulators supply power to an application processor as well as 
> > > to external system peripherals such as DDR, Flash memories and system
> > > devices. It also features onkey button input and an hardware watchdog.
> > > The STPMIC1 is controlled via I2C. 
> > > 
> > > Main driver is drivers/mfd/stpmic1 that handle I2C regmap configuration and
> > > irqchip. stpmic1_regulator, stpmic1_onkey and stpmic1_wdt need stpmic1 mfd
> > > as parent.
> > > 
> > > STPMIC1 MFD and regulator drivers maybe mandatory at boot time.
> > > 
> > > Pascal Paillet (7):
> > > changes in v7:
> > > * rebase on regul/for-next
> > > 
> > >   dt-bindings: mfd: document stpmic1
> > >   mfd: stpmic1: add stpmic1 driver
> > >   dt-bindings: input: document stpmic1 pmic onkey
> > >   input: stpmic1: add stpmic1 onkey driver
> > >   dt-bindings: watchdog: document stpmic1 pmic watchdog
> > >   watchdog: stpmic1: add stpmic1 watchdog driver
> > >   regulator: stpmic1: fix regulator_lock usage
> > 
> > Could you please remove any patches which have been applied and
> > [RESEND]?
> > 
> > Also, is Dmitry planning on Acking:
> > 
> >   dt-bindings: input: document stpmic1 pmic onkey
> > 
> > ... or is Rob's Ack enough?
> 
> For bindings I normally defer to Rob (unless I see something that really
> bugs me and then I'll speak up).

I usually do the opposite.  Seeing as Rob is pretty heavily laden with
DT patches, I tend to review/apply patches which do not add new DT
properties and/or are obvious/trivial and leave Rob to the rest.

Your train-set though of course, your decision.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

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

end of thread, back to index

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-30  9:55 [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 1/7] dt-bindings: mfd: document stpmic1 Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 3/7] dt-bindings: input: document stpmic1 pmic onkey Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 2/7] mfd: stpmic1: add stpmic1 driver Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 5/7] dt-bindings: watchdog: document stpmic1 pmic watchdog Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 4/7] input: stpmic1: add stpmic1 onkey driver Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 6/7] watchdog: stpmic1: add stpmic1 watchdog driver Pascal PAILLET-LME
2018-11-30  9:55 ` [PATCH v7 7/7] regulator: stpmic1: fix regulator_lock usage Pascal PAILLET-LME
2018-12-03  7:11 ` [PATCH v7 0/7] Introduce STPMIC1 PMIC Driver Lee Jones
2018-12-04 15:24   ` Pascal PAILLET-LME
2018-12-05  9:36     ` Lee Jones
2018-12-05 15:36       ` Pascal PAILLET-LME
2018-12-07  7:31         ` Lee Jones
2018-12-07 12:19           ` Mark Brown
2018-12-14 12:47 ` Lee Jones
2018-12-14 14:36   ` Pascal PAILLET-LME
2019-01-15  0:48   ` dmitry.torokhov
2019-01-16  8:13     ` Lee Jones

Linux-Watchdog Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-watchdog/0 linux-watchdog/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-watchdog linux-watchdog/ https://lore.kernel.org/linux-watchdog \
		linux-watchdog@vger.kernel.org linux-watchdog@archiver.kernel.org
	public-inbox-index linux-watchdog


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-watchdog


AGPL code for this site: git clone https://public-inbox.org/ public-inbox