# SPDX-License-Identifier: GPL-2.0 %YAML 1.2 --- $id: http://devicetree.org/schemas/power/supply/gpio-charger.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: simple battery chargers only communicating through GPIOs maintainers: - Sebastian Reichel description: This binding is for all chargers, which are working more or less autonomously, only providing some status GPIOs and possibly some GPIOs for limited control over the charging process. properties: compatible: const: gpio-charger charger-type: enum: - unknown - battery - ups - mains - usb-sdp # USB standard downstream port - usb-dcp # USB dedicated charging port - usb-cdp # USB charging downstream port - usb-aca # USB accessory charger adapter description: Type of the charger, e.g. "mains" for a wall charger. gpios: maxItems: 1 description: GPIO indicating the charger presence charge-status-gpios: maxItems: 1 description: GPIO indicating the charging status charge-current-limit-gpios: minItems: 1 maxItems: 32 description: GPIOs used for current limiting charge-current-limit-mapping: description: List of tuples with current in uA and a GPIO bitmap (in this order). The tuples must be provided in descending order of the current limit. $ref: /schemas/types.yaml#/definitions/uint32-matrix items: items: - description: Current limit in uA - description: Encoded GPIO setting. Bit 0 represents last GPIO from the charge-current-limit-gpios property. Bit 1 second to last GPIO and so on. required: - compatible anyOf: - required: - gpios - required: - charge-status-gpios - required: - charge-current-limit-gpios dependencies: charge-current-limit-gpios: [ charge-current-limit-mapping ] charge-current-limit-mapping: [ charge-current-limit-gpios ] additionalProperties: false examples: - | #include charger { compatible = "gpio-charger"; charger-type = "usb-sdp"; gpios = <&gpd 28 GPIO_ACTIVE_LOW>; charge-status-gpios = <&gpc 27 GPIO_ACTIVE_LOW>; charge-current-limit-gpios = <&gpioA 11 GPIO_ACTIVE_HIGH>, <&gpioA 12 GPIO_ACTIVE_HIGH>; charge-current-limit-mapping = <2500000 0x00>, // 2.5 A => both GPIOs low <700000 0x01>, // 700 mA => GPIO A.12 high <0 0x02>; // 0 mA => GPIO A.11 high };