162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/power/supply/gpio-charger.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: simple battery chargers only communicating through GPIOs
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sebastian Reichel <sre@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  This binding is for all chargers, which are working more or less
1462306a36Sopenharmony_ci  autonomously, only providing some status GPIOs and possibly some
1562306a36Sopenharmony_ci  GPIOs for limited control over the charging process.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    const: gpio-charger
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  charger-type:
2262306a36Sopenharmony_ci    enum:
2362306a36Sopenharmony_ci      - unknown
2462306a36Sopenharmony_ci      - battery
2562306a36Sopenharmony_ci      - ups
2662306a36Sopenharmony_ci      - mains
2762306a36Sopenharmony_ci      - usb-sdp                   # USB standard downstream port
2862306a36Sopenharmony_ci      - usb-dcp                   # USB dedicated charging port
2962306a36Sopenharmony_ci      - usb-cdp                   # USB charging downstream port
3062306a36Sopenharmony_ci      - usb-aca                   # USB accessory charger adapter
3162306a36Sopenharmony_ci    description:
3262306a36Sopenharmony_ci      Type of the charger, e.g. "mains" for a wall charger.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  gpios:
3562306a36Sopenharmony_ci    maxItems: 1
3662306a36Sopenharmony_ci    description: GPIO indicating the charger presence
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  charge-status-gpios:
3962306a36Sopenharmony_ci    maxItems: 1
4062306a36Sopenharmony_ci    description: GPIO indicating the charging status
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  charge-current-limit-gpios:
4362306a36Sopenharmony_ci    minItems: 1
4462306a36Sopenharmony_ci    maxItems: 32
4562306a36Sopenharmony_ci    description: GPIOs used for current limiting
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  charge-current-limit-mapping:
4862306a36Sopenharmony_ci    description: List of tuples with current in uA and a GPIO bitmap (in
4962306a36Sopenharmony_ci      this order). The tuples must be provided in descending order of the
5062306a36Sopenharmony_ci      current limit.
5162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-matrix
5262306a36Sopenharmony_ci    items:
5362306a36Sopenharmony_ci      items:
5462306a36Sopenharmony_ci        - description:
5562306a36Sopenharmony_ci            Current limit in uA
5662306a36Sopenharmony_ci        - description:
5762306a36Sopenharmony_ci            Encoded GPIO setting. Bit 0 represents last GPIO from the
5862306a36Sopenharmony_ci            charge-current-limit-gpios property. Bit 1 second to last
5962306a36Sopenharmony_ci            GPIO and so on.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cirequired:
6262306a36Sopenharmony_ci  - compatible
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_cianyOf:
6562306a36Sopenharmony_ci  - required:
6662306a36Sopenharmony_ci      - gpios
6762306a36Sopenharmony_ci  - required:
6862306a36Sopenharmony_ci      - charge-status-gpios
6962306a36Sopenharmony_ci  - required:
7062306a36Sopenharmony_ci      - charge-current-limit-gpios
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cidependencies:
7362306a36Sopenharmony_ci  charge-current-limit-gpios: [ charge-current-limit-mapping ]
7462306a36Sopenharmony_ci  charge-current-limit-mapping: [ charge-current-limit-gpios ]
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciadditionalProperties: false
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciexamples:
7962306a36Sopenharmony_ci  - |
8062306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci    charger {
8362306a36Sopenharmony_ci      compatible = "gpio-charger";
8462306a36Sopenharmony_ci      charger-type = "usb-sdp";
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci      gpios = <&gpd 28 GPIO_ACTIVE_LOW>;
8762306a36Sopenharmony_ci      charge-status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>;
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci      charge-current-limit-gpios = <&gpioA 11 GPIO_ACTIVE_HIGH>,
9062306a36Sopenharmony_ci                                   <&gpioA 12 GPIO_ACTIVE_HIGH>;
9162306a36Sopenharmony_ci      charge-current-limit-mapping = <2500000 0x00>, // 2.5 A => both GPIOs low
9262306a36Sopenharmony_ci                                     <700000 0x01>, // 700 mA => GPIO A.12 high
9362306a36Sopenharmony_ci                                     <0 0x02>; // 0 mA => GPIO A.11 high
9462306a36Sopenharmony_ci    };
95