# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/supply/active-semi,act8945a-charger.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Active-semi ACT8945A Charger Function

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

allOf:
  - $ref: power-supply.yaml#

properties:
  compatible:
    const: active-semi,act8945a-charger

  interrupts:
    maxItems: 1

  active-semi,chglev-gpios:
    maxItems: 1
    description: charge current level GPIO

  active-semi,lbo-gpios:
    maxItems: 1
    description: low battery voltage detect GPIO

  active-semi,input-voltage-threshold-microvolt:
    description: |
      Specifies the charger's input over-voltage threshold value.
      Despite the name, specified values are in millivolt (mV).
      Defaults to 6.6 V
    enum: [ 6600, 7000, 7500, 8000 ]

  active-semi,precondition-timeout:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specifies the charger's PRECONDITION safety timer setting value in minutes.
      If 0, it means to disable this timer.
      Defaults to 40 minutes.
    enum: [ 0, 40, 60, 80 ]

  active-semi,total-timeout:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Specifies the charger's total safety timer setting value in hours;
      If 0, it means to disable this timer;
      Defaults to 3 hours.
    enum: [ 0, 3, 4, 5 ]

required:
  - compatible
  - interrupts
  - active-semi,chglev-gpios
  - active-semi,lbo-gpios

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    pmic {
      charger {
        compatible = "active-semi,act8945a-charger";
        interrupt-parent = <&pioA>;
        interrupts = <45 IRQ_TYPE_LEVEL_LOW>;
        active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>;
        active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>;
        active-semi,input-voltage-threshold-microvolt = <6600>;
        active-semi,precondition-timeout = <40>;
        active-semi,total-timeout = <3>;
      };
    };