# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/maxim,max77843.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Maxim MAX77843 MicroUSB and Companion Power Management IC

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  This is a part of device tree bindings for Maxim MAX77843 MicroUSB
  Integrated Circuit (MUIC).

  The Maxim MAX77843 is a MicroUSB and Companion Power Management IC which
  includes voltage current regulators, charger, fuel-gauge, haptic motor driver
  and MicroUSB management IC.

properties:
  compatible:
    const: maxim,max77843

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  extcon:
    $ref: /schemas/extcon/maxim,max77843.yaml

  motor-driver:
    type: object
    additionalProperties: false
    properties:
      compatible:
        const: maxim,max77843-haptic

      haptic-supply:
        description: Power supply to the haptic motor

      pwms:
        maxItems: 1

    required:
      - compatible
      - haptic-supply
      - pwms

  regulators:
    $ref: /schemas/regulator/maxim,max77843.yaml

required:
  - compatible
  - interrupts
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

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

        pmic@66 {
            compatible = "maxim,max77843";
            interrupt-parent = <&gpa1>;
            interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
            reg = <0x66>;

            extcon {
                compatible = "maxim,max77843-muic";

                connector {
                    compatible = "samsung,usb-connector-11pin",
                                 "usb-b-connector";
                    label = "micro-USB";
                    type = "micro";

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

                        port@0 {
                            /*
                             * TODO: The DTS this is based on does not have
                             * port@0 which is a required property. The ports
                             * look incomplete and need fixing.
                             * Add a disabled port just to satisfy dtschema.
                             */
                            reg = <0>;
                            status = "disabled";
                        };

                        port@3 {
                            reg = <3>;
                            endpoint {
                                remote-endpoint = <&mhl_to_musb_con>;
                            };
                        };
                    };
                };

                ports {
                    port {
                        endpoint {
                            remote-endpoint = <&usb_to_muic>;
                        };
                    };
                };
            };

            regulators {
                compatible = "maxim,max77843-regulator";

                SAFEOUT1 {
                    regulator-name = "SAFEOUT1";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <4950000>;
                };

                SAFEOUT2 {
                    regulator-name = "SAFEOUT2";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <4950000>;
                };

                CHARGER {
                    regulator-name = "CHARGER";
                    regulator-min-microamp = <100000>;
                    regulator-max-microamp = <3150000>;
                };
            };

            motor-driver {
                compatible = "maxim,max77843-haptic";
                haptic-supply = <&ldo38_reg>;
                pwms = <&pwm 0 33670 0>;
            };
        };
    };