# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated
%YAML 1.2
---
$id: http://devicetree.org/schemas/power/supply/bq256xx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI bq256xx Switch Mode Buck Charger

maintainers:
  - Andrew Davis <afd@ti.com>

description: |
  The bq256xx devices are a family of highly-integrated battery charge
  management and system power management ICs for single cell Li-ion and Li-
  polymer batteries.

  Datasheets:
    - https://www.ti.com/lit/ds/symlink/bq25600.pdf
    - https://www.ti.com/lit/ds/symlink/bq25601.pdf
    - https://www.ti.com/lit/ds/symlink/bq25600d.pdf
    - https://www.ti.com/lit/ds/symlink/bq25601d.pdf
    - https://www.ti.com/lit/ds/symlink/bq25611d.pdf
    - https://www.ti.com/lit/ds/symlink/bq25618.pdf
    - https://www.ti.com/lit/ds/symlink/bq25619.pdf

properties:
  compatible:
    enum:
      - ti,bq25600
      - ti,bq25601
      - ti,bq25600d
      - ti,bq25601d
      - ti,bq25611d
      - ti,bq25618
      - ti,bq25619

  reg:
    maxItems: 1

  ti,watchdog-timeout-ms:
    default: 0
    description: |
      Watchdog timer in ms. 0 (default) disables the watchdog
    minimum: 0
    maximum: 160000
    enum: [ 0, 40000, 80000, 160000]

  input-voltage-limit-microvolt:
    description: |
       Minimum input voltage limit in µV with a 100000 µV step
    minimum: 3900000
    maximum: 5400000

  input-current-limit-microamp:
    description: |
       Maximum input current limit in µA with a 100000 µA step
    minimum: 100000
    maximum: 3200000

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

  interrupts:
    maxItems: 1
    description: |
      Interrupt sends an active low, 256 μs pulse to host to report the charger
      device status and faults.

  ti,no-thermistor:
    type: boolean
    description: Indicates that no thermistor is connected to the TS pin

required:
  - compatible
  - reg
  - monitored-battery

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - ti,bq25600
              - ti,bq25601
              - ti,bq25600d
              - ti,bq25601d
    then:
      properties:
        ti,no-thermistor: false

additionalProperties: false

examples:
  - |
    bat: battery {
      compatible = "simple-battery";
      constant-charge-current-max-microamp = <2040000>;
      constant-charge-voltage-max-microvolt = <4352000>;
      precharge-current-microamp = <180000>;
      charge-term-current-microamp = <180000>;
    };
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {

      clock-frequency = <400000>;

      #address-cells = <1>;
      #size-cells = <0>;

      charger@6b {
        compatible = "ti,bq25601";
        reg = <0x6b>;
        monitored-battery = <&bat>;

        interrupt-parent = <&gpio1>;
        interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
        ti,watchdog-timeout-ms = <40000>;

        input-voltage-limit-microvolt = <4500000>;
        input-current-limit-microamp = <2400000>;
       };
    };
...