Message ID | ae5d8cf6d276a29432583c1e5241ba7e852036b9.1572606437.git.matti.vaittinen@fi.rohmeurope.com |
---|---|
State | New |
Headers | show |
Series | Support ROHM BD71828 PMIC | expand |
On Fri, Nov 01, 2019 at 01:31:03PM +0200, Matti Vaittinen wrote: > ROHM BD71828 Power management IC integrates 7 buck converters, 7 LDOs, > a real-time clock (RTC), 3 GPO/regulator control pins, HALL input > and a 32.768 kHz clock gate. > > Document the dt bindings drivers are using. > > Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> > --- > > Changes from v2 - my first encounter with yaml :/ > > .../bindings/mfd/rohm,bd71828-pmic.yaml | 249 ++++++++++++++++++ > 1 file changed, 249 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml > > diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml > new file mode 100644 > index 000000000000..b2a88f6e1bb7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml > @@ -0,0 +1,249 @@ > +# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) for new bindings. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/rohm,bd71828-pmic.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: ROHM BD71828 Power Management Integrated Circuit bindings > + > +maintainers: > + - Lee Jones <lee.jones@linaro.org> > + - Rob Herring <robh@kernel.org> > + - Mark Rutland <mark.rutland@arm.com> Don't list me or Mark here. I maintain everything... > + > +description: | > + BD71828GW is a single-chip power management IC for battery-powered portable > + devices. The IC integrates 7 buck converters, 7 LDOs, and a 1500 mA > + single-cell linear charger. Also included is a Coulomb counter, a real-time > + clock (RTC), and a 32.768 kHz clock gate. > + > + The BD71828 RUN state is divided into 4 configurable run-levels named RUN0, > + RUN1, RUN2 and RUN3. Bucks 1, 2, 6 and 7 can be either controlled individually > + via I2C, or some/all of them can be bound to run-levels and controlled as a > + group. If bucks are controlled individually these run-levels are ignored. See > + ../regulator/rohm,bd71828-regulator.yaml for how to define regulator voltages > + for run-levels. Run-levels can be changed by I2C or GPIO depending on PMIC's > + OTP configuration. > + > +properties: > + compatible: > + const: rohm,bd71828 blank line here please > + reg: > + description: > + I2C slave address. > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + description: > + The interrupt line the device is connected to. > + > + gpio-controller: true > + # Indicate BD71828 acts as a GPIO controller. > + > + "#gpio-cells": > + const: 2 > + description: | > + The first cell is the pin number and the second cell is used to specify > + flags. See ../gpio/gpio.txt for more information. > + > + clocks: > + description: > + The parent clock connected to PMIC. How many? maxItems: 1 > + > + "#clock-cells": > + const: 0 > + > + rohm,charger-sense-resistor: > + $ref: "/schemas/types.yaml#/definitions/uint32" > + description: | > + BD71827 and BD71828 have SAR ADC for measuring charging currents. > + External sense resistor (RSENSE in data sheet) should be used. If some > + other but 30MOhm resistor is used the resistance value should be given > + here in Ohms. Standard units need a unit suffix as defined in property-units.txt. So '-ohms' in this case. With that, you can drop $ref because we already define the type. Is there a valid range of values? If so, use minimum/maximum. > + > + regulators: > + $ref: ../regulator/rohm,bd71828-regulator.yaml Not bisectable. These files have to come in this patch or before. > + description: > + List of child nodes that specify the regulators. > + > + leds: > + $ref: ../leds/rohm,leds-bd71828.yaml Filename should match the compatible if possible. > + > + clock-output-names: > + description: > + Should contain name for output clock. Need to document what the name is. Though, with only 1 clock, not that useful. > + > + rohm,dvs-vsel-gpios: > + description: | > + GPIOs used to control PMIC run-levels. Should describe two GPIOs. > + (See run-level control in data-sheet). If this property is omitted but > + some bucks are marked to be controlled by run-levels - then OTP option > + allowing run-level control via I2C is assumed. How many? Needs 'maxItems'. > + > + gpio-reserved-ranges: > + description: | > + Usage of BD71828 GPIO pins can be changed via OTP. This property can be > + used to mark the pins which should not be configured for GPIO. Please see > + the ../gpio/gpio.txt for more information. > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - "#clock-cells" > + - regulators > + - gpio-controller > + - "#gpio-cells" > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/leds/common.h> > + i2c { 'make dt_binding_check' reports an error building this, but I'm not seeing where it is: Error: Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.example.dts:155.36-37 syntax error FATAL ERROR: Unable to parse input tree > + #address-cells = <1>; > + #size-cells = <0>; > + pmic: pmic@4b { > + compatible = "rohm,bd71828"; > + reg = <0x4b>; > + > + interrupt-parent = <&gpio1>; > + interrupts = <29 IRQ_TYPE_LEVEL_LOW>; > + > + clocks = <&osc 0>; > + #clock-cells = <0>; > + clock-output-names = "bd71828-32k-out"; > + > + gpio-controller; > + #gpio-cells = <2>; > + gpio-reserved-ranges = <0 1 2 1>; > + > + rohm,dvs-vsel-gpios = <&gpio1 12 0>, <&gpio1 13 0>; > + rohm,charger-sense-resistor = <10000000>; > + > + regulators { > + buck1: BUCK1 { > + regulator-name = "buck1"; > + regulator-min-microvolt = <500000>; > + regulator-max-microvolt = <2000000>; > + regulator-ramp-delay = <2500>; > + rohm,dvs-runlvl-ctrl; > + rohm,dvs-runlevel0-voltage = <500000>; > + rohm,dvs-runlevel1-voltage = <506250>; > + rohm,dvs-runlevel2-voltage = <512500>; > + rohm,dvs-runlevel3-voltage = <518750>; > + regulator-boot-on; > + }; > + buck2: BUCK2 { > + regulator-name = "buck2"; > + regulator-min-microvolt = <500000>; > + regulator-max-microvolt = <2000000>; > + regulator-ramp-delay = <2500>; > + rohm,dvs-runlvl-ctrl; > + rohm,dvs-runlevel0-voltage = <500000>; > + rohm,dvs-runlevel1-voltage = <506250>; > + rohm,dvs-runlevel2-voltage = <512500>; > + rohm,dvs-runlevel3-voltage = <518750>; > + regulator-boot-on; > + }; > + buck3: BUCK3 { > + regulator-name = "buck3"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <2000000>; > + regulator-boot-on; > + }; > + buck4: BUCK4 { > + regulator-name = "buck4"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + }; > + buck5: BUCK5 { > + regulator-name = "buck5"; > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + buck6: BUCK6 { > + regulator-name = "buck6"; > + regulator-min-microvolt = <500000>; > + regulator-max-microvolt = <2000000>; > + regulator-ramp-delay = <2500>; > + rohm,dvs-runlvl-ctrl; > + rohm,dvs-runlevel0-voltage = <500000>; > + rohm,dvs-runlevel1-voltage = <506250>; > + rohm,dvs-runlevel2-voltage = <512500>; > + rohm,dvs-runlevel3-voltage = <518750>; > + regulator-boot-on; > + }; > + buck7: BUCK7 { > + regulator-name = "buck7"; > + regulator-min-microvolt = <500000>; > + regulator-max-microvolt = <2000000>; > + regulator-ramp-delay = <2500>; > + rohm,dvs-runlvl-ctrl; > + rohm,dvs-runlevel0-voltage = <500000>; > + rohm,dvs-runlevel1-voltage = <506250>; > + rohm,dvs-runlevel2-voltage = <512500>; > + rohm,dvs-runlevel3-voltage = <518750>; > + regulator-boot-on; > + }; > + ldo1: LDO1 { > + regulator-name = "ldo1"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo2: LDO2 { > + regulator-name = "ldo2"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo3: LDO3 { > + regulator-name = "ldo3"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo4: LDO4 { > + regulator-name = "ldo4"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo5: LDO5 { > + regulator-name = "ldo5"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo6: LDO6 { > + regulator-name = "ldo6"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-boot-on; > + }; > + ldo7_reg: LDO7 { > + regulator-name = "ldo7"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + }; > + > + leds { > + compatible = "rohm,bd71828-led"; > + > + led-1 { > + function = LED_FUNCTION_INDICATOR; > + color = <LED_COLOR_ID_GREEN>; > + }; > + led-2 { > + function = LED_FUNCTION_CHARGING; > + color = <LED_COLOR_ID_AMBER>; > + }; > + }; > + }; > + }; > -- > 2.21.0 > > > -- > Matti Vaittinen, Linux device drivers > ROHM Semiconductors, Finland SWDC > Kiviharjunlenkki 1E > 90220 OULU > FINLAND > > ~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~ > Simon says - in Latin please. > ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~ > Thanks to Simon Glass for the translation =]
Hello Again Rob, And thanks again. On Tue, 2019-11-05 at 14:43 -0600, Rob Herring wrote: > On Fri, Nov 01, 2019 at 01:31:03PM +0200, Matti Vaittinen wrote: > > ROHM BD71828 Power management IC integrates 7 buck converters, 7 > > LDOs, > > a real-time clock (RTC), 3 GPO/regulator control pins, HALL input > > and a 32.768 kHz clock gate. > > > > Document the dt bindings drivers are using. > > > > Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> > > --- > > > > Changes from v2 - my first encounter with yaml :/ > > > > .../bindings/mfd/rohm,bd71828-pmic.yaml | 249 > > ++++++++++++++++++ > > 1 file changed, 249 insertions(+) > > create mode 100644 > > Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml > > > > diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71828- > > pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71828- > > pmic.yaml > > new file mode 100644 > > index 000000000000..b2a88f6e1bb7 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml > > @@ -0,0 +1,249 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > for new bindings. Linus Walleij already notified me about this. I just wondered why this is not reflected in: LICENSES/preferred/GPL-2.0 which seems to state: Valid-License-Identifier: GPL-2.0 Valid-License-Identifier: GPL-2.0-only Valid-License-Identifier: GPL-2.0+ Valid-License-Identifier: GPL-2.0-or-later SPDX-URL: https://spdx.org/licenses/GPL-2.0.html Usage-Guide: To use this license in source code, put one of the following SPDX tag/value pairs into a comment according to the placement guidelines in the licensing rules documentation. For 'GNU General Public License (GPL) version 2 only' use: SPDX-License-Identifier: GPL-2.0 or SPDX-License-Identifier: GPL-2.0-only https://elixir.bootlin.com/linux/v5.4-rc5/source/LICENSES/preferred/GPL-2.0 I'll change the SPDX for new files for next version. > > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mfd/rohm,bd71828-pmic.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: ROHM BD71828 Power Management Integrated Circuit bindings > > + > > +maintainers: > > + - Lee Jones <lee.jones@linaro.org> > > + - Rob Herring <robh@kernel.org> > > + - Mark Rutland <mark.rutland@arm.com> > > Don't list me or Mark here. I maintain everything... Ok. So I'll add myself then. Although I am by no means an expert what comes to binding schemas. I know the device and driver though. > > + > > + clock-output-names: > > + description: > > + Should contain name for output clock. > > Need to document what the name is. Though, with only 1 clock, not > that > useful. Hmmm. I thought this would depend on rest of the system's DT. Why should it be same on each board? (I can drop this out though). > > + - | > > + #include <dt-bindings/interrupt-controller/irq.h> > > + #include <dt-bindings/leds/common.h> > > + i2c { > > 'make dt_binding_check' reports an error building this, but I'm not > seeing where it is: > > Error: Documentation/devicetree/bindings/mfd/rohm,bd71828- > pmic.example.dts:155.36-37 syntax error > FATAL ERROR: Unable to parse input tree I guess it is the LED function definition. Those function/colour bindings were only added in 5.4-rc1. Do you have them defined in your build environment at /include/dt-bindings/leds/common.h? Rest of the comments are clear to me :) Br, Matti Vaittinen > -- > > Matti Vaittinen, Linux device drivers > > ROHM Semiconductors, Finland SWDC > > Kiviharjunlenkki 1E > > 90220 OULU > > FINLAND > > > > ~~~ "I don't think so," said Rene Descartes. Just then he vanished > > ~~~ > > Simon says - in Latin please. > > ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~ > > Thanks to Simon Glass for the translation =]
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml new file mode 100644 index 000000000000..b2a88f6e1bb7 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml @@ -0,0 +1,249 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/rohm,bd71828-pmic.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: ROHM BD71828 Power Management Integrated Circuit bindings + +maintainers: + - Lee Jones <lee.jones@linaro.org> + - Rob Herring <robh@kernel.org> + - Mark Rutland <mark.rutland@arm.com> + +description: | + BD71828GW is a single-chip power management IC for battery-powered portable + devices. The IC integrates 7 buck converters, 7 LDOs, and a 1500 mA + single-cell linear charger. Also included is a Coulomb counter, a real-time + clock (RTC), and a 32.768 kHz clock gate. + + The BD71828 RUN state is divided into 4 configurable run-levels named RUN0, + RUN1, RUN2 and RUN3. Bucks 1, 2, 6 and 7 can be either controlled individually + via I2C, or some/all of them can be bound to run-levels and controlled as a + group. If bucks are controlled individually these run-levels are ignored. See + ../regulator/rohm,bd71828-regulator.yaml for how to define regulator voltages + for run-levels. Run-levels can be changed by I2C or GPIO depending on PMIC's + OTP configuration. + +properties: + compatible: + const: rohm,bd71828 + reg: + description: + I2C slave address. + maxItems: 1 + + interrupts: + maxItems: 1 + description: + The interrupt line the device is connected to. + + gpio-controller: true + # Indicate BD71828 acts as a GPIO controller. + + "#gpio-cells": + const: 2 + description: | + The first cell is the pin number and the second cell is used to specify + flags. See ../gpio/gpio.txt for more information. + + clocks: + description: + The parent clock connected to PMIC. + + "#clock-cells": + const: 0 + + rohm,charger-sense-resistor: + $ref: "/schemas/types.yaml#/definitions/uint32" + description: | + BD71827 and BD71828 have SAR ADC for measuring charging currents. + External sense resistor (RSENSE in data sheet) should be used. If some + other but 30MOhm resistor is used the resistance value should be given + here in Ohms. + + regulators: + $ref: ../regulator/rohm,bd71828-regulator.yaml + description: + List of child nodes that specify the regulators. + + leds: + $ref: ../leds/rohm,leds-bd71828.yaml + + clock-output-names: + description: + Should contain name for output clock. + + rohm,dvs-vsel-gpios: + description: | + GPIOs used to control PMIC run-levels. Should describe two GPIOs. + (See run-level control in data-sheet). If this property is omitted but + some bucks are marked to be controlled by run-levels - then OTP option + allowing run-level control via I2C is assumed. + + gpio-reserved-ranges: + description: | + Usage of BD71828 GPIO pins can be changed via OTP. This property can be + used to mark the pins which should not be configured for GPIO. Please see + the ../gpio/gpio.txt for more information. + +required: + - compatible + - reg + - interrupts + - clocks + - "#clock-cells" + - regulators + - gpio-controller + - "#gpio-cells" + +examples: + - | + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/leds/common.h> + i2c { + #address-cells = <1>; + #size-cells = <0>; + pmic: pmic@4b { + compatible = "rohm,bd71828"; + reg = <0x4b>; + + interrupt-parent = <&gpio1>; + interrupts = <29 IRQ_TYPE_LEVEL_LOW>; + + clocks = <&osc 0>; + #clock-cells = <0>; + clock-output-names = "bd71828-32k-out"; + + gpio-controller; + #gpio-cells = <2>; + gpio-reserved-ranges = <0 1 2 1>; + + rohm,dvs-vsel-gpios = <&gpio1 12 0>, <&gpio1 13 0>; + rohm,charger-sense-resistor = <10000000>; + + regulators { + buck1: BUCK1 { + regulator-name = "buck1"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <2000000>; + regulator-ramp-delay = <2500>; + rohm,dvs-runlvl-ctrl; + rohm,dvs-runlevel0-voltage = <500000>; + rohm,dvs-runlevel1-voltage = <506250>; + rohm,dvs-runlevel2-voltage = <512500>; + rohm,dvs-runlevel3-voltage = <518750>; + regulator-boot-on; + }; + buck2: BUCK2 { + regulator-name = "buck2"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <2000000>; + regulator-ramp-delay = <2500>; + rohm,dvs-runlvl-ctrl; + rohm,dvs-runlevel0-voltage = <500000>; + rohm,dvs-runlevel1-voltage = <506250>; + rohm,dvs-runlevel2-voltage = <512500>; + rohm,dvs-runlevel3-voltage = <518750>; + regulator-boot-on; + }; + buck3: BUCK3 { + regulator-name = "buck3"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <2000000>; + regulator-boot-on; + }; + buck4: BUCK4 { + regulator-name = "buck4"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + }; + buck5: BUCK5 { + regulator-name = "buck5"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + buck6: BUCK6 { + regulator-name = "buck6"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <2000000>; + regulator-ramp-delay = <2500>; + rohm,dvs-runlvl-ctrl; + rohm,dvs-runlevel0-voltage = <500000>; + rohm,dvs-runlevel1-voltage = <506250>; + rohm,dvs-runlevel2-voltage = <512500>; + rohm,dvs-runlevel3-voltage = <518750>; + regulator-boot-on; + }; + buck7: BUCK7 { + regulator-name = "buck7"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <2000000>; + regulator-ramp-delay = <2500>; + rohm,dvs-runlvl-ctrl; + rohm,dvs-runlevel0-voltage = <500000>; + rohm,dvs-runlevel1-voltage = <506250>; + rohm,dvs-runlevel2-voltage = <512500>; + rohm,dvs-runlevel3-voltage = <518750>; + regulator-boot-on; + }; + ldo1: LDO1 { + regulator-name = "ldo1"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + ldo2: LDO2 { + regulator-name = "ldo2"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + ldo3: LDO3 { + regulator-name = "ldo3"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + ldo4: LDO4 { + regulator-name = "ldo4"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + ldo5: LDO5 { + regulator-name = "ldo5"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + ldo6: LDO6 { + regulator-name = "ldo6"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + }; + ldo7_reg: LDO7 { + regulator-name = "ldo7"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + }; + + leds { + compatible = "rohm,bd71828-led"; + + led-1 { + function = LED_FUNCTION_INDICATOR; + color = <LED_COLOR_ID_GREEN>; + }; + led-2 { + function = LED_FUNCTION_CHARGING; + color = <LED_COLOR_ID_AMBER>; + }; + }; + }; + };
ROHM BD71828 Power management IC integrates 7 buck converters, 7 LDOs, a real-time clock (RTC), 3 GPO/regulator control pins, HALL input and a 32.768 kHz clock gate. Document the dt bindings drivers are using. Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> --- Changes from v2 - my first encounter with yaml :/ .../bindings/mfd/rohm,bd71828-pmic.yaml | 249 ++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml