RE: [PATCH] mfd: DT bindings for the palmas family MFD

From: J, KEERTHY
Date: Tue Jun 04 2013 - 01:28:54 EST


Hello Lee Jones,

Thanks for the quick review.

> -----Original Message-----
> From: Lee Jones [mailto:lee.jones@xxxxxxxxxx]
> Sent: Monday, June 03, 2013 7:49 PM
> To: J, KEERTHY
> Cc: linux-kernel@xxxxxxxxxxxxxxx; linux-doc@xxxxxxxxxxxxxxx;
> devicetree-discuss@xxxxxxxxxxxxxxxx; swarren@xxxxxxxxxxxxx;
> broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx; rob.herring@xxxxxxxxxxx;
> rob@xxxxxxxxxxx; mturquette@xxxxxxxxxx; sameo@xxxxxxxxxxxxxxx;
> wim@xxxxxxxxx; lgirdwood@xxxxxxxxx; gg@xxxxxxxxxxxxxxx; Kristo, Tero;
> Ian Lartey
> Subject: Re: [PATCH] mfd: DT bindings for the palmas family MFD
>
> On Mon, 03 Jun 2013, J Keerthy wrote:
>
> > From: Graeme Gregory <gg@xxxxxxxxxxxxxxx>
> >
> > Add the various binding files for the palmas family of chips. There
> is
> > a top level MFD binding then a seperate binding for regulators IP
> blocks on chips.
> >
> > Signed-off-by: Graeme Gregory <gg@xxxxxxxxxxxxxxx>
> > Signed-off-by: J Keerthy <j-keerthy@xxxxxx>
> > Signed-off-by: Ian Lartey <ian@xxxxxxxxxxxxxxx>
> > ---
> > Documentation/devicetree/bindings/mfd/palmas.txt | 49 ++++++
> > .../devicetree/bindings/regulator/palmas-pmic.txt | 165
> > ++++++++++++++++++++
> > 2 files changed, 214 insertions(+), 0 deletions(-) create mode
> > 100644 Documentation/devicetree/bindings/mfd/palmas.txt
> > create mode 100644
> > Documentation/devicetree/bindings/regulator/palmas-pmic.txt
> >
> > diff --git a/Documentation/devicetree/bindings/mfd/palmas.txt
> > b/Documentation/devicetree/bindings/mfd/palmas.txt
> > new file mode 100644
> > index 0000000..c6c5e78
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/palmas.txt
> > @@ -0,0 +1,49 @@
> > +* palmas device tree bindings
> > +
> > +The TI palmas family current members :-
> > +twl6035 (palmas)
> > +twl6037 (palmas)
> > +tps65913 (palmas)
> > +tps65914 (palmas)
> > +
> > +Required properties:
> > +- compatible : Should be from the list
> > + ti,twl6035
> > + ti,twl6036
> > + ti,twl6037
> > + ti,tps65913
> > + ti,tps65914
> > + ti,tps80036
> > +and also the generic series names
> > + ti,palmas
> > +- interrupt-controller : palmas has its own internal IRQs
> > +- #interrupt-cells : should be set to 2 for IRQ number and flags
> > + The first cell is the IRQ number.
> > + The second cell is the flags, encoded as the trigger masks from
> > + Documentation/devicetree/bindings/interrupts.txt
> > +- interrupt-parent : The parent interrupt controller.
> > +
> > +Optional properties:
> > + ti,mux_padX : set the pad register X (1-2) to the correct muxing
> for the
> > + hardware, if not set will use muxing in OTP.
> > +
> > +Example:
> > +
> > +palmas {
>
> Should this be 'palmas@48 {', as it has an address?
>
> > + compatible = "ti,twl6035", "ti,palmas";
> > + reg = <0x48>
> > + interrupt-parent = <&intc>;
> > + interrupt-controller;
> > + #interrupt-cells = <2>;
> > +
> > + ti,mux-pad1 = <0>;
> > + ti,mux-pad2 = <0>;
> > +
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + pmic {
> > + compatible = "ti,twl6035-pmic", "ti,palmas-pmic";
> > + ....
> > + };
> > +}
> > diff --git
> > a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
> > b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
> > new file mode 100644
> > index 0000000..f7bbc3e
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt
> > @@ -0,0 +1,165 @@
> > +* palmas regulator IP block devicetree bindings
> > +
> > +Required properties:
> > +- compatible : Should be from the list
> > + ti,twl6035-pmic
> > + ti,twl6036-pmic
> > + ti,twl6037-pmic
> > + ti,tps65913-pmic
> > + ti,tps65914-pmic
> > +and also the generic series names
> > + ti,palmas-pmic
> > +
> > +Optional properties:
> > +- ti,ldo6-vibrator : ldo6 is in vibrator mode
> > +
> > +Optional nodes:
> > +- regulators : should contain the constrains and init information
> for the
> > + regulators. It should contain a subnode per regulator from
> the
> > + list.
> > + For ti,palmas-pmic - smps12, smps123, smps3 depending on
> OTP,
> > + smps45, smps457, smps7 depending on varient, smps6,
> smps[8-10],
> > + ldo[1-9], ldoln, ldousb
> > +
> > + optional chip specific regulator fields :-
> > + ti,warm-reset - maintain voltage during warm
> reset(boolean)
>
> Pushing the boat out a bit here, but is it possible to reuse
> 'regulator-always-on' for this?

