Commit 449dc8c9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull power supply and reset updates from Sebastian Reichel:
 "Power-supply core:
   - add COOL/WARM/HOT state from JEITA JISC8712:2015 specification
   - convert simple-battery DT binding to YAML
   - add long-life charging mode

 Battery/charger drivers:
   - bq25150: new charger driver
   - bq27xxx: add support for BQ27z561 and BQ28z610
   - max17040: support CAPACITY_ALERT_MIN
   - sbs-battery: add PEC support
   - wilco-ec: support long-life charging mode
   - bq25890: fix DT binding
   - misc. fixes and cleanups

 Reset drivers:
   - linkstation: new reset driver"

* tag 'for-v5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (32 commits)
  power: supply: wilco_ec: Add long life charging mode
  power: supply: bq27xxx_battery: Add the BQ28z610 Battery monitor
  dt-bindings: power: Add BQ28z610 compatible
  power: supply: bq27xxx_battery: Add the BQ27Z561 Battery monitor
  dt-bindings: power: Add BQ27Z561 compatible
  power: supply: test_power: Fix battery_current initial value
  power: supply: Fix kerneldoc of power_supply_temp2resist_simple()
  power: supply: cpcap-battery: Fix kerneldoc of cpcap_battery_read_accumulated()
  dt-bindings: power: Convert battery.txt to battery.yaml
  power: supply: rt5033_battery: Fix error code in rt5033_battery_probe()
  power: supply: max17040: Add POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN
  power: supply: check if calc_soc succeeded in pm860x_init_battery
  power: supply: bq2xxxx: Replace HTTP links with HTTPS ones
  power: reset: add driver for LinkStation power off
  power: supply: sc27xx: prevent adc * 1000 from overflow
  math64: New DIV_S64_ROUND_CLOSEST helper
  power: fix duplicated words in bq2415x_charger.h
  power: Convert to DEFINE_SHOW_ATTRIBUTE
  power: reset: keystone-reset: Replace HTTP links with HTTPS ones
  power: supply: bq25150 introduce the bq25150
  ...
parents b79675e1 46cbd0b0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -205,7 +205,8 @@ Description:
		Valid values: "Unknown", "Good", "Overheat", "Dead",
			      "Over voltage", "Unspecified failure", "Cold",
			      "Watchdog timer expire", "Safety timer expire",
			      "Over current", "Calibration required"
			      "Over current", "Calibration required", "Warm",
			      "Cool", "Hot"

What:		/sys/class/power_supply/<supply_name>/precharge_current
Date:		June 2017
+4 −0
Original line number Diff line number Diff line
@@ -14,6 +14,10 @@ Description:
			Charging begins when level drops below
			charge_control_start_threshold, and ceases when
			level is above charge_control_end_threshold.
		Long Life: Customized charge rate for last longer battery life.
			On Wilco device this mode is pre-configured in the factory
			through EC's private PID. Swiching to a different mode will
			be denied by Wilco EC when Long Life mode is enabled.

What:		/sys/class/power_supply/wilco-charger/charge_control_start_threshold
Date:		April 2019
+1 −85
Original line number Diff line number Diff line
Battery Characteristics

The devicetree battery node provides static battery characteristics.
In smart batteries, these are typically stored in non-volatile memory
on a fuel gauge chip. The battery node should be used where there is
no appropriate non-volatile memory, or it is unprogrammed/incorrect.

Upstream dts files should not include battery nodes, unless the battery
represented cannot easily be replaced in the system by one of a
different type. This prevents unpredictable, potentially harmful,
behavior should a replacement that changes the battery type occur
without a corresponding update to the dtb.
The contents of this file has been moved to battery.yaml

Please note that not all charger drivers respect all of the properties.

Required Properties:
 - compatible: Must be "simple-battery"

