* [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 related [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 related [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, ®);
+ 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 related [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 related [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 related [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 related [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 related [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