It is getting used below.

>
> > + ti,roof-floor - control voltage selection by pin(boolean)
>
> Is this the same as a GPIO regulator?

This is not a GPIO Regulator.

>
> If so, you might not need to add superfluous vendor specific
> properties.
>
> See: Documentation/devicetree/bindings/regulator/gpio-regulator.txt
>
> > + ti,sleep-mode - mode to adopt in pmic sleep 0 - off, 1 -
> auto,
> > + 2 - eco, 3 - forced pwm
>
> I've seen lots of sleep-mode properties, can't we define a generic one?

HW specific modes.

>
> > + ti,tstep - slope control 0 - Jump, 1 10mV/us, 2 5mV/us, 3
> 2.5mV/us
> > + ti,smps-range - OTP has the wrong range set for the
> hardware so override
> > + 0 - low range, 1 - high range
> > +
> > +Example:
> > +
> > +pmic@0 {
>
> May as well drop the '@0' here unless it's meaningful.

Ok.

>
> > + compatible = "ti,twl6035-pmic", "ti,palmas-pmic";
> > + interrupt-parent = <&palmas>;
> > + interrupts = <14 0>;
>
> Use the defines found in:
>
> arch/arm/boot/dts/include/dt-bindings/interrupt-controller/irq.h

Ok. I will use the defines in the irq.h file.

>
> > + interrupt-name = "short-irq";
> > +
> > + ti,ldo6_vibrator;
>
> DT doesn't like '_'s, use a '-'s instead.
>

Oops my bad.. I will change this.

> > + regulators {
> > + smps12_reg : smps12 {
> > + regulator-name = "smps12";
> > + regulator-min-microvolt = < 600000>;
> > + regulator-max-microvolt = <1500000>;
> > + regulator-always-on;
> > + regulator-boot-on;
> > + ti,warm-reset;
>
> Hmm.. I see you're using 'regulator-always-on' and 'ti,warm-reset'
> here. Is there every a case where there is one without the other?

I am not sure of a case. I see that "warm-reset" property is used
Inside the regulator driver. This property is again HW specific
And it represents the warm reset sensitivity. If this 1 then voltage
Values during warm-reset are maintained if not then default OTP values
Are re-loaded during warm-reset.

>
> > + ti,roof-floor;
> > + ti,mode-sleep = <0>;
> > + ti,tstep = <0>;
> > + ti,smps-range = <1>;
> > + };
> > +
> > + smps3_reg: smps3 {
> > + regulator-name = "smps3";
> > + regulator-min-microvolt = < 600000>;
> > + regulator-max-microvolt = <1310000>;
> > + };
>
> Wow, this is a big example.
>
> I don't think you need to provide more than 1 or 2 of these _reg nodes.

Ok. The intent here was to expose one example with a set of all the regulators
And their operating range of voltages.

Couple of files already have such examples:

Documentation/devicetree/bindings/regulator/tps65090.txt
Documentation/devicetree/bindings/regulator/tps65217.txt

I can knock off all of them and retain couple of them
if this is not needed.

>
> > + smps45_reg: smps45 {
> > + regulator-name = "smps45";
> > + regulator-min-microvolt = < 600000>;
> > + regulator-max-microvolt = <1310000>;
> > + };
> > +
> > + smps6_reg: smps6 {
> > + regulator-name = "smps6";
> > + regulator-min-microvolt = <1200000>;
> > + regulator-max-microvolt = <1200000>;
> > + };
> > +
> > + smps7_reg: smps7 {
> > + regulator-name = "smps7";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + };
> > +
> > + smps8_reg: smps8 {
> > + regulator-name = "smps8";
> > + regulator-min-microvolt = < 600000>;
> > + regulator-max-microvolt = <1310000>;
> > + };
> > +
> > + smps9_reg: smps9 {
> > + regulator-name = "smps9";
> > + regulator-min-microvolt = <2100000>;
> > + regulator-max-microvolt = <2100000>;
> > + };
> > +
> > + smps10_reg: smps10 {
> > + regulator-name = "smps10";
> > + regulator-min-microvolt = <5000000>;
> > + regulator-max-microvolt = <5000000>;
> > + };
> > +
> > + ldo1_reg: ldo1 {
> > + regulator-name = "ldo1";
> > + regulator-min-microvolt = <2800000>;
> > + regulator-max-microvolt = <2800000>;
> > + };
> > +
> > + ldo2_reg: ldo2 {
> > + regulator-name = "ldo2";
> > + regulator-min-microvolt = <2900000>;
> > + regulator-max-microvolt = <2900000>;
> > + };
> > +
> > + ldo3_reg: ldo3 {
> > + regulator-name = "ldo3";
> > + regulator-min-microvolt = <3000000>;
> > + regulator-max-microvolt = <3000000>;
> > + };
> > +
> > + ldo4_reg: ldo4 {
> > + regulator-name = "ldo4";
> > + regulator-min-microvolt = <2200000>;
> > + regulator-max-microvolt = <2200000>;
> > + };
> > +
> > + ldo5_reg: ldo5 {
> > + regulator-name = "ldo5";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + };
> > +
> > + ldo6_reg: ldo6 {
> > + regulator-name = "ldo6";
> > + regulator-min-microvolt = <1500000>;
> > + regulator-max-microvolt = <1500000>;
> > + };
> > +
> > + ldo7_reg: ldo7 {
> > + regulator-name = "ldo7";
> > + regulator-min-microvolt = <1500000>;
> > + regulator-max-microvolt = <1500000>;
> > + };
> > +
> > + ldo8_reg: ldo8 {
> > + regulator-name = "ldo8";
> > + regulator-min-microvolt = <1500000>;
> > + regulator-max-microvolt = <1500000>;
> > + };
> > +
> > + ldo9_reg: ldo9 {
> > + regulator-name = "ldo9";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + };
> > +
> > + ldoln_reg: ldoln {
> > + regulator-name = "ldoln";
> > + regulator-min-microvolt = <1800000>;
> > + regulator-max-microvolt = <1800000>;
> > + };
> > +
> > + ldousb_reg: ldousb {
> > + regulator-name = "ldousb";
> > + regulator-min-microvolt = <3250000>;
> > + regulator-max-microvolt = <3250000>;
> > + };
> > + };
> > +};
>
> --
> Lee Jones
> Linaro ST-Ericsson Landing Team Lead
> Linaro.org â Open source software for ARM SoCs Follow Linaro: Facebook
> | Twitter | Blog

Regards,
Keerthy
èº{.nÇ+‰·Ÿ®‰­†+%ŠËlzwm…ébëæìr¸›zX§»®w¥Š{ayºÊÚë,j­¢f£¢·hš‹àz¹®w¥¢¸ ¢·¦j:+v‰¨ŠwèjØm¶Ÿÿ¾«‘êçzZ+ƒùšŽŠÝj"ú!¶iO•æ¬z·švØ^¶m§ÿðà nÆàþY&—