diff mbox

[v2,2/5] devicetree: power: Add docs for TI BQ24190 battery charger

Message ID 20170807195420.20767-3-liam@networkimprov.net
State Changes Requested, archived
Headers show

Commit Message

Liam Breck Aug. 7, 2017, 7:54 p.m. UTC
From: Liam Breck <kernel@networkimprov.net>

Document monitored-battery and ti,system-minimum-microvolt properties.

Cc: Rob Herring <robh@kernel.org>
Cc: devicetree@vger.kernel.org
Signed-off-by: Liam Breck <kernel@networkimprov.net>
---
 .../devicetree/bindings/power/supply/bq24190.txt   | 49 ++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power/supply/bq24190.txt

Comments

Rob Herring (Arm) Aug. 11, 2017, 2:50 a.m. UTC | #1
On Mon, Aug 07, 2017 at 12:54:17PM -0700, Liam Breck wrote:
> From: Liam Breck <kernel@networkimprov.net>
> 
> Document monitored-battery and ti,system-minimum-microvolt properties.
> 
> Cc: Rob Herring <robh@kernel.org>
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Liam Breck <kernel@networkimprov.net>
> ---
>  .../devicetree/bindings/power/supply/bq24190.txt   | 49 ++++++++++++++++++++++
>  1 file changed, 49 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq24190.txt
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/bq24190.txt b/Documentation/devicetree/bindings/power/supply/bq24190.txt
> new file mode 100644
> index 00000000..82a1c842
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/bq24190.txt
> @@ -0,0 +1,49 @@
> +TI BQ24190 Li-Ion Battery Charger
> +
> +Required properties:
> +- compatible: contains one of the following:
> +    * "ti,bq24190"
> +    * "ti,bq24192i"
> +- reg: integer, I2C address of the charger.
> +- interrupts[-extended]: configuration for charger INT pin.
> +
> +Optional properties:
> +- monitored-battery: phandle of battery characteristics devicetree node
> +    The charger uses the following battery properties:
> +    + precharge-current-microamp: maximum charge current during precharge
> +      phase (typically 20% of battery capacity).
> +    + charge-term-current-microamp: a charge cycle terminates when the
> +      battery voltage is above recharge threshold, and the current is below
> +      this setting (typically 10% of battery capacity).
> +    See Documentation/devicetree/bindings/power/supply/battery.txt
> +- ti,system-minimum-microvolt: when power is connected and the battery is below
> +    minimum system voltage, the system will be regulated above this setting.
> +
> +Other features:
> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.

Why doesn't the charger driver control this?

> +
> +Example:
> +
> +	bat: battery {
> +		compatible = "simple-battery";
> +		precharge-current-microamp = <256000>;
> +		charge-term-current-microamp = <128000>;
> +		// etc.
> +	};
> +
> +	bq24190: charger@6a {
> +		compatible = "ti,bq24190";
> +		reg = <0x6a>;
> +		interrupts-extended = <&gpiochip 10 IRQ_TYPE_EDGE_FALLING>;
> +		monitored-battery = <&bat>;
> +		ti,system-minimum-microvolt = <3200000>;
> +	};
> +
> +	&twl_gpio {
> +		otg {
> +			gpio-hog;
> +			gpios = <6 0>;
> +			output-high;
> +			line-name = "otg-gpio";
> +		};
> +	};
> -- 
> 2.13.2
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Liam Breck Aug. 11, 2017, 9:57 p.m. UTC | #2
Hi Rob,

On Thu, Aug 10, 2017 at 7:50 PM, Rob Herring <robh@kernel.org> wrote:
> On Mon, Aug 07, 2017 at 12:54:17PM -0700, Liam Breck wrote:
>> From: Liam Breck <kernel@networkimprov.net>
>>
>> Document monitored-battery and ti,system-minimum-microvolt properties.
>>
>> Cc: Rob Herring <robh@kernel.org>
>> Cc: devicetree@vger.kernel.org
>> Signed-off-by: Liam Breck <kernel@networkimprov.net>
>> ---
>>  .../devicetree/bindings/power/supply/bq24190.txt   | 49 ++++++++++++++++++++++
>>  1 file changed, 49 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq24190.txt
>>
>> diff --git a/Documentation/devicetree/bindings/power/supply/bq24190.txt b/Documentation/devicetree/bindings/power/supply/bq24190.txt
>> new file mode 100644
>> index 00000000..82a1c842
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/power/supply/bq24190.txt
>> @@ -0,0 +1,49 @@
>> +TI BQ24190 Li-Ion Battery Charger
>> +
>> +Required properties:
>> +- compatible: contains one of the following:
>> +    * "ti,bq24190"
>> +    * "ti,bq24192i"
>> +- reg: integer, I2C address of the charger.
>> +- interrupts[-extended]: configuration for charger INT pin.
>> +
>> +Optional properties:
>> +- monitored-battery: phandle of battery characteristics devicetree node
>> +    The charger uses the following battery properties:
>> +    + precharge-current-microamp: maximum charge current during precharge
>> +      phase (typically 20% of battery capacity).
>> +    + charge-term-current-microamp: a charge cycle terminates when the
>> +      battery voltage is above recharge threshold, and the current is below
>> +      this setting (typically 10% of battery capacity).
>> +    See Documentation/devicetree/bindings/power/supply/battery.txt
>> +- ti,system-minimum-microvolt: when power is connected and the battery is below
>> +    minimum system voltage, the system will be regulated above this setting.
>> +
>> +Other features:
>> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
>
> Why doesn't the charger driver control this?

This pin/gpio has to be high when USB is plugged in to make the
charger chip negotiate 500mA from a SDP port. It should generally be
configured that way even if the driver is not loaded, as the chip does
not require a driver to function. Some boards may do that with a
pull-up. Also the user may want to change this via sysfs and not have
the driver "fix" it.

>> +
>> +Example:
>> +
>> +     bat: battery {
>> +             compatible = "simple-battery";
>> +             precharge-current-microamp = <256000>;
>> +             charge-term-current-microamp = <128000>;
>> +             // etc.
>> +     };
>> +
>> +     bq24190: charger@6a {
>> +             compatible = "ti,bq24190";
>> +             reg = <0x6a>;
>> +             interrupts-extended = <&gpiochip 10 IRQ_TYPE_EDGE_FALLING>;
>> +             monitored-battery = <&bat>;
>> +             ti,system-minimum-microvolt = <3200000>;
>> +     };
>> +
>> +     &twl_gpio {
>> +             otg {
>> +                     gpio-hog;
>> +                     gpios = <6 0>;
>> +                     output-high;
>> +                     line-name = "otg-gpio";
>> +             };
>> +     };
>> --
>> 2.13.2
>>
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sebastian Reichel Aug. 12, 2017, 4:42 p.m. UTC | #3
Hi,

On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
> On Thu, Aug 10, 2017 at 7:50 PM, Rob Herring <robh@kernel.org> wrote:
> > On Mon, Aug 07, 2017 at 12:54:17PM -0700, Liam Breck wrote:
> >> From: Liam Breck <kernel@networkimprov.net>
> >>
> >> Document monitored-battery and ti,system-minimum-microvolt properties.
> >>
> >> Cc: Rob Herring <robh@kernel.org>
> >> Cc: devicetree@vger.kernel.org
> >> Signed-off-by: Liam Breck <kernel@networkimprov.net>
> >> ---
> >>  .../devicetree/bindings/power/supply/bq24190.txt   | 49 ++++++++++++++++++++++
> >>  1 file changed, 49 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq24190.txt
> >>
> >> diff --git a/Documentation/devicetree/bindings/power/supply/bq24190.txt b/Documentation/devicetree/bindings/power/supply/bq24190.txt
> >> new file mode 100644
> >> index 00000000..82a1c842
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/power/supply/bq24190.txt
> >> @@ -0,0 +1,49 @@
> >> +TI BQ24190 Li-Ion Battery Charger
> >> +
> >> +Required properties:
> >> +- compatible: contains one of the following:
> >> +    * "ti,bq24190"
> >> +    * "ti,bq24192i"
> >> +- reg: integer, I2C address of the charger.
> >> +- interrupts[-extended]: configuration for charger INT pin.
> >> +
> >> +Optional properties:
> >> +- monitored-battery: phandle of battery characteristics devicetree node
> >> +    The charger uses the following battery properties:
> >> +    + precharge-current-microamp: maximum charge current during precharge
> >> +      phase (typically 20% of battery capacity).
> >> +    + charge-term-current-microamp: a charge cycle terminates when the
> >> +      battery voltage is above recharge threshold, and the current is below
> >> +      this setting (typically 10% of battery capacity).
> >> +    See Documentation/devicetree/bindings/power/supply/battery.txt
> >> +- ti,system-minimum-microvolt: when power is connected and the battery is below
> >> +    minimum system voltage, the system will be regulated above this setting.
> >> +
> >> +Other features:
> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
> >
> > Why doesn't the charger driver control this?
> 
> This pin/gpio has to be high when USB is plugged in to make the
> charger chip negotiate 500mA from a SDP port. It should generally be
> configured that way even if the driver is not loaded, as the chip does
> not require a driver to function. Some boards may do that with a
> pull-up. Also the user may want to change this via sysfs and not have
> the driver "fix" it.

drivers/power/supply/qcom_smbb.c exposes the otg feature as
regulator. I think in this case it could be exposed as
gpio-regulator.

-- Sebastian
Liam Breck Aug. 12, 2017, 7 p.m. UTC | #4
Hi Sebastian,


On Sat, Aug 12, 2017 at 9:42 AM, Sebastian Reichel <sre@kernel.org> wrote:
> Hi,
>
> On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
>> On Thu, Aug 10, 2017 at 7:50 PM, Rob Herring <robh@kernel.org> wrote:
>> > On Mon, Aug 07, 2017 at 12:54:17PM -0700, Liam Breck wrote:
>> >> From: Liam Breck <kernel@networkimprov.net>
>> >>
>> >> Document monitored-battery and ti,system-minimum-microvolt properties.
>> >>
>> >> Cc: Rob Herring <robh@kernel.org>
>> >> Cc: devicetree@vger.kernel.org
>> >> Signed-off-by: Liam Breck <kernel@networkimprov.net>
>> >> ---
>> >>  .../devicetree/bindings/power/supply/bq24190.txt   | 49 ++++++++++++++++++++++
>> >>  1 file changed, 49 insertions(+)
>> >>  create mode 100644 Documentation/devicetree/bindings/power/supply/bq24190.txt
>> >>
>> >> diff --git a/Documentation/devicetree/bindings/power/supply/bq24190.txt b/Documentation/devicetree/bindings/power/supply/bq24190.txt
>> >> new file mode 100644
>> >> index 00000000..82a1c842
>> >> --- /dev/null
>> >> +++ b/Documentation/devicetree/bindings/power/supply/bq24190.txt
>> >> @@ -0,0 +1,49 @@
>> >> +TI BQ24190 Li-Ion Battery Charger
>> >> +
>> >> +Required properties:
>> >> +- compatible: contains one of the following:
>> >> +    * "ti,bq24190"
>> >> +    * "ti,bq24192i"
>> >> +- reg: integer, I2C address of the charger.
>> >> +- interrupts[-extended]: configuration for charger INT pin.
>> >> +
>> >> +Optional properties:
>> >> +- monitored-battery: phandle of battery characteristics devicetree node
>> >> +    The charger uses the following battery properties:
>> >> +    + precharge-current-microamp: maximum charge current during precharge
>> >> +      phase (typically 20% of battery capacity).
>> >> +    + charge-term-current-microamp: a charge cycle terminates when the
>> >> +      battery voltage is above recharge threshold, and the current is below
>> >> +      this setting (typically 10% of battery capacity).
>> >> +    See Documentation/devicetree/bindings/power/supply/battery.txt
>> >> +- ti,system-minimum-microvolt: when power is connected and the battery is below
>> >> +    minimum system voltage, the system will be regulated above this setting.
>> >> +
>> >> +Other features:
>> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
>> >
>> > Why doesn't the charger driver control this?
>>
>> This pin/gpio has to be high when USB is plugged in to make the
>> charger chip negotiate 500mA from a SDP port. It should generally be
>> configured that way even if the driver is not loaded, as the chip does
>> not require a driver to function. Some boards may do that with a
>> pull-up. Also the user may want to change this via sysfs and not have
>> the driver "fix" it.
>
> drivers/power/supply/qcom_smbb.c exposes the otg feature as
> regulator. I think in this case it could be exposed as
> gpio-regulator.

Hans is doing that here:
https://patchwork.kernel.org/patch/9883717/

The datasheet labels one pin "OTG" but that's misleading; it really
enables negotiation of 500mA input current, but does not turn on OTG
mode. If this pin is low, it only prevents the driver from starting
OTG mode via I2C msg.