Optional Properties:
 - over-voltage-threshold-microvolt: battery over-voltage limit
 - re-charge-voltage-microvolt: limit to automatically start charging again
 - voltage-min-design-microvolt: drained battery voltage
 - voltage-max-design-microvolt: fully charged battery voltage
 - energy-full-design-microwatt-hours: battery design energy
 - charge-full-design-microamp-hours: battery design capacity
 - trickle-charge-current-microamp: current for trickle-charge phase
 - precharge-current-microamp: current for pre-charge phase
 - precharge-upper-limit-microvolt: limit when to change to constant charging
 - charge-term-current-microamp: current for charge termination phase
 - constant-charge-current-max-microamp: maximum constant input current
 - constant-charge-voltage-max-microvolt: maximum constant input voltage
 - factory-internal-resistance-micro-ohms: battery factory internal resistance
 - ocv-capacity-table-0: An array providing the open circuit voltage (OCV)
   of the battery and corresponding battery capacity percent, which is used
   to look up battery capacity according to current OCV value. And the open
   circuit voltage unit is microvolt.
 - ocv-capacity-table-1: Same as ocv-capacity-table-0
 ......
 - ocv-capacity-table-n: Same as ocv-capacity-table-0
 - ocv-capacity-celsius: An array containing the temperature in degree Celsius,
   for each of the battery capacity lookup table. The first temperature value
   specifies the OCV table 0, and the second temperature value specifies the
   OCV table 1, and so on.
 - resistance-temp-table: An array providing the temperature in degree Celsius
   and corresponding battery internal resistance percent, which is used to look
   up the resistance percent according to current temperature to get a accurate
   batterty internal resistance in different temperatures.

Battery properties are named, where possible, for the corresponding
elements in enum power_supply_property, defined in
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/power_supply.h

Batteries must be referenced by chargers and/or fuel-gauges
using a phandle. The phandle's property should be named
"monitored-battery".

Example:

	bat: battery {
		compatible = "simple-battery";
		voltage-min-design-microvolt = <3200000>;
		voltage-max-design-microvolt = <4200000>;
		energy-full-design-microwatt-hours = <5290000>;
		charge-full-design-microamp-hours = <1430000>;
		precharge-current-microamp = <256000>;
		charge-term-current-microamp = <128000>;
		constant-charge-current-max-microamp = <900000>;
		constant-charge-voltage-max-microvolt = <4200000>;
		factory-internal-resistance-micro-ohms = <250000>;
		ocv-capacity-celsius = <(-10) 0 10>;
		ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>, ...;
		ocv-capacity-table-1 = <4200000 100>, <4185000 95>, <4113000 90>, ...;
		ocv-capacity-table-2 = <4250000 100>, <4200000 95>, <4185000 90>, ...;
		resistance-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
	};

	charger: charger@11 {
		....
		monitored-battery = <&bat>;
		...
	};

	fuel_gauge: fuel-gauge@22 {
		....
		monitored-battery = <&bat>;
		...
	};
+144 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/supply/battery.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Battery Characteristics

maintainers:
  - Sebastian Reichel <sre@kernel.org>

description: |
  The devicetree battery node provides static battery characteristics.
  In smart batteries, these are typically stored in non-volatile memory
  on a fuel gauge chip. The battery node should be used where there is
  no appropriate non-volatile memory, or it is unprogrammed/incorrect.

  Upstream dts files should not include battery nodes, unless the battery
  represented cannot easily be replaced in the system by one of a
  different type. This prevents unpredictable, potentially harmful,
  behavior should a replacement that changes the battery type occur
  without a corresponding update to the dtb.

  Battery properties are named, where possible, for the corresponding elements
  in enum power_supply_property, defined in include/linux/power_supply.h

  Batteries must be referenced by chargers and/or fuel-gauges using a phandle.
  The phandle's property should be named "monitored-battery".

properties:
  compatible:
    const: simple-battery

  over-voltage-threshold-microvolt:
    description: battery over-voltage limit

  re-charge-voltage-microvolt:
    description: limit to automatically start charging again

  voltage-min-design-microvolt:
    description: drained battery voltage

  voltage-max-design-microvolt:
    description: fully charged battery voltage

  energy-full-design-microwatt-hours:
    description: battery design energy

  charge-full-design-microamp-hours:
    description: battery design capacity

  trickle-charge-current-microamp:
    description: current for trickle-charge phase

  precharge-current-microamp:
    description: current for pre-charge phase

  precharge-upper-limit-microvolt:
    description: limit when to change to constant charging

  charge-term-current-microamp:
    description: current for charge termination phase

  constant-charge-current-max-microamp:
    description: maximum constant input current

  constant-charge-voltage-max-microvolt:
    description: maximum constant input voltage

  factory-internal-resistance-micro-ohms:
    description: battery factory internal resistance

  resistance-temp-table:
    description: |
      An array providing the temperature in degree Celsius
      and corresponding battery internal resistance percent, which is used to
      look up the resistance percent according to current temperature to get an
      accurate batterty internal resistance in different temperatures.

  ocv-capacity-celsius:
    description: |
      An array containing the temperature in degree Celsius,
      for each of the battery capacity lookup table.

