diff mbox series

[v4,1/8] dt-bindings: mfd: document stpmic1

Message ID 1539853324-29051-2-git-send-email-p.paillet@st.com (mailing list archive)
State New, archived
Headers show
Series Introduce STPMIC1 PMIC Driver | expand

Commit Message

Pascal Paillet Oct. 18, 2018, 9:02 a.m. UTC
From: pascal paillet <p.paillet@st.com>

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

Signed-off-by: pascal paillet <p.paillet@st.com>
---
changes in v4:
* remove interrupt-parent description
* pmic1@33 renamed to pmic@33
* fix indentation

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

Comments

Rob Herring Oct. 18, 2018, 6:47 p.m. UTC | #1
On Thu, 18 Oct 2018 09:02:11 +0000, Pascal PAILLET-LME wrote:
> From: pascal paillet <p.paillet@st.com>
> 
> stpmic1 is a pmic from STMicroelectronics. The STPMIC1 integrates 10
> regulators , 3 switches, a watchdog and an input for a power on key.
> 
> Signed-off-by: pascal paillet <p.paillet@st.com>
> ---
> changes in v4:
> * remove interrupt-parent description
> * pmic1@33 renamed to pmic@33
> * fix indentation
> 
>  .../devicetree/bindings/mfd/st,stpmic1.txt         | 131 +++++++++++++++++++++
>  include/dt-bindings/mfd/st,stpmic1.h               |  46 ++++++++
>  2 files changed, 177 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mfd/st,stpmic1.txt
>  create mode 100644 include/dt-bindings/mfd/st,stpmic1.h
> 

Reviewed-by: Rob Herring <robh@kernel.org>
Lee Jones Oct. 25, 2018, 9:44 a.m. UTC | #2
Rob: please grep your name for some feedback.

On Thu, 18 Oct 2018, Pascal PAILLET-LME wrote:

> From: pascal paillet <p.paillet@st.com>

Please use `git send-email` to send patches.

Please capitalise your name: Pascal Paillet

> stpmic1 is a pmic from STMicroelectronics. The STPMIC1 integrates 10

"STPMIC1"
"PMIC"

> regulators , 3 switches, a watchdog and an input for a power on key.

Whitespace.

What is a switch?

> Signed-off-by: pascal paillet <p.paillet@st.com>
> ---
> changes in v4:
> * remove interrupt-parent description
> * pmic1@33 renamed to pmic@33
> * fix indentation
> 
>  .../devicetree/bindings/mfd/st,stpmic1.txt         | 131 +++++++++++++++++++++
>  include/dt-bindings/mfd/st,stpmic1.h               |  46 ++++++++
>  2 files changed, 177 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..bb19cc8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/st,stpmic1.txt
> @@ -0,0 +1,131 @@
> +* STMicroelectronics STPMIC1 Power Management IC
> +
> +Required parent device 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: 	Describes the STPMIC1 as an interrupt

Tabbing (this could just be a patch quirk).

Either use full-stops or don't - please be consistent.

> +  controller (has its own domain). Interrupt number are the following:

"numbers"

Actually consider rewording - sounds funny.

> +	/* Interrupt Register 1 (0x50 for latch) */
> +	IT_SWOUT_R=0
> +	IT_SWOUT_F=1
> +	IT_VBUS_OTG_R=2
> +	IT_VBUS_OTG_F=3
> +	IT_WAKEUP_R=4
> +	IT_WAKEUP_F=5
> +	IT_PONKEY_R=6
> +	IT_PONKEY_F=7
> +	/* Interrupt Register 2 (0x51 for latch) */
> +	IT_OVP_BOOST=8
> +	IT_OCP_BOOST=9
> +	IT_OCP_SWOUT=10
> +	IT_OCP_OTG=11
> +	IT_CURLIM_BUCK4=12
> +	IT_CURLIM_BUCK3=13
> +	IT_CURLIM_BUCK2=14
> +	IT_CURLIM_BUCK1=15
> +	/* Interrupt Register 3 (0x52 for latch) */
> +	IT_SHORT_SWOUT=16
> +	IT_SHORT_SWOTG=17
> +	IT_CURLIM_LDO6=18
> +	IT_CURLIM_LDO5=19
> +	IT_CURLIM_LDO4=20
> +	IT_CURLIM_LDO3=21
> +	IT_CURLIM_LDO2=22
> +	IT_CURLIM_LDO1=23
> +	/* Interrupt Register 3 (0x52 for latch) */
> +	IT_SWIN_R=24
> +	IT_SWIN_F=25
> +	IT_RESERVED_1=26
> +	IT_RESERVED_2=27
> +	IT_VINLOW_R=28
> +	IT_VINLOW_F=29
> +	IT_TWARN_R=30
> +	IT_TWARN_F=31

