# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/adi,max77675.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Maxim MAX77675 PMIC Regulator

maintainers:
  - Joan Na <joan.na@analog.com>

description:
  The MAX77675 is a Power Management IC providing four switching buck
  regulators (SBB0–SBB3) accessible via I2C. It supports configuration
  of output voltages and enable controls for each regulator.

allOf:
  - $ref: /schemas/input/input.yaml
  - $ref: /schemas/pinctrl/pincfg-node.yaml

properties:
  compatible:
    const: adi,max77675

  reg:
    maxItems: 1

  reset-time-sec:
    description: Manual reset time in seconds
    enum: [4, 8, 12, 16]
    default: 4

  bias-disable:
    type: boolean
    description: Disable internal pull-up for EN pin

  input-debounce:
    description: Debounce time for the enable pin, in microseconds
    items:
      - enum: [100, 30000]
    default: 100

  adi,en-mode:
    description: |
      Enable mode configuration.
      The debounce time set by 'input-debounce' applies to
      both push-button and slide-switch modes.
      "push-button"  - A long press triggers power-on or power-down
      "slide-switch" - Low : powers on, High : powers down
      "logic"        - Low : powers on, High : powers down (no debounce time)
    $ref: /schemas/types.yaml#/definitions/string
    enum: [push-button, slide-switch, logic]
    default: slide-switch

  adi,voltage-change-latency-us:
    description:
      Specifies the delay (in microseconds) between an output voltage change
      request and the start of the SBB voltage ramp.
    enum: [10, 100]
    default: 100

  adi,drv-sbb-strength:
    description: |
      SIMO Buck-Boost Drive Strength Trim.
      Controls the drive strength of the SIMO regulator's power MOSFETs.
      This setting affects switching speed, impacting power efficiency and EMI.
      "max"  – Maximum drive strength (~0.6 ns transition time)
      "high" – High drive strength (~1.2 ns transition time)
      "low"  – Low drive strength (~1.8 ns transition time)
      "min"  – Minimum drive strength (~8 ns transition time)
    $ref: /schemas/types.yaml#/definitions/string
    enum: [max, high, low, min]
    default: max

  adi,dvs-slew-rate-mv-per-us:
    description:
      Dynamic rising slew rate for output voltage transitions, in mV/μs.
      This setting is only used when 'adi,fixed-slew-rate' is not present.
    enum: [5, 10]
    default: 5

  adi,bias-low-power-request:
    type: boolean
    description: Request low-power bias mode

  adi,simo-ldo-always-on:
    type: boolean
    description: Set internal LDO to always supply 1.8V

  regulators:
    type: object
    description: Regulator child nodes
    patternProperties:
      "^sbb[0-3]$":
        type: object
        $ref: regulator.yaml#
        properties:
          adi,fps-slot:
            description: |
              FPS (Flexible Power Sequencer) slot selection.
              The Flexible Power Sequencer allows resources to power up under
              hardware or software control. Additionally, each resource can
              power up independently or among a group of other regulators with
              adjustable power-up and power-down slots.
              "slot0"   - Assign to FPS Slot 0
              "slot1"   - Assign to FPS Slot 1
              "slot2"   - Assign to FPS Slot 2
              "slot3"   - Assign to FPS Slot 3
              "default" - Use the default FPS slot value stored in register
            $ref: /schemas/types.yaml#/definitions/string
            enum: [slot0, slot1, slot2, slot3, default]
            default: default

          adi,fixed-slew-rate:
            type: boolean
            description:
              When this property is present, the device uses a constant 2 mV/μs
              slew rate and ignores any dynamic slew rate configuration.
              When absent, the device uses the dynamic slew rate specified
              by 'adi,dvs-slew-rate-mv-per-us'

        unevaluatedProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

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

      max77675: pmic@44 {
        compatible = "adi,max77675";
        reg = <0x44>;

        reset-time-sec = <4>;
        input-debounce = <100>;

        adi,en-mode = "slide-switch";
        adi,voltage-change-latency-us = <100>;
        adi,drv-sbb-strength = "max";
        adi,dvs-slew-rate-mv-per-us = <5>;

        regulators {
          sbb0: sbb0 {
            regulator-name = "sbb0";
            regulator-min-microvolt = <500000>;
            regulator-max-microvolt = <5500000>;
            adi,fps-slot = "default";
            adi,fixed-slew-rate;
          };

          sbb1: sbb1 {
            regulator-name = "sbb1";
            regulator-min-microvolt = <500000>;
            regulator-max-microvolt = <5500000>;
            adi,fps-slot = "default";
            adi,fixed-slew-rate;
          };

          sbb2: sbb2 {
            regulator-name = "sbb2";
            regulator-min-microvolt = <500000>;
            regulator-max-microvolt = <5500000>;
            adi,fps-slot = "default";
            adi,fixed-slew-rate;
          };

          sbb3: sbb3 {
            regulator-name = "sbb3";
            regulator-min-microvolt = <500000>;
            regulator-max-microvolt = <5500000>;
            adi,fps-slot = "default";
            adi,fixed-slew-rate;
          };
        };
      };
    };

