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

title: MT6331 Regulator from MediaTek Integrated

maintainers:
  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

description: |
  The MT6331 PMIC provides 6 BUCK and 21 LDO (Low Dropout) regulators
  and nodes are named according to the regulator type:
  buck-<name> and ldo-<name>.
  MT6331 regulators node should be sub node of the MT6397 MFD node.

properties:
  compatible:
    const: mediatek,mt6331-regulator

patternProperties:
  "^buck-v(core2|io18|dvfs11|dvfs12|dvfs13|dvfs14)$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^v(core2|io18|dvfs11|dvfs12|dvfs13|dvfs14)$"

    unevaluatedProperties: false

  "^ldo-(avdd32aud|vauxa32)$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^(avdd32_aud|vauxa32)$"

    unevaluatedProperties: false

  "^ldo-v(dig18|emc33|ibr|io28|mc|mch|mipi|rtc|sim1|sim2|sram|usb10)$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^v(dig18|emc33|ibr|io28|mc|mch|mipi|rtc|sim1|sim2|sram|usb)$"

    unevaluatedProperties: false

  "^ldo-vcam(a|af|d|io)$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^vcam(a|_af|d|io)$"

    unevaluatedProperties: false

  "^ldo-vtcxo[12]$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^vtcxo[12]$"

    required:
      - regulator-name

    unevaluatedProperties: false

  "^ldo-vgp[1234]$":
    type: object
    $ref: regulator.yaml#

    properties:
      regulator-name:
        pattern: "^vgp[1234]$"

    required:
      - regulator-name

    unevaluatedProperties: false

required:
  - compatible

additionalProperties: false

examples:
  - |
    pmic {
      regulators {
        mt6331_vdvfs11_reg: buck-vdvfs11 {
          regulator-name = "vdvfs11";
          regulator-min-microvolt = <700000>;
          regulator-max-microvolt = <1493750>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <1>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vdvfs12_reg: buck-vdvfs12 {
          regulator-name = "vdvfs12";
          regulator-min-microvolt = <700000>;
          regulator-max-microvolt = <1493750>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <1>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vdvfs13_reg: buck-vdvfs13 {
          regulator-name = "vdvfs13";
          regulator-min-microvolt = <700000>;
          regulator-max-microvolt = <1493750>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <1>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vdvfs14_reg: buck-vdvfs14 {
          regulator-name = "vdvfs14";
          regulator-min-microvolt = <700000>;
          regulator-max-microvolt = <1493750>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <1>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vcore2_reg: buck-vcore2 {
          regulator-name = "vcore2";
          regulator-min-microvolt = <700000>;
          regulator-max-microvolt = <1493750>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <1>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vio18_reg: buck-vio18 {
          regulator-name = "vio18";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <1800000>;
          regulator-ramp-delay = <12500>;
          regulator-enable-ramp-delay = <0>;
          regulator-allowed-modes = <0 1>;
        };
        mt6331_vtcxo1_reg: ldo-vtcxo1 {
          regulator-name = "vtcxo1";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <2800000>;
          regulator-always-on;
          regulator-boot-on;
        };
        mt6331_vtcxo2_reg: ldo-vtcxo2 {
          regulator-name = "vtcxo2";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <2800000>;
          regulator-always-on;
          regulator-boot-on;
        };
        mt6331_avdd32_aud_reg: ldo-avdd32aud {
          regulator-name = "avdd32_aud";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <3200000>;
        };
        mt6331_vauxa32_reg: ldo-vauxa32 {
          regulator-name = "vauxa32";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <3200000>;
        };
        mt6331_vcama_reg: ldo-vcama {
          regulator-name = "vcama";
          regulator-min-microvolt = <1500000>;
          regulator-max-microvolt = <2800000>;
          regulator-always-on;
        };
        mt6331_vio28_reg: ldo-vio28 {
          regulator-name = "vio28";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <2800000>;
          regulator-always-on;
          regulator-boot-on;
        };
        mt6331_vcamaf_reg: ldo-vcamaf {
          regulator-name = "vcam_af";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vmc_reg: ldo-vmc {
          regulator-name = "vmc";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vmch_reg: ldo-vmch {
          regulator-name = "vmch";
          regulator-min-microvolt = <3000000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vemc33_reg: ldo-vemc33 {
          regulator-name = "vemc33";
          regulator-min-microvolt = <3300000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vgp1_reg: ldo-vgp1 {
          regulator-name = "vgp1";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vsim1_reg: ldo-vsim1 {
          regulator-name = "vsim1";
          regulator-min-microvolt = <1700000>;
          regulator-max-microvolt = <3100000>;
        };
        mt6331_vsim2_reg: ldo-vsim2 {
          regulator-name = "vsim2";
          regulator-min-microvolt = <1700000>;
          regulator-max-microvolt = <3100000>;
        };
        mt6331_vmipi_reg: ldo-vmipi {
          regulator-name = "vmipi";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vibr_reg: ldo-vibr {
          regulator-name = "vibr";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <3300000>;
        };
        mt6331_vgp4_reg: ldo-vgp4 {
          regulator-name = "vgp4";
          regulator-min-microvolt = <1600000>;
          regulator-max-microvolt = <2200000>;
        };
        mt6331_vcamd_reg: ldo-vcamd {
          regulator-name = "vcamd";
          regulator-min-microvolt = <900000>;
          regulator-max-microvolt = <1500000>;
        };
        mt6331_vusb10_reg: ldo-vusb10 {
          regulator-name = "vusb";
          regulator-min-microvolt = <1000000>;
          regulator-max-microvolt = <1300000>;
          regulator-boot-on;
        };
        mt6331_vcamio_reg: ldo-vcamio {
          regulator-name = "vcam_io";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <1800000>;
        };
        mt6331_vsram_reg: ldo-vsram {
          regulator-name = "vsram";
          regulator-min-microvolt = <1012500>;
          regulator-max-microvolt = <1012500>;
          regulator-always-on;
          regulator-boot-on;
        };
        mt6331_vgp2_reg: ldo-vgp2 {
          regulator-name = "vgp2";
          regulator-min-microvolt = <1100000>;
          regulator-max-microvolt = <1500000>;
          regulator-boot-on;
        };
        mt6331_vgp3_reg: ldo-vgp3 {
          regulator-name = "vgp3";
          regulator-min-microvolt = <1200000>;
          regulator-max-microvolt = <1800000>;
        };
        mt6331_vrtc_reg: ldo-vrtc {
          regulator-name = "vrtc";
          regulator-min-microvolt = <2800000>;
          regulator-max-microvolt = <2800000>;
          regulator-always-on;
        };
        mt6331_vdig18_reg: ldo-vdig18 {
          regulator-name = "dvdd18_dig";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <1800000>;
        };
      };
    };
...
