# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2021 Sebastian Reichel
%YAML 1.2
---
$id: "http://devicetree.org/schemas/power/supply/cpcap-charger.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Motorola CPCAP PMIC charger

maintainers:
  - Tony Lindgren <tony@atomide.com>
  - Sebastian Reichel <sre@kernel.org>

description: |
  Motorola CPCAP is a PMIC found in some mobile phones, e.g.
  the Droid 4. This binding describes its battery charger
  sub-function.

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

properties:
  compatible:
    const: motorola,mapphone-cpcap-charger

  interrupts:
    items:
      - description: charger detection interrupt
      - description: reverse charge interrupt
      - description: SE1 charger detection interrupt
      - description: SE0 charger detection interrupt
      - description: reverse mode interrupt
      - description: charge current 2 interrupt
      - description: charge current 1 interrupt
      - description: VBUS valid interrupt
      - description: battery detect interrupt

  interrupt-names:
    items:
      - const: chrg_det
      - const: rvrs_chrg
      - const: chrg_se1b
      - const: se0conn
      - const: rvrs_mode
      - const: chrgcurr2
      - const: chrgcurr1
      - const: vbusvld
      - const: battdetb

  io-channels:
    items:
      - description: battery temperature
      - description: battery voltage
      - description: VBUS voltage
      - description: battery charge current
      - description: battery current

  io-channel-names:
    items:
      - const: battdetb
      - const: battp
      - const: vbus
      - const: chg_isense
      - const: batti

  mode-gpios:
    description: |
      Optionally CPCAP charger can have a companion wireless
      charge controller that is controlled with two GPIOs
      that are active low.
    minItems: 2
    maxItems: 2

required:
  - compatible
  - interrupts
  - interrupt-names
  - io-channels
  - io-channel-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    cpcap {
      charger {
        compatible = "motorola,mapphone-cpcap-charger";
        interrupts-extended =
                <&cpcap 13 0>, <&cpcap 12 0>, <&cpcap 29 0>, <&cpcap 28 0>,
                <&cpcap 22 0>, <&cpcap 21 0>, <&cpcap 20 0>, <&cpcap 19 0>,
                <&cpcap 54 0>;
        interrupt-names =
                "chrg_det", "rvrs_chrg", "chrg_se1b", "se0conn",
                "rvrs_mode", "chrgcurr2", "chrgcurr1", "vbusvld",
                "battdetb";
        mode-gpios = <&gpio3 29 GPIO_ACTIVE_LOW>,
                     <&gpio3 23 GPIO_ACTIVE_LOW>;
        io-channels = <&cpcap_adc 0>, <&cpcap_adc 1>,
                      <&cpcap_adc 2>, <&cpcap_adc 5>,
                      <&cpcap_adc 6>;
        io-channel-names = "battdetb", "battp",
                           "vbus", "chg_isense",
                           "batti";
      };
    };
