[RFC 1/5] dt-bindings: mfd: ti,bq25703a: Add TI BQ25703A Charger

Chris Morgan macromorgan at hotmail.com
Fri Aug 30 13:52:04 PDT 2024


On Fri, Aug 30, 2024 at 11:30:42AM -0500, Rob Herring wrote:
> On Thu, Aug 29, 2024 at 04:30:58PM -0500, Chris Morgan wrote:
> > From: Chris Morgan <macromorgan at hotmail.com>
> > 
> > Document the Texas instruments BQ25703 series of charger managers/
> > buck/boost regulators.
> > 
> > Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> > ---
> >  .../devicetree/bindings/mfd/ti,bq25703a.yaml  | 143 ++++++++++++++++++
> >  1 file changed, 143 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/mfd/ti,bq25703a.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/mfd/ti,bq25703a.yaml b/Documentation/devicetree/bindings/mfd/ti,bq25703a.yaml
> > new file mode 100644
> > index 000000000000..e555aa60f9ad
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/ti,bq25703a.yaml
> > @@ -0,0 +1,143 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/mfd/ti,bq25703a.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: BQ25703 Charger Manager/Buck/Boost Converter
> 
> BQ25703A?

I'm not entirely sure on the nomenclature. I know for sure I have a
BQ25703A in my device, but I don't know if the A is important or not.
I'll just drop it until I know for sure to alleviate confusion.

> 
> > +
> > +maintainers:
> > +  - Chris Morgan <macromorgan at hotmail.com>
> > +
> > +properties:
> > +  compatible:
> > +    const: ti,bq25703a
> > +
> > +  reg:
> > +    const: 0x6b
> > +    description: I2C slave address
> 
> Drop description.

Acknowledged.

> 
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  power-supplies:
> > +    description:
> > +      phandle of the power supply that provides input power
> > +    $ref: /schemas/types.yaml#/definitions/phandle
> 
> Already has a type. You need a reference to power-supply.yaml at the 
> top level and 'maxItems: 1' here.

Gotcha, thank you.

> 
> > +
> > +  ti,charge-current:
> > +    description:
> > +      maximum current to apply to charging the battery
> > +    minimum: 0
> > +    maximum: 8128000
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> 
> I guess this is copied from other TI parts, but really this should move 
> to a property with a unit suffix. Or these shared properties moved to a 
> shared schema so we aren't redefining the type multiple times.
> 
> Same for the others here.

Correct, I tried to reuse the same TI specific properties. I suppose I
could also eliminate ti,charge-current and ti,max-charge-voltage, and
then just require a phandle to a simple-battery node which contains
those two values in a vendor independent form. What do you think?

ti,current-limit and ti,minimum-system-voltage though are other
possible questions I have. Basically I could also create a vsys
regulator that represents the vsys coming off this device too (I
currently omit this entirely). This regulator wouldn't be programable
but would report the existing input current and input voltage for
the system, which in my case I'm pretty sure is stepped down to 5v
or less and then fed into an RK806 PMIC (I lack the schematics so
I don't know for sure). Of course if I did that then I'd have a
valid reason to add a "regulators" node since I'd have more than one
regulator.

> 
> > +
> > +  ti,current-limit:
> > +    description:
> > +      maximum total input current allowed
> > +    minimum: 50000
> > +    maximum: 6400000
> > +    default: 3250000
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +
> > +  ti,max-charge-voltage:
> > +    description:
> > +      maximum voltage to apply to charging the battery
> > +    minimum: 1024000
> > +    maximum: 19200000
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +
> > +  ti,minimum-sys-voltage:
> > +    description:
> > +      minimum system voltage while on battery power, with default value
> > +      depending based on cell configuration
> > +    minimum: 1024000
> > +    maximum: 16128000
> > +    default:
> > +      enum: [3584000, 6144000, 9216000, 16128000]
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +
> > +  regulators:
> > +    type: object
> > +    additionalProperties: false
> > +    description:
> > +      Boost converter regulator output of bq257xx
> 
> Doesn't this apply to "usb-otg-vbus"?
> 
> Really, only one regulator, so you don't need a container node.
> 

It does, that's a mistake on my part. And see above; I could add a
regulator for the vsys (even though you wouldn't be able to set the
voltage or current).

> > +
> > +    properties:
> > +      "usb-otg-vbus":
> 
> Don't need quotes.

Acknowledged.

> 
> > +        type: object
> > +        $ref: /schemas/regulator/regulator.yaml
> > +
> > +        properties:
> > +          regulator-name: true
> > +          regulator-min-microamp:
> > +            minimum: 0
> > +            maximum: 6350000
> > +          regulator-max-microamp:
> > +            minimum: 0
> > +            maximum: 6350000
> > +          regulator-min-microvolt:
> > +            minimum: 4480000
> > +            maximum: 20800000
> > +          regulator-max-microvolt:
> > +            minimum: 4480000
> > +            maximum: 20800000
> > +          enable-gpios:
> > +            description:
> > +              The BQ25703 may require both a register write and a GPIO
> > +              toggle to enable the boost regulator.
> > +
> > +        additionalProperties: true
> 
> Nope.
> 

Acknowledged.

> > +
> > +        required:
> > +          - regulator-name
> > +          - regulator-min-microamp
> > +          - regulator-max-microamp
> > +          - regulator-min-microvolt
> > +          - regulator-max-microvolt
> > +
> > +additionalProperties: false
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - power-supplies
> > +  - ti,charge-current
> > +  - ti,current-limit
> > +  - ti,max-charge-voltage
> > +  - ti,minimum-sys-voltage
> > +
> > +examples:
> > +  - |
> > +    #include <dt-bindings/gpio/gpio.h>
> > +    #include <dt-bindings/interrupt-controller/irq.h>
> > +    #include <dt-bindings/pinctrl/rockchip.h>
> > +    i2c {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        bq25703: bq25703 at 6b {
> 
> charger at 6b
> 

Acknowledged.

> > +            compatible = "ti,bq25703a";
> > +            reg = <0x6b>;
> > +            interrupt-parent = <&gpio0>;
> > +            interrupts = <RK_PD5 IRQ_TYPE_LEVEL_LOW>;
> > +            power-supplies = <&fusb302>;
> > +            ti,charge-current = <2500000>;
> > +            ti,current-limit = <5000000>;
> > +            ti,max-charge-voltage = <8750000>;
> > +            ti,minimum-sys-voltage = <7400000>;
> > +
> > +            regulators {
> > +                usb_otg_vbus: usb-otg-vbus {
> > +                    enable-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>;
> > +                    regulator-max-microamp = <960000>;
> > +                    regulator-max-microvolt = <5088000>;
> > +                    regulator-min-microamp = <512000>;
> > +                    regulator-min-microvolt = <4992000>;
> > +                    regulator-name = "usb_otg_vbus";
> > +                };
> > +            };
> > +        };
> > +    };
> > +
> > +...
> > -- 
> > 2.34.1
> > 

Thank you for your feedback,
Chris



More information about the Linux-rockchip mailing list