Do you really need these in here?  I suspect not.

> +Optional parent device properties:
> +- st,main-control-register:
> +	-bit 1: Power cycling will be performed on turn OFF condition
> +	-bit 2: PWRCTRL is functional
> +	-bit 3: PWRCTRL active high
> +- st,pads-pull-register:
> +	-bit 1: WAKEUP pull down is not active
> +	-bit 2: PWRCTRL pull up is active
> +	-bit 3: PWRCTRL pull down is active
> +	-bit 4: WAKEUP detector is disabled
> +- st,vin-control-register:
> +	-bit 0: VINLOW monitoring is enabled
> +	-bit [1...3]: VINLOW rising threshold
> +		000 VINOK_f + 50mV
> +		001 VINOK_f + 100mV
> +		010 VINOK_f + 150mV
> +		011 VINOK_f + 200mV
> +		100 VINOK_f + 250mV
> +		101 VINOK_f + 300mV
> +		110 VINOK_f + 350mV
> +		111 VINOK_f + 400mV
> +	-bit [4...5]: VINLOW hyst
> +		00 100mV
> +		01 200mV
> +		10 300mV
> +		11 400mV
> +	-bit 6: SW_OUT detector is disabled
> +	-bit 7: SW_IN detector is enabled.
> +- st,usb-control-register:
> +	-bit 3: SW_OUT current limit
> +		0: 600mA
> +		1: 1.1A
> +	-bit 4: VBUS_OTG discharge is enabled
> +	-bit 5: SW_OUT discharge is enabled
> +	-bit 6: VBUS_OTG detection is enabled
> +	-bit 7: BOOST_OVP is disabled

I'm surprised Rob allowed you to add register bits in a DT property?

> +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:
> +
> +pmic: pmic@33 {
> +	compatible = "st,stpmic1";
> +	reg = <0x33>;
> +	interrupt-parent = <&gpioa>;
> +	interrupts = <0 2>;
> +	st,main-control-register=<0x0c>;
> +	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..b2d6c83
> --- /dev/null
> +++ b/include/dt-bindings/mfd/st,stpmic1.h
> @@ -0,0 +1,46 @@
> +/* 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
> +
> +#endif /* __DT_BINDINGS_STPMIC1_H__ */
Rob Herring Oct. 25, 2018, 12:57 p.m. UTC | #3
On Thu, Oct 25, 2018 at 4:44 AM Lee Jones <lee.jones@linaro.org> wrote:
>
> Rob: please grep your name for some feedback.
>
> On Thu, 18 Oct 2018, Pascal PAILLET-LME wrote:
>
> > From: pascal paillet <p.paillet@st.com>

> > +Optional parent device properties:
> > +- st,main-control-register:
> > +     -bit 1: Power cycling will be performed on turn OFF condition
> > +     -bit 2: PWRCTRL is functional
> > +     -bit 3: PWRCTRL active high
> > +- st,pads-pull-register:
> > +     -bit 1: WAKEUP pull down is not active
> > +     -bit 2: PWRCTRL pull up is active
> > +     -bit 3: PWRCTRL pull down is active
> > +     -bit 4: WAKEUP detector is disabled
> > +- st,vin-control-register:
> > +     -bit 0: VINLOW monitoring is enabled
> > +     -bit [1...3]: VINLOW rising threshold
> > +             000 VINOK_f + 50mV
> > +             001 VINOK_f + 100mV
> > +             010 VINOK_f + 150mV
> > +             011 VINOK_f + 200mV
> > +             100 VINOK_f + 250mV
> > +             101 VINOK_f + 300mV
> > +             110 VINOK_f + 350mV
> > +             111 VINOK_f + 400mV
> > +     -bit [4...5]: VINLOW hyst
> > +             00 100mV
> > +             01 200mV
> > +             10 300mV
> > +             11 400mV
> > +     -bit 6: SW_OUT detector is disabled
> > +     -bit 7: SW_IN detector is enabled.
> > +- st,usb-control-register:
> > +     -bit 3: SW_OUT current limit
> > +             0: 600mA
> > +             1: 1.1A
> > +     -bit 4: VBUS_OTG discharge is enabled
> > +     -bit 5: SW_OUT discharge is enabled
> > +     -bit 6: VBUS_OTG detection is enabled
> > +     -bit 7: BOOST_OVP is disabled
>
> I'm surprised Rob allowed you to add register bits in a DT property?

Yeah, they are certainly questionable and not something we encourage,
but the alternative would be dozens of properties which only apply for
this one device and just get translated back to register values.

Rob
Lee Jones Oct. 26, 2018, 6:46 a.m. UTC | #4
On Thu, 25 Oct 2018, Rob Herring wrote:

> On Thu, Oct 25, 2018 at 4:44 AM Lee Jones <lee.jones@linaro.org> wrote:
> >
> > Rob: please grep your name for some feedback.

[Moved to the top]

> > I'm surprised Rob allowed you to add register bits in a DT property?
> 
> Yeah, they are certainly questionable and not something we encourage,
> but the alternative would be dozens of properties which only apply for
> this one device and just get translated back to register values.

I don't see how this device is any different to the 100's of devices
which are already supported in DT.

> > On Thu, 18 Oct 2018, Pascal PAILLET-LME wrote:
> >
> > > From: pascal paillet <p.paillet@st.com>
> 
> > > +Optional parent device properties:
> > > +- st,main-control-register:
> > > +     -bit 1: Power cycling will be performed on turn OFF condition
> > > +     -bit 2: PWRCTRL is functional
> > > +     -bit 3: PWRCTRL active high
> > > +- st,pads-pull-register:
> > > +     -bit 1: WAKEUP pull down is not active
> > > +     -bit 2: PWRCTRL pull up is active
> > > +     -bit 3: PWRCTRL pull down is active
> > > +     -bit 4: WAKEUP detector is disabled

This should be part of the Pinctrl configuration/driver.

And Pinctrl probably already has properties for this?

> > > +- st,vin-control-register:
> > > +     -bit 0: VINLOW monitoring is enabled
> > > +     -bit [1...3]: VINLOW rising threshold
> > > +             000 VINOK_f + 50mV
> > > +             001 VINOK_f + 100mV
> > > +             010 VINOK_f + 150mV
> > > +             011 VINOK_f + 200mV
> > > +             100 VINOK_f + 250mV
> > > +             101 VINOK_f + 300mV
> > > +             110 VINOK_f + 350mV
> > > +             111 VINOK_f + 400mV
> > > +     -bit [4...5]: VINLOW hyst
> > > +             00 100mV
> > > +             01 200mV
> > > +             10 300mV
> > > +             11 400mV
> > > +     -bit 6: SW_OUT detector is disabled
> > > +     -bit 7: SW_IN detector is enabled.

This should be part of the Regulator configuration/driver?

> > > +- st,usb-control-register:
> > > +     -bit 3: SW_OUT current limit
> > > +             0: 600mA
> > > +             1: 1.1A
> > > +     -bit 4: VBUS_OTG discharge is enabled
> > > +     -bit 5: SW_OUT discharge is enabled
> > > +     -bit 6: VBUS_OTG detection is enabled
> > > +     -bit 7: BOOST_OVP is disabled

This should be part of the USB configuration/driver?
Pascal Paillet Oct. 26, 2018, 9:48 a.m. UTC | #5
Hello Lee,

Le 10/26/2018 08:46 AM, Lee Jones a écrit :
> On Thu, 25 Oct 2018, Rob Herring wrote:
>
>> On Thu, Oct 25, 2018 at 4:44 AM Lee Jones <lee.jones@linaro.org> wrote:
>>> Rob: please grep your name for some feedback.
> [Moved to the top]
>
>>> I'm surprised Rob allowed you to add register bits in a DT property?
>> Yeah, they are certainly questionable and not something we encourage,
>> but the alternative would be dozens of properties which only apply for
>> this one device and just get translated back to register values.
> I don't see how this device is any different to the 100's of devices
> which are already supported in DT.
>
>>> On Thu, 18 Oct 2018, Pascal PAILLET-LME wrote:
>>>
>>>> From: pascal paillet <p.paillet@st.com>
>>>> +Optional parent device properties:
>>>> +- st,main-control-register:
>>>> +     -bit 1: Power cycling will be performed on turn OFF condition
>>>> +     -bit 2: PWRCTRL is functional
>>>> +     -bit 3: PWRCTRL active high
>>>> +- st,pads-pull-register:
>>>> +     -bit 1: WAKEUP pull down is not active
>>>> +     -bit 2: PWRCTRL pull up is active
>>>> +     -bit 3: PWRCTRL pull down is active
>>>> +     -bit 4: WAKEUP detector is disabled
> This should be part of the Pinctrl configuration/driver.
>
> And Pinctrl probably already has properties for this?
I will remove this in the next version.
>>>> +- st,vin-control-register:
>>>> +     -bit 0: VINLOW monitoring is enabled
>>>> +     -bit [1...3]: VINLOW rising threshold
>>>> +             000 VINOK_f + 50mV
>>>> +             001 VINOK_f + 100mV
>>>> +             010 VINOK_f + 150mV
>>>> +             011 VINOK_f + 200mV
>>>> +             100 VINOK_f + 250mV
>>>> +             101 VINOK_f + 300mV
>>>> +             110 VINOK_f + 350mV
>>>> +             111 VINOK_f + 400mV
>>>> +     -bit [4...5]: VINLOW hyst
>>>> +             00 100mV
>>>> +             01 200mV
>>>> +             10 300mV
>>>> +             11 400mV
>>>> +     -bit 6: SW_OUT detector is disabled
>>>> +     -bit 7: SW_IN detector is enabled.
> This should be part of the Regulator configuration/driver?
I will also remove this in the next version. I think this could be 
handled by an hardware monitor future driver.
>>>> +- st,usb-control-register:
>>>> +     -bit 3: SW_OUT current limit
>>>> +             0: 600mA
>>>> +             1: 1.1A
>>>> +     -bit 4: VBUS_OTG discharge is enabled
>>>> +     -bit 5: SW_OUT discharge is enabled
>>>> +     -bit 6: VBUS_OTG detection is enabled
>>>> +     -bit 7: BOOST_OVP is disabled
> This should be part of the USB configuration/driver?
>
I will also remove this in the next version. And I'm going to add active 
discharge ops in the regulator driver.

Thank you !
pascal
Lee Jones Oct. 26, 2018, 11:46 a.m. UTC | #6
On Fri, 26 Oct 2018, Pascal PAILLET-LME wrote:

> Hello Lee,
> 
> Le 10/26/2018 08:46 AM, Lee Jones a écrit :
> > On Thu, 25 Oct 2018, Rob Herring wrote:
> >
> >> On Thu, Oct 25, 2018 at 4:44 AM Lee Jones <lee.jones@linaro.org> wrote:
> >>> Rob: please grep your name for some feedback.
> > [Moved to the top]
> >
> >>> I'm surprised Rob allowed you to add register bits in a DT property?
> >> Yeah, they are certainly questionable and not something we encourage,
> >> but the alternative would be dozens of properties which only apply for
> >> this one device and just get translated back to register values.
> > I don't see how this device is any different to the 100's of devices
> > which are already supported in DT.
> >
> >>> On Thu, 18 Oct 2018, Pascal PAILLET-LME wrote:
> >>>
> >>>> From: pascal paillet <p.paillet@st.com>
> >>>> +Optional parent device properties:
> >>>> +- st,main-control-register:
> >>>> +     -bit 1: Power cycling will be performed on turn OFF condition
> >>>> +     -bit 2: PWRCTRL is functional
> >>>> +     -bit 3: PWRCTRL active high
> >>>> +- st,pads-pull-register:
> >>>> +     -bit 1: WAKEUP pull down is not active
> >>>> +     -bit 2: PWRCTRL pull up is active
> >>>> +     -bit 3: PWRCTRL pull down is active
> >>>> +     -bit 4: WAKEUP detector is disabled
> > This should be part of the Pinctrl configuration/driver.
> >
> > And Pinctrl probably already has properties for this?
> I will remove this in the next version.
> >>>> +- st,vin-control-register:
> >>>> +     -bit 0: VINLOW monitoring is enabled
> >>>> +     -bit [1...3]: VINLOW rising threshold
> >>>> +             000 VINOK_f + 50mV
> >>>> +             001 VINOK_f + 100mV
> >>>> +             010 VINOK_f + 150mV
> >>>> +             011 VINOK_f + 200mV
> >>>> +             100 VINOK_f + 250mV
> >>>> +             101 VINOK_f + 300mV
> >>>> +             110 VINOK_f + 350mV
> >>>> +             111 VINOK_f + 400mV
> >>>> +     -bit [4...5]: VINLOW hyst
> >>>> +             00 100mV
> >>>> +             01 200mV
> >>>> +             10 300mV
> >>>> +             11 400mV
> >>>> +     -bit 6: SW_OUT detector is disabled
> >>>> +     -bit 7: SW_IN detector is enabled.
> > This should be part of the Regulator configuration/driver?
> I will also remove this in the next version. I think this could be 
> handled by an hardware monitor future driver.
> >>>> +- st,usb-control-register:
> >>>> +     -bit 3: SW_OUT current limit
> >>>> +             0: 600mA
> >>>> +             1: 1.1A
> >>>> +     -bit 4: VBUS_OTG discharge is enabled
> >>>> +     -bit 5: SW_OUT discharge is enabled
> >>>> +     -bit 6: VBUS_OTG detection is enabled
> >>>> +     -bit 7: BOOST_OVP is disabled
> > This should be part of the USB configuration/driver?
> >
> I will also remove this in the next version. And I'm going to add active 
> discharge ops in the regulator driver.

And unless this device is in any way special, these subsystems should
already have generic bindings to set these hardware configuration
options.

I would say that passing raw register values is not the way to go.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mfd/st,stpmic1.txt b/Documentation/devicetree/bindings/mfd/st,stpmic1.txt
new file mode 100644
index 0000000..bb19cc8
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/st,stpmic1.txt
@@ -0,0 +1,131 @@ 
+* STMicroelectronics STPMIC1 Power Management IC
+
+Required parent device 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: 	Describes the STPMIC1 as an interrupt
+  controller (has its own domain). Interrupt number are the following:
+	/* Interrupt Register 1 (0x50 for latch) */
+	IT_SWOUT_R=0
+	IT_SWOUT_F=1
+	IT_VBUS_OTG_R=2
+	IT_VBUS_OTG_F=3
+	IT_WAKEUP_R=4
+	IT_WAKEUP_F=5
+	IT_PONKEY_R=6
+	IT_PONKEY_F=7
+	/* Interrupt Register 2 (0x51 for latch) */
+	IT_OVP_BOOST=8
+	IT_OCP_BOOST=9
+	IT_OCP_SWOUT=10
+	IT_OCP_OTG=11
+	IT_CURLIM_BUCK4=12
+	IT_CURLIM_BUCK3=13
+	IT_CURLIM_BUCK2=14
+	IT_CURLIM_BUCK1=15
+	/* Interrupt Register 3 (0x52 for latch) */
+	IT_SHORT_SWOUT=16
+	IT_SHORT_SWOTG=17
+	IT_CURLIM_LDO6=18
+	IT_CURLIM_LDO5=19
+	IT_CURLIM_LDO4=20
+	IT_CURLIM_LDO3=21
+	IT_CURLIM_LDO2=22
+	IT_CURLIM_LDO1=23
+	/* Interrupt Register 3 (0x52 for latch) */
+	IT_SWIN_R=24
+	IT_SWIN_F=25
+	IT_RESERVED_1=26
+	IT_RESERVED_2=27
+	IT_VINLOW_R=28
+	IT_VINLOW_F=29
+	IT_TWARN_R=30
+	IT_TWARN_F=31
+
+Optional parent device properties:
+- st,main-control-register:
+	-bit 1: Power cycling will be performed on turn OFF condition
+	-bit 2: PWRCTRL is functional
+	-bit 3: PWRCTRL active high
+- st,pads-pull-register:
+	-bit 1: WAKEUP pull down is not active
+	-bit 2: PWRCTRL pull up is active
+	-bit 3: PWRCTRL pull down is active
+	-bit 4: WAKEUP detector is disabled
+- st,vin-control-register:
+	-bit 0: VINLOW monitoring is enabled
+	-bit [1...3]: VINLOW rising threshold
+		000 VINOK_f + 50mV
+		001 VINOK_f + 100mV
+		010 VINOK_f + 150mV
+		011 VINOK_f + 200mV
+		100 VINOK_f + 250mV
+		101 VINOK_f + 300mV
+		110 VINOK_f + 350mV
+		111 VINOK_f + 400mV
+	-bit [4...5]: VINLOW hyst
+		00 100mV
+		01 200mV
+		10 300mV
+		11 400mV
+	-bit 6: SW_OUT detector is disabled
+	-bit 7: SW_IN detector is enabled.
+- st,usb-control-register:
+	-bit 3: SW_OUT current limit
+		0: 600mA
+		1: 1.1A
+	-bit 4: VBUS_OTG discharge is enabled
+	-bit 5: SW_OUT discharge is enabled
+	-bit 6: VBUS_OTG detection is enabled
+	-bit 7: BOOST_OVP is disabled
+
+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:
+
+pmic: pmic@33 {
+	compatible = "st,stpmic1";
+	reg = <0x33>;
+	interrupt-parent = <&gpioa>;
+	interrupts = <0 2>;
+	st,main-control-register=<0x0c>;
+	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..b2d6c83
--- /dev/null
+++ b/include/dt-bindings/mfd/st,stpmic1.h
@@ -0,0 +1,46 @@ 
+/* 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
+
+#endif /* __DT_BINDINGS_STPMIC1_H__ */