Tony & Matt & I discussed this at some length off-list.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 16, 2017, 3:47 p.m. UTC | #5
* Liam Breck <liam@networkimprov.net> [170812 12:00]:
> On Sat, Aug 12, 2017 at 9:42 AM, Sebastian Reichel <sre@kernel.org> wrote:
> > On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
> >> >> +Other features:
> >> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
> >> >
> >> > Why doesn't the charger driver control this?
> >>
> >> This pin/gpio has to be high when USB is plugged in to make the
> >> charger chip negotiate 500mA from a SDP port. It should generally be
> >> configured that way even if the driver is not loaded, as the chip does
> >> not require a driver to function. Some boards may do that with a
> >> pull-up. Also the user may want to change this via sysfs and not have
> >> the driver "fix" it.
> >
> > drivers/power/supply/qcom_smbb.c exposes the otg feature as
> > regulator. I think in this case it could be exposed as
> > gpio-regulator.
> 
> Hans is doing that here:
> https://patchwork.kernel.org/patch/9883717/
> 
> The datasheet labels one pin "OTG" but that's misleading; it really
> enables negotiation of 500mA input current, but does not turn on OTG
> mode. If this pin is low, it only prevents the driver from starting
> OTG mode via I2C msg.

Yeah so before the device has enumerated this pin keeps the
max current at 100mA as required by the USB spec. This pin
should be only toggled after enumerating in bootloader or
by the kernel driver. I tink the USB PHY driver can also
be wired to control this line.

Probably best to set it up as just a GPIO that the bq24190
driver controls optionally.

Then later on we should have some Linux generic way for
USB gadget subsystem to tell the charger that we have
enumerated, and then bq24190 driver can toggle this GPIO
to enable higher charge rates.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Liam Breck Aug. 16, 2017, 8:11 p.m. UTC | #6
On Wed, Aug 16, 2017 at 8:47 AM, Tony Lindgren <tony@atomide.com> wrote:
> * Liam Breck <liam@networkimprov.net> [170812 12:00]:
>> On Sat, Aug 12, 2017 at 9:42 AM, Sebastian Reichel <sre@kernel.org> wrote:
>> > On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
>> >> >> +Other features:
>> >> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
>> >> >
>> >> > Why doesn't the charger driver control this?
>> >>
>> >> This pin/gpio has to be high when USB is plugged in to make the
>> >> charger chip negotiate 500mA from a SDP port. It should generally be
>> >> configured that way even if the driver is not loaded, as the chip does
>> >> not require a driver to function. Some boards may do that with a
>> >> pull-up. Also the user may want to change this via sysfs and not have
>> >> the driver "fix" it.
>> >
>> > drivers/power/supply/qcom_smbb.c exposes the otg feature as
>> > regulator. I think in this case it could be exposed as
>> > gpio-regulator.
>>
>> Hans is doing that here:
>> https://patchwork.kernel.org/patch/9883717/
>>
>> The datasheet labels one pin "OTG" but that's misleading; it really
>> enables negotiation of 500mA input current, but does not turn on OTG
>> mode. If this pin is low, it only prevents the driver from starting
>> OTG mode via I2C msg.
>
> Yeah so before the device has enumerated this pin keeps the
> max current at 100mA as required by the USB spec. This pin
> should be only toggled after enumerating in bootloader or
> by the kernel driver. I tink the USB PHY driver can also
> be wired to control this line.
>
> Probably best to set it up as just a GPIO that the bq24190
> driver controls optionally.
>
> Then later on we should have some Linux generic way for
> USB gadget subsystem to tell the charger that we have
> enumerated, and then bq24190 driver can toggle this GPIO
> to enable higher charge rates.

I discovered a few months ago that setting this pin high after USB
connect has NO effect on iinlim. It has to be high at connect to
auto-negotiate 500mA. There is no point in making the driver control
this pin; we already tried that.

Here we are just documenting how the DT can enable this pin via gpio-hog.

I believe the only way to defer 500mA negotiation is to leave this pin
off and set iinlim via I2C msg to chip. We can do that in a gadget
script via sysfs input_current_limit. Hans does not have to enable
this pin to start OTG-host on his x86 device, perhaps because it is
wired high there. Our script can set the linked gpio high if nec for
OTG-host.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 16, 2017, 9:06 p.m. UTC | #7
* Liam Breck <liam@networkimprov.net> [170816 13:11]:
> On Wed, Aug 16, 2017 at 8:47 AM, Tony Lindgren <tony@atomide.com> wrote:
> > * Liam Breck <liam@networkimprov.net> [170812 12:00]:
> >> On Sat, Aug 12, 2017 at 9:42 AM, Sebastian Reichel <sre@kernel.org> wrote:
> >> > On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
> >> >> >> +Other features:
> >> >> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
> >> >> >
> >> >> > Why doesn't the charger driver control this?
> >> >>
> >> >> This pin/gpio has to be high when USB is plugged in to make the
> >> >> charger chip negotiate 500mA from a SDP port. It should generally be
> >> >> configured that way even if the driver is not loaded, as the chip does
> >> >> not require a driver to function. Some boards may do that with a
> >> >> pull-up. Also the user may want to change this via sysfs and not have
> >> >> the driver "fix" it.
> >> >
> >> > drivers/power/supply/qcom_smbb.c exposes the otg feature as
> >> > regulator. I think in this case it could be exposed as
> >> > gpio-regulator.
> >>
> >> Hans is doing that here:
> >> https://patchwork.kernel.org/patch/9883717/
> >>
> >> The datasheet labels one pin "OTG" but that's misleading; it really
> >> enables negotiation of 500mA input current, but does not turn on OTG
> >> mode. If this pin is low, it only prevents the driver from starting
> >> OTG mode via I2C msg.
> >
> > Yeah so before the device has enumerated this pin keeps the
> > max current at 100mA as required by the USB spec. This pin
> > should be only toggled after enumerating in bootloader or
> > by the kernel driver. I tink the USB PHY driver can also
> > be wired to control this line.
> >
> > Probably best to set it up as just a GPIO that the bq24190
> > driver controls optionally.
> >
> > Then later on we should have some Linux generic way for
> > USB gadget subsystem to tell the charger that we have
> > enumerated, and then bq24190 driver can toggle this GPIO
> > to enable higher charge rates.
> 
> I discovered a few months ago that setting this pin high after USB
> connect has NO effect on iinlim. It has to be high at connect to
> auto-negotiate 500mA. There is no point in making the driver control
> this pin; we already tried that.
> 
> Here we are just documenting how the DT can enable this pin via gpio-hog.

Or in bootloader. Yeah this is mostly for completely empty
battery to start charging at 100mA until bootloader can start
and enable higher rates.

> I believe the only way to defer 500mA negotiation is to leave this pin
> off and set iinlim via I2C msg to chip. We can do that in a gadget
> script via sysfs input_current_limit. Hans does not have to enable
> this pin to start OTG-host on his x86 device, perhaps because it is
> wired high there. Our script can set the linked gpio high if nec for
> OTG-host.

Yeah once something is running?

If the kernel does not need to do anything about it, how about
just leave it out of the binding docs then?

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Liam Breck Aug. 16, 2017, 9:16 p.m. UTC | #8
On Wed, Aug 16, 2017 at 2:06 PM, Tony Lindgren <tony@atomide.com> wrote:
> * Liam Breck <liam@networkimprov.net> [170816 13:11]:
>> On Wed, Aug 16, 2017 at 8:47 AM, Tony Lindgren <tony@atomide.com> wrote:
>> > * Liam Breck <liam@networkimprov.net> [170812 12:00]:
>> >> On Sat, Aug 12, 2017 at 9:42 AM, Sebastian Reichel <sre@kernel.org> wrote:
>> >> > On Fri, Aug 11, 2017 at 02:57:10PM -0700, Liam Breck wrote:
>> >> >> >> +Other features:
>> >> >> >> +- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
>> >> >> >
>> >> >> > Why doesn't the charger driver control this?
>> >> >>
>> >> >> This pin/gpio has to be high when USB is plugged in to make the
>> >> >> charger chip negotiate 500mA from a SDP port. It should generally be
>> >> >> configured that way even if the driver is not loaded, as the chip does
>> >> >> not require a driver to function. Some boards may do that with a
>> >> >> pull-up. Also the user may want to change this via sysfs and not have
>> >> >> the driver "fix" it.
>> >> >
>> >> > drivers/power/supply/qcom_smbb.c exposes the otg feature as
>> >> > regulator. I think in this case it could be exposed as
>> >> > gpio-regulator.
>> >>
>> >> Hans is doing that here:
>> >> https://patchwork.kernel.org/patch/9883717/
>> >>
>> >> The datasheet labels one pin "OTG" but that's misleading; it really
>> >> enables negotiation of 500mA input current, but does not turn on OTG
>> >> mode. If this pin is low, it only prevents the driver from starting
>> >> OTG mode via I2C msg.
>> >
>> > Yeah so before the device has enumerated this pin keeps the
>> > max current at 100mA as required by the USB spec. This pin
>> > should be only toggled after enumerating in bootloader or
>> > by the kernel driver. I tink the USB PHY driver can also
>> > be wired to control this line.
>> >
>> > Probably best to set it up as just a GPIO that the bq24190
>> > driver controls optionally.
>> >
>> > Then later on we should have some Linux generic way for
>> > USB gadget subsystem to tell the charger that we have
>> > enumerated, and then bq24190 driver can toggle this GPIO
>> > to enable higher charge rates.
>>
>> I discovered a few months ago that setting this pin high after USB
>> connect has NO effect on iinlim. It has to be high at connect to
>> auto-negotiate 500mA. There is no point in making the driver control
>> this pin; we already tried that.
>>
>> Here we are just documenting how the DT can enable this pin via gpio-hog.
>
> Or in bootloader. Yeah this is mostly for completely empty
> battery to start charging at 100mA until bootloader can start
> and enable higher rates.
>
>> I believe the only way to defer 500mA negotiation is to leave this pin
>> off and set iinlim via I2C msg to chip. We can do that in a gadget
>> script via sysfs input_current_limit. Hans does not have to enable
>> this pin to start OTG-host on his x86 device, perhaps because it is
>> wired high there. Our script can set the linked gpio high if nec for
>> OTG-host.
>
> Yeah once something is running?