required:
  - compatible

patternProperties:
  '^ocv-capacity-table-[0-9]+$':
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    description: |
      An array providing the open circuit voltage (OCV)
      of the battery and corresponding battery capacity percent, which is used
      to look up battery capacity according to current OCV value. And the open
      circuit voltage unit is microvolt.
    maxItems: 100
    items:
      items:
        - description: open circuit voltage (OCV) in microvolts
        - description: battery capacity percent
          maximum: 100

additionalProperties: false

examples:
  - |
    power {
      #address-cells = <1>;
      #size-cells = <0>;

      battery: battery {
        compatible = "simple-battery";
        over-voltage-threshold-microvolt = <4500000>;
        re-charge-voltage-microvolt = <250000>;
        voltage-min-design-microvolt = <3200000>;
        voltage-max-design-microvolt = <4200000>;
        energy-full-design-microwatt-hours = <5290000>;
        charge-full-design-microamp-hours = <1430000>;
        precharge-current-microamp = <256000>;
        precharge-upper-limit-microvolt = <2500000>;
        charge-term-current-microamp = <128000>;
        constant-charge-current-max-microamp = <900000>;
        constant-charge-voltage-max-microvolt = <4200000>;
        factory-internal-resistance-micro-ohms = <250000>;
        ocv-capacity-celsius = <(-10) 0 10>;
        /* table for -10 degree Celsius */
        ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>;
        /* table for 0 degree Celsius */
        ocv-capacity-table-1 = <4200000 100>, <4185000 95>, <4113000 90>;
        /* table for 10 degree Celsius */
        ocv-capacity-table-2 = <4250000 100>, <4200000 95>, <4185000 90>;
        resistance-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
      };

      charger@11 {
        reg = <0x11>;
        monitored-battery = <&battery>;
      };

      fuel-gauge@22 {
        reg = <0x22>;
        monitored-battery = <&battery>;
      };
    };
+93 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated
%YAML 1.2
---
$id: "http://devicetree.org/schemas/power/supply/bq2515x.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: TI bq2515x 500-mA Linear charger family

maintainers:
  - Dan Murphy <dmurphy@ti.com>
  - Ricardo Rivera-Matos <r-rivera-matos@ti.com>

description: |
  The BQ2515x family is a highly integrated battery charge management IC that
  integrates the most common functions for wearable devices, namely a charger,
  an output voltage rail, ADC for battery and system monitoring, and
  push-button controller.

  Specifications about the charger can be found at:
    http://www.ti.com/lit/ds/symlink/bq25150.pdf
    http://www.ti.com/lit/ds/symlink/bq25155.pdf

properties:
  compatible:
    enum:
      - ti,bq25150
      - ti,bq25155

  reg:
    maxItems: 1
    description: I2C address of the charger.

  ac-detect-gpios:
    description: |
       GPIO used for connecting the bq2515x device PG (AC Detect)
       pin.
    maxItems: 1

  reset-gpios:
    description: GPIO used for hardware reset.
    maxItems: 1

  powerdown-gpios:
    description: GPIO used for low power mode of IC.
    maxItems: 1

  charge-enable-gpios:
    description: GPIO used to turn on and off charging.
    maxItems: 1

  input-current-limit-microamp:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: Maximum input current in micro Amps.
    minimum: 50000
    maximum: 500000

  monitored-battery:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: phandle to the battery node being monitored

required:
  - compatible
  - reg
  - monitored-battery

additionalProperties: false

examples:
  - |
    bat: battery {
      compatible = "simple-battery";
      constant-charge-current-max-microamp = <50000>;
      precharge-current-microamp = <2500>;
      constant-charge-voltage-max-microvolt = <4000000>;
    };
    #include <dt-bindings/gpio/gpio.h>
    i2c0 {
      #address-cells = <1>;
      #size-cells = <0>;

      bq25150: charger@6b {
        compatible = "ti,bq25150";
        reg = <0x6b>;
        monitored-battery = <&bat>;
        input-current-limit-microamp = <100000>;

        ac-detect-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
        reset-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
        powerdown-gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
        charge-enable-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
      };
    };
Loading