I haven't tried OTG-host on the anvl yet since it requires a special cable.

> If the kernel does not need to do anything about it, how about
> just leave it out of the binding docs then?

It seemed useful to document the OTG pin DT config for boards that
have it wired to a gpio... Is that not wise?
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 18, 2017, 12:16 a.m. UTC | #9
* Liam Breck <liam@networkimprov.net> [170816 14:16]:
> On Wed, Aug 16, 2017 at 2:06 PM, Tony Lindgren <tony@atomide.com> wrote:
> 
> > If the kernel does not need to do anything about it, how about
> > just leave it out of the binding docs then?
> 
> It seemed useful to document the OTG pin DT config for boards that
> have it wired to a gpio... Is that not wise?

Well maybe just add a comment to the driver about it until we know
how we want to handle it?

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Tony Lindgren Aug. 25, 2017, 8:29 p.m. UTC | #10
* Liam Breck <liam@networkimprov.net> [170816 14:16]:
> On Wed, Aug 16, 2017 at 2:06 PM, Tony Lindgren <tony@atomide.com> wrote:
> > If the kernel does not need to do anything about it, how about
> > just leave it out of the binding docs then?
> 
> It seemed useful to document the OTG pin DT config for boards that
> have it wired to a gpio... Is that not wise?

Well maybe add it as a note to the description rather than
a binding. It might be actually best to document it in both
places.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/power/supply/bq24190.txt b/Documentation/devicetree/bindings/power/supply/bq24190.txt
new file mode 100644
index 00000000..82a1c842
--- /dev/null
+++ b/Documentation/devicetree/bindings/power/supply/bq24190.txt
@@ -0,0 +1,49 @@ 
+TI BQ24190 Li-Ion Battery Charger
+
+Required properties:
+- compatible: contains one of the following:
+    * "ti,bq24190"
+    * "ti,bq24192i"
+- reg: integer, I2C address of the charger.
+- interrupts[-extended]: configuration for charger INT pin.
+
+Optional properties:
+- monitored-battery: phandle of battery characteristics devicetree node
+    The charger uses the following battery properties:
+    + precharge-current-microamp: maximum charge current during precharge
+      phase (typically 20% of battery capacity).
+    + charge-term-current-microamp: a charge cycle terminates when the
+      battery voltage is above recharge threshold, and the current is below
+      this setting (typically 10% of battery capacity).
+    See Documentation/devicetree/bindings/power/supply/battery.txt
+- ti,system-minimum-microvolt: when power is connected and the battery is below
+    minimum system voltage, the system will be regulated above this setting.
+
+Other features:
+- Use gpio-hog to set the OTG pin high to enable 500mA charge current on USB SDP port.
+
+Example:
+
+	bat: battery {
+		compatible = "simple-battery";
+		precharge-current-microamp = <256000>;
+		charge-term-current-microamp = <128000>;
+		// etc.
+	};
+
+	bq24190: charger@6a {
+		compatible = "ti,bq24190";
+		reg = <0x6a>;
+		interrupts-extended = <&gpiochip 10 IRQ_TYPE_EDGE_FALLING>;
+		monitored-battery = <&bat>;
+		ti,system-minimum-microvolt = <3200000>;
+	};
+
+	&twl_gpio {
+		otg {
+			gpio-hog;
+			gpios = <6 0>;
+			output-high;
+			line-name = "otg-gpio";
+		};
+	};