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

title: STMicroelectonics STPMIC1 Power Management IC bindings

description: STMicroelectronics STPMIC1 Power Management IC

maintainers:
  - pascal Paillet <p.paillet@foss.st.com>

properties:
  compatible:
    const: st,stpmic1

  reg:
    const: 0x33

  interrupts:
    maxItems: 1

  "#interrupt-cells":
    const: 2

  interrupt-controller: true

  onkey:
    type: object

    $ref: ../input/input.yaml

    properties:
      compatible:
        const: st,stpmic1-onkey

      interrupts:
        items:
          - description: onkey-falling, happens when onkey is pressed. IT_PONKEY_F of pmic
          - description: onkey-rising, happens when onkey is released. IT_PONKEY_R of pmic

      interrupt-names:
        items:
          - const: onkey-falling
          - const: onkey-rising

      st,onkey-clear-cc-flag:
        description: onkey is able power on after an over-current shutdown event.
        $ref: /schemas/types.yaml#/definitions/flag

      st,onkey-pu-inactive:
        description: onkey pull up is not active
        $ref: /schemas/types.yaml#/definitions/flag

      power-off-time-sec:
        minimum: 1
        maximum: 16

    required:
      - compatible
      - interrupts
      - interrupt-names

    additionalProperties: false

  watchdog:
    type: object

    $ref: ../watchdog/watchdog.yaml

    properties:
      compatible:
        const: st,stpmic1-wdt

      timeout-sec: true

    required:
      - compatible

    additionalProperties: false

  regulators:
    type: object

    description: |
      Available Regulators in STPMIC1 device are:
        - buck1 for Buck BUCK1
        - buck2 for Buck BUCK2
        - buck3 for Buck BUCK3
        - buck4 for Buck BUCK4
        - ldo1 for LDO LDO1
        - ldo2 for LDO LDO2
        - ldo3 for LDO LDO3
        - ldo4 for LDO LDO4
        - ldo5 for LDO LDO5
        - ldo6 for LDO LDO6
        - vref_ddr for LDO Vref DDR
        - boost for Buck BOOST
        - pwr_sw1 for VBUS_OTG switch
        - pwr_sw2 for SW_OUT switch
      Switches are fixed voltage regulators with only enable/disable capability.

    properties:
      compatible:
        const: st,stpmic1-regulators

      ldo3:
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-min-microvolt: true
          regulator-max-microvolt: true
          regulator-allow-bypass: true
          regulator-over-current-protection: true

        additionalProperties: false

      ldo4:
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-over-current-protection: true

        additionalProperties: false

      vref_ddr:
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true

        additionalProperties: false

      boost:
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-over-current-protection: true

        additionalProperties: false

    patternProperties:
      "^(buck[1-4]|ldo[1-6]|boost|pwr_sw[1-2])-supply$":
        description: STPMIC1 voltage regulators supplies

      "^(buck[1-4]|ldo[1-6]|boost|vref_ddr|pwr_sw[1-2])$":
        $ref: ../regulator/regulator.yaml

      "^ldo[1-2,5-6]$":
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-min-microvolt: true
          regulator-max-microvolt: true
          regulator-over-current-protection: true
          regulator-enable-ramp-delay: true

        additionalProperties: false

      "^buck[1-4]$":
        type: object

        properties:
          interrupts:
            maxItems: 1

          st,mask-reset:
            description: mask reset for this regulator, the regulator configuration
              is maintained during pmic reset.
            $ref: /schemas/types.yaml#/definitions/flag

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-min-microvolt: true
          regulator-max-microvolt: true
          regulator-initial-mode: true
          regulator-pull-down: true
          regulator-over-current-protection: true
          regulator-enable-ramp-delay: true

        additionalProperties: false

      "^pwr_sw[1-2]$":
        type: object

        properties:
          interrupts:
            maxItems: 1

          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-over-current-protection: true
          regulator-active-discharge: true

        additionalProperties: false

    required:
      - compatible

    additionalProperties: false

additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - "#interrupt-cells"
  - interrupt-controller

examples:
  - |
    #include <dt-bindings/mfd/st,stpmic1.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@33 {
        compatible = "st,stpmic1";
        reg = <0x33>;
        interrupt-parent = <&gpioa>;
        interrupts = <0 2>;

        interrupt-controller;
        #interrupt-cells = <2>;

        onkey {
          compatible = "st,stpmic1-onkey";
          interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>;
          interrupt-names = "onkey-falling", "onkey-rising";
          power-off-time-sec = <10>;
        };

        watchdog {
          compatible = "st,stpmic1-wdt";
        };

        regulators {
          compatible = "st,stpmic1-regulators";

          ldo6-supply = <&v3v3>;

          buck1 {
            regulator-name = "vdd_core";
            interrupts = <IT_CURLIM_BUCK1 0>;
            st,mask-reset;
            regulator-boot-on;
            regulator-min-microvolt = <700000>;
            regulator-max-microvolt = <1200000>;
          };

          buck3 {
            regulator-name = "vdd";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-boot-on;
            regulator-pull-down;
          };

          buck4 {
            regulator-name = "v3v3";
            interrupts = <IT_CURLIM_BUCK4 0>;
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
          };

          ldo6 {
            regulator-name = "v1v8";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-over-current-protection;
          };
        };
      };
    };

...


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

title: ST-Ericsson Analog Baseband AB8500 and AB8505

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description:
  the AB8500 "Analog Baseband" is the mixed-signals integrated circuit
  handling power management (regulators), analog-to-digital conversion
  (ADC), battery charging, fuel gauging of the battery, battery-backed
  RTC, PWM, USB PHY and some GPIO lines in the ST-Ericsson U8500 platforms
  in connection with the DB8500 digital baseband. The DB8500 PRCMU
  communicates directly and autonomously with the AB8500 and thus it
  appears as a subnode of the DB8500 PRCMU. An altered version called
  AB8505 also exist, the difference in AB8505 is that some of the USB and
  USB charging handling has changed, and it has an embedded USB-to-serial
  converter. Most subblocks takes their interrupts directly from the
  AB8500 embedded interrupt controller.

properties:
  $nodename:
    pattern: '^ab850[05]$'

  compatible:
    enum:
      - stericsson,ab8500
      - stericsson,ab8505

  interrupts:
    maxItems: 1

  interrupt-controller: true

  '#interrupt-cells':
    const: 2

  # Some subnodes use a reg, some don't. Those that do use a single cell.
  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

  clock-controller:
    description: Node describing the AB8500 clock controller. This
      provides the reference clock for the entire U8500 system and
      the DB8500 counterpart.
    type: object
    additionalProperties: false

    properties:
      compatible:
        const: stericsson,ab8500-clk

      '#clock-cells':
        const: 1

  gpio:
    description: Node describing the AB8500 GPIO controller. A few
      GPIO pins available for misc usage.
    type: object
    additionalProperties: false

    properties:
      compatible:
        enum:
          - stericsson,ab8500-gpio
          - stericsson,ab8505-gpio

      gpio-controller: true

      '#gpio-cells':
        const: 2

  rtc:
    description: Node describing the AB8500 battery-backed RTC.
    type: object
    additionalProperties: false

    properties:
      compatible:
        const: stericsson,ab8500-rtc

      interrupts:
        items:
          - description: 60 second interval alarm interrupt
          - description: RTC alarm

      interrupt-names:
        items:
          - const: 60S
          - const: ALARM

  adc:
    description: Node describing the AB8500 general purpose analog to digital
      converter, GPADC.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-gpadc

      # AB8505 only supports one (software) EOC interrupt
      interrupts:
        minItems: 1
        maxItems: 2

      interrupt-names: true

      vddadc-supply: true

      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

      '#io-channel-cells':
        const: 1

    patternProperties:
      "^channel@[0-9a-f]+$":
        type: object
        $ref: ../iio/adc/adc.yaml#
        description: Represents each of the external channels which are
          connected to the ADC.

        properties:
          reg:
            items:
              minimum: 1
              maximum: 31

        required:
          - reg

        additionalProperties: false

    required:
      - compatible
      - interrupts
      - interrupt-names
      - vddadc-supply
      - '#address-cells'
      - '#size-cells'
      - '#io-channel-cells'

    additionalProperties: false

  thermal:
    description: Node describing the AB8500 thermal control block. All this block
      really does is to fire an interrupt when the die becomes 130 degrees Celsius
      in temperature.
    type: object

    properties:
      compatible:
        const: stericsson,abx500-temp

      interrupts:
        items:
          - description: Thermal warm warning interrupt

      interrupt-names:
        items:
          - const: ABX500_TEMP_WARM

    required:
      - compatible
      - interrupts
      - interrupt-names

    additionalProperties: false

  ab8500_fg:
    description: Node describing the AB8500 fuel gauge control block.
    type: object
    $ref: ../power/supply/stericsson,ab8500-fg.yaml

  ab8500_btemp:
    description: Node describing the AB8500 battery temperature control block.
    type: object
    $ref: ../power/supply/stericsson,ab8500-btemp.yaml

  ab8500_charger:
    description: Node describing the AB8500 battery charger control block.
    type: object
    $ref: ../power/supply/stericsson,ab8500-charger.yaml

  ab8500_chargalg:
    description: Node describing the AB8500 battery charger algorithm.
    type: object
    $ref: ../power/supply/stericsson,ab8500-chargalg.yaml

  phy:
    description: Node describing the AB8500 USB PHY control block.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-usb

      interrupts:
        items:
          - description: ID wakeup rising IRQ
          - description: ID wakeup falling IRQ
          - description: VBUS detection falling IRQ
          - description: VBUS detection rising IRQ
          - description: USB link status change IRQ
          - description: ADP probe plug IRQ
          - description: ADP probe unplug IRQ

      interrupt-names:
        items:
          - const: ID_WAKEUP_R
          - const: ID_WAKEUP_F
          - const: VBUS_DET_F
          - const: VBUS_DET_R
          - const: USB_LINK_STATUS
          - const: USB_ADP_PROBE_PLUG
          - const: USB_ADP_PROBE_UNPLUG

      vddulpivio18-supply: true
      v-ape-supply: true
      musb_1v8-supply: true

      clocks:
        items:
          - description: PRCMY system clock

      clock-names:
        items:
          - const: sysclk

      '#phy-cells':
        const: 0

    required:
      - compatible
      - interrupts
      - interrupt-names
      - vddulpivio18-supply
      - v-ape-supply
      - musb_1v8-supply
      - clocks
      - clock-names
      - '#phy-cells'

    additionalProperties: false

  key:
    description: Node describing the AB8500 power-on key control block.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-poweron-key

      interrupts:
        items:
          - description: ON key falling IRQ
          - description: ON key rising IRQ

      interrupt-names:
        items:
          - const: ONKEY_DBF
          - const: ONKEY_DBR

    required:
      - compatible
      - interrupts
      - interrupt-names

    additionalProperties: false

  ab8500-sysctrl:
    description: Node describing the AB8500 system control block.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-sysctrl

    required:
      - compatible

    additionalProperties: false

  codec:
    description: Node describing the AB8500 audio codec block.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-codec

      V-AUD-supply: true
      V-AMIC1-supply: true
      V-AMIC2-supply: true
      V-DMIC-supply: true

      clocks:
        items:
          - description: Audio system clock

      clock-names:
        items:
          - const: audioclk

      stericsson,earpeice-cmv:
        description: Earpeice voltage
        $ref: /schemas/types.yaml#/definitions/uint32
        enum: [ 950, 1100, 1270, 1580 ]

    required:
      - compatible

    additionalProperties: false

  regulator:
    description: Node describing the AB8500 internal regulators.
    type: object

    properties:
      compatible:
        enum:
          - stericsson,ab8500-regulator
          - stericsson,ab8505-regulator

      vin-supply:
        description: The regulator supplying all of the internal regulators
          with power.

      ab8500_ldo_aux1:
        description: The voltage for the auxilary LDO regulator 1
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_aux2:
        description: The voltage for the auxilary LDO regulator 2
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_aux3:
        description: The voltage for the auxilary LDO regulator 3
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_aux4:
        description: The voltage for the auxilary LDO regulator 4
          only present on AB8505
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_aux5:
        description: The voltage for the auxilary LDO regulator 5
          only present on AB8505
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_aux6:
        description: The voltage for the auxilary LDO regulator 6
          only present on AB8505
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      # There is never any AUX7 regulator which is confusing

      ab8500_ldo_aux8:
        description: The voltage for the auxilary LDO regulator 8
          only present on AB8505
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_intcore:
        description: The LDO regulator for the internal core voltage
          of the AB8500
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_adc:
        description: Analog power regulator for the analog to digital converter
          ADC, only present on AB8505
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_tvout:
        description: The voltage for the TV output regulator, incidentally
          this voltage is also used for other purposes such as measuring
          the temperature of the NTC thermistor on the battery.
          Only present on AB8500.
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_audio:
        description: The LDO regulator for the audio codec output
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_anamic1:
        description: The LDO regulator for the analog microphone 1
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_anamic2:
        description: The LDO regulator for the analog microphone 2
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_dmic:
        description: The LDO regulator for the digital microphone
          only present on AB8500
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ldo_ana:
        description: Analog power regulator for CSI and DSI interfaces,
          Camera Serial Interface CSI and Display Serial Interface DSI.
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

    required:
      - compatible

    additionalProperties: false

  regulator-external:
    description: Node describing the AB8500 external regulators. This
      concerns the autonomous regulators VSMPS1, VSMPS2 and VSMPS3
      that are normally controlled by external electronics but also
      sometimes need to be explicitly controlled by software.
    type: object

    properties:
      compatible:
        const: stericsson,ab8500-ext-regulator

      ab8500_ext1:
        description: The voltage for the VSMPS1 external regulator
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ext2:
        description: The voltage for the VSMPS2 external regulator
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

      ab8500_ext3:
        description: The voltage for the VSMPS3 external regulator
        type: object
        $ref: ../regulator/regulator.yaml#
        unevaluatedProperties: false

    required:
      - compatible

    additionalProperties: false

patternProperties:
  "^pwm@[1-9]+?$":
    type: object
    $ref: ../pwm/pwm.yaml#
    unevaluatedProperties: false
    description: Represents each of the PWM blocks in the AB8500

    properties:
      compatible:
        const: stericsson,ab8500-pwm

      reg: true

      clocks:
        items:
          - description: internal clock

      clock-names:
        items:
          - const: intclk

    required:
      - compatible
      - reg

required:
  - compatible
  - clock-controller
  - gpio
  - rtc
  - adc
  - thermal
  - ab8500_fg
  - ab8500_btemp
  - ab8500_charger
  - ab8500_chargalg
  - phy
  - key
  - regulator

additionalProperties: false

repo_name: angery/linux


code:
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/stericsson,db8500-prcmu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ST-Ericsson DB8500 PRCMU - Power Reset and Control Management Unit

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description:
  The DB8500 Power Reset and Control Management Unit is an XP70 8-bit
  microprocessor that is embedded in the always-on power domain of the
  DB8500 SoCs to manage the low power states, powering up and down parts
  of the silicon, and controlling reset of different IP blocks.

properties:
  $nodename:
    pattern: '^prcmu@[0-9a-f]+$'

  compatible:
    description: The device is compatible both to the device-specific
      compatible "stericsson,db8500-prcmu" and "syscon". The latter
      compatible is needed for the device to be exposed as a system
      controller so that arbitrary registers can be access by
      different operating system components.
    items:
      - const: stericsson,db8500-prcmu
      - const: syscon

  reg:
    items:
      - description: Main PRCMU register area
      - description: PRCMU TCPM register area
      - description: PRCMU TCDM register area

  reg-names:
    items:
      - const: prcmu
      - const: prcmu-tcpm
      - const: prcmu-tcdm

  interrupts:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 1

  ranges: true

  interrupt-controller: true

  '#interrupt-cells':
    const: 2

  db8500-prcmu-regulators:
    description: Node describing the DB8500 regulators. These are mainly
      power rails inside the silicon but some of those are also routed
      out to external pins.
    type: object

    properties:
      compatible:
        const: stericsson,db8500-prcmu-regulator

      db8500_vape:
        description: The voltage for the application processor, the
          main voltage domain for the chip.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_varm:
        description: The voltage for the ARM Cortex A-9 CPU.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vmodem:
        description: The voltage for the modem subsystem.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vpll:
        description: The voltage for the phase locked loop clocks.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vsmps1:
        description: Also known as VIO12, is a step-down voltage regulator
          for 1.2V I/O. SMPS means System Management Power Source.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vsmps2:
        description: Also known as VIO18, is a step-down voltage regulator
          for 1.8V I/O. SMPS means System Management Power Source.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vsmps3:
        description: This is a step-down voltage regulator
          for 0.87 thru 1.875V I/O. SMPS means System Management Power Source.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_vrf1:
        description: RF transciever voltage regulator.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sva_mmdsp:
        description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
          voltage regulator. This is the voltage for the accelerator DSP
          for video encoding and decoding.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sva_mmdsp_ret:
        description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
          voltage regulator for retention mode.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sva_pipe:
        description: Smart Video Accelerator (SVA) multimedia DSP (MMDSP)
          voltage regulator for the data pipe.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sia_mmdsp:
        description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
          voltage regulator. This is the voltage for the accelerator DSP
          for image encoding and decoding.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sia_mmdsp_ret:
        description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
          voltage regulator for retention mode.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sia_pipe:
        description: Smart Image Accelerator (SIA) multimedia DSP (MMDSP)
          voltage regulator for the data pipe.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_sga:
        description: Smart Graphics Accelerator (SGA) voltage regulator.
          This is in effect controlling the power to the MALI400 3D
          accelerator block.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_b2r2_mcde:
        description: Blit Blend Rotate and Rescale (B2R2), and Multi-Channel
          Display Engine (MCDE) voltage regulator. These are two graphics
          blocks.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_esram12:
        description: Embedded Static RAM (ESRAM) 1 and 2 voltage regulator.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_esram12_ret:
        description: Embedded Static RAM (ESRAM) 1 and 2 voltage regulator for
          retention mode.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_esram34:
        description: Embedded Static RAM (ESRAM) 3 and 4 voltage regulator.
        type: object
        $ref: ../regulator/regulator.yaml#

      db8500_esram34_ret:
        description: Embedded Static RAM (ESRAM) 3 and 4 voltage regulator for
          retention mode.
        type: object
        $ref: ../regulator/regulator.yaml#

    required:
      - compatible
      - db8500_vape
      - db8500_varm
      - db8500_vmodem
      - db8500_vpll
      - db8500_vsmps1
      - db8500_vsmps2
      - db8500_vsmps3
      - db8500_vrf1
      - db8500_sva_mmdsp
      - db8500_sva_mmdsp_ret
      - db8500_sva_pipe
      - db8500_sia_mmdsp
      - db8500_sia_mmdsp_ret
      - db8500_sia_pipe
      - db8500_sga
      - db8500_b2r2_mcde
      - db8500_esram12
      - db8500_esram12_ret
      - db8500_esram34
      - db8500_esram34_ret

    additionalProperties: false

patternProperties:
  "^thermal@[0-9a-f]+$":
    description: Node describing the DB8500 thermal control functions.
      This binds to an operating system driver that monitors the
      temperature of the SoC.
    type: object

    properties:
      compatible:
        const: stericsson,db8500-thermal

      reg:
        maxItems: 1

      interrupts:
        items:
          - description: Hotmon low interrupt (falling temperature)
          - description: Hotmon high interrupt (rising temperature)

      interrupt-names:
        items:
          - const: IRQ_HOTMON_LOW
          - const: IRQ_HOTMON_HIGH

      '#thermal-sensor-cells':
        const: 0

    additionalProperties: false

  "^prcmu-timer-4@[0-9a-f]+$":
    description: Node describing the externally visible timer 4 in the
      PRCMU block. This timer is interesting to the operating system
      since even thought it has a very low resolution (32768 Hz) it is
      always on, and thus provides a consistent monotonic timeline for
      the system.
    type: object

    properties:
      compatible:
        const: stericsson,db8500-prcmu-timer-4

      reg:
        maxItems: 1

    additionalProperties: false

  "^ab850[05]$":
    description: Node describing the Analog Baseband 8500 mixed-signals
      ASIC AB8500 and subcomponents. The AB8500 is accessed through the
      PRCMU and hence it appears here. This component has a separate
      set of devicetree bindings. The AB8505 is a newer version of the
      same ASIC.
    type: object
    $ref: stericsson,ab8500.yaml#

required:
  - compatible
  - reg
  - '#address-cells'
  - '#size-cells'
  - ranges
  - interrupts
  - interrupt-controller
  - '#interrupt-cells'
  - db8500-prcmu-regulators

additionalProperties: false


code:
* ST Microelectronics STMPE Multi-Functional Device

STMPE is an MFD device which may expose the following inbuilt devices: gpio,
keypad, touchscreen, adc, pwm, rotator.

Required properties:
 - compatible			: "st,stmpe[610|801|811|1600|1601|2401|2403]"
 - reg				: I2C/SPI address of the device

Optional properties:
 - interrupts			: The interrupt outputs from the controller
 - interrupt-controller		: Marks the device node as an interrupt controller
 - wakeup-source		: Marks the input device as wakable
 - st,autosleep-timeout		: Valid entries (ms); 4, 16, 32, 64, 128, 256, 512 and 1024
 - irq-gpio			: If present, which GPIO to use for event IRQ

Optional properties for devices with touch and ADC (STMPE811|STMPE610):
 - st,sample-time		: ADC conversion time in number of clock.
					0 -> 36 clocks		4 -> 80 clocks (recommended)
					1 -> 44 clocks		5 -> 96 clocks
					2 -> 56 clocks		6 -> 124 clocks
					3 -> 64 clocks
 - st,mod-12b			: ADC Bit mode
					0 -> 10bit ADC		1 -> 12bit ADC
 - st,ref-sel			: ADC reference source
					0 -> internal		1 -> external
 - st,adc-freq			: ADC Clock speed
					0 -> 1.625 MHz		2 || 3 -> 6.5 MHz
					1 -> 3.25 MHz

Example:

	stmpe1601: stmpe1601@40 {
		compatible = "st,stmpe1601";
		reg = <0x40>;
		interrupts = <26 0x4>;
		interrupt-parent = <&gpio6>;
		interrupt-controller;

		wakeup-source;
		st,autosleep-timeout = <1024>;
	};


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

title: System Controller Registers R/W

description: |
  System controller node represents a register region containing a set
  of miscellaneous registers. The registers are not cohesive enough to
  represent as any specific type of device. The typical use-case is
  for some other node's driver, or platform-specific code, to acquire
  a reference to the syscon node (e.g. by phandle, node path, or
  search using a specific compatible value), interrogate the node (or
  associated OS driver) to determine the location of the registers,
  and access the registers directly.

maintainers:
  - Lee Jones <lee@kernel.org>

select:
  properties:
    compatible:
      contains:
        enum:
          - syscon

  required:
    - compatible

properties:
  compatible:
    anyOf:
      - items:
          - enum:
              - allwinner,sun8i-a83t-system-controller
              - allwinner,sun8i-h3-system-controller
              - allwinner,sun8i-v3s-system-controller
              - allwinner,sun50i-a64-system-controller
              - brcm,cru-clkset
              - freecom,fsg-cs2-system-controller
              - fsl,imx93-aonmix-ns-syscfg
              - fsl,imx93-wakeupmix-syscfg
              - hisilicon,dsa-subctrl
              - hisilicon,hi6220-sramctrl
              - hisilicon,pcie-sas-subctrl
              - hisilicon,peri-subctrl
              - intel,lgm-syscon
              - marvell,armada-3700-usb2-host-misc
              - mediatek,mt8135-pctl-a-syscfg
              - mediatek,mt8135-pctl-b-syscfg
              - microchip,lan966x-cpu-syscon
              - microchip,sparx5-cpu-syscon
              - mstar,msc313-pmsleep
              - rockchip,px30-qos
              - rockchip,rk3036-qos
              - rockchip,rk3066-qos
              - rockchip,rk3228-qos
              - rockchip,rk3288-qos
              - rockchip,rk3368-qos
              - rockchip,rk3399-qos
              - rockchip,rk3568-qos
              - rockchip,rk3588-qos
              - rockchip,rv1126-qos
              - samsung,exynos3-sysreg
              - samsung,exynos4-sysreg
              - samsung,exynos5-sysreg
              - samsung,exynos5433-sysreg
              - samsung,exynos850-sysreg
              - samsung,exynosautov9-sysreg

          - const: syscon

      - contains:
          const: syscon
        minItems: 2
        maxItems: 5  # Should be enough

  reg:
    maxItems: 1

  reg-io-width:
    description: |
      The size (in bytes) of the IO accesses that should be performed
      on the device.
    enum: [1, 2, 4, 8]

  hwlocks:
    maxItems: 1
    description:
      Reference to a phandle of a hardware spinlock provider node.

required:
  - compatible
  - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: simple-mfd
    then:
      properties:
        compatible:
          minItems: 3
          maxItems: 5

additionalProperties: true

examples:
  - |
    syscon: syscon@1c00000 {
        compatible = "allwinner,sun8i-h3-system-controller", "syscon";
        reg = <0x01c00000 0x1000>;
    };
...


code:
* Toshiba TC3589x multi-purpose expander

The Toshiba TC3589x series are I2C-based MFD devices which may expose the
following built-in devices: gpio, keypad, rotator (vibrator), PWM (for
e.g. LEDs or vibrators) The included models are:

- TC35890
- TC35892
- TC35893
- TC35894
- TC35895
- TC35896

Required properties:
 - compatible : must be "toshiba,tc35890", "toshiba,tc35892", "toshiba,tc35893",
   "toshiba,tc35894", "toshiba,tc35895" or "toshiba,tc35896"
 - reg : I2C address of the device
 - interrupts : the interrupt on the parent the controller is connected to
 - interrupt-controller : marks the device node as an interrupt controller
 - #interrupt-cells : should be <1>, the first cell is the IRQ offset on this
   TC3589x interrupt controller.

Optional nodes:

- GPIO
  This GPIO module inside the TC3589x has 24 (TC35890, TC35892) or 20
  (other models) GPIO lines.
 - compatible : must be "toshiba,tc3589x-gpio"
 - interrupts : interrupt on the parent, which must be the tc3589x MFD device
 - interrupt-controller : marks the device node as an interrupt controller
 - #interrupt-cells : should be <2>, the first cell is the IRQ offset on this
   TC3589x GPIO interrupt controller, the second cell is the interrupt flags
   in accordance with <dt-bindings/interrupt-controller/irq.h>. The following
   flags are valid:
   - IRQ_TYPE_LEVEL_LOW
   - IRQ_TYPE_LEVEL_HIGH
   - IRQ_TYPE_EDGE_RISING
   - IRQ_TYPE_EDGE_FALLING
   - IRQ_TYPE_EDGE_BOTH
 - gpio-controller : marks the device node as a GPIO controller
 - #gpio-cells : should be <2>, the first cell is the GPIO offset on this
   GPIO controller, the second cell is the flags.

- Keypad
  This keypad is the same on all variants, supporting up to 96 different
  keys. The linux-specific properties are modeled on those already existing
  in other input drivers.
 - compatible : must be "toshiba,tc3589x-keypad"
 - debounce-delay-ms : debounce interval in milliseconds
 - keypad,num-rows : number of rows in the matrix, see
   bindings/input/matrix-keymap.txt
 - keypad,num-columns : number of columns in the matrix, see
   bindings/input/matrix-keymap.txt
 - linux,keymap: the definition can be found in
   bindings/input/matrix-keymap.txt
 - linux,no-autorepeat: do no enable autorepeat feature.
 - wakeup-source: use any event on keypad as wakeup event.
		  (Legacy property supported: "linux,wakeup")

Example:

tc35893@44 {
	compatible = "toshiba,tc35893";
	reg = <0x44>;
	interrupt-parent = <&gpio6>;
	interrupts = <26 IRQ_TYPE_EDGE_RISING>;

	interrupt-controller;
	#interrupt-cells = <1>;

	tc3589x_gpio {
		compatible = "toshiba,tc3589x-gpio";
		interrupts = <0>;

		interrupt-controller;
		#interrupt-cells = <2>;
		gpio-controller;
		#gpio-cells = <2>;
	};
	tc3589x_keypad {
		compatible = "toshiba,tc3589x-keypad";
		interrupts = <6>;
		debounce-delay-ms = <4>;
		keypad,num-columns = <8>;
		keypad,num-rows = <8>;
		linux,no-autorepeat;
		linux,keymap = <0x0301006b
				0x04010066
				0x06040072
				0x040200d7
				0x0303006a
				0x0205000e
				0x0607008b
				0x0500001c
				0x0403000b
				0x03040034
				0x05020067
				0x0305006c
				0x040500e7
				0x0005009e
				0x06020073
				0x01030039
				0x07060069
				0x050500d9>;
		wakeup-source;
	};
};


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,am3359-tscadc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI AM3359 Touchscreen controller/ADC

maintainers:
  - Miquel Raynal <miquel.raynal@bootlin.com>

properties:
  compatible:
    oneOf:
      - const: ti,am3359-tscadc
      - items:
          - const: ti,am654-tscadc
          - const: ti,am3359-tscadc
      - const: ti,am4372-magadc

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    const: fck

  dmas:
    items:
      - description: DMA controller phandle and request line for FIFO0
      - description: DMA controller phandle and request line for FIFO1

  dma-names:
    items:
      - const: fifo0
      - const: fifo1

  adc:
    type: object
    description: ADC child

  tsc:
    type: object
    description: Touchscreen controller child

  mag:
    type: object
    description: Magnetic reader

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - dmas
  - dma-names

additionalProperties: false

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

    tscadc@0 {
        compatible = "ti,am3359-tscadc";
        reg = <0x0 0x1000>;
        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&adc_tsc_fck>;
        clock-names = "fck";
        dmas = <&edma 53 0>, <&edma 57 0>;
        dma-names = "fifo0", "fifo1";

        tsc {
        };

        adc {
        };
    };


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,j721e-system-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI J721e System Controller Registers R/W

description: |
  This represents the Control Module registers (CTRL_MMR0) on the SoC.
  System controller node represents a register region containing a set
  of miscellaneous registers. The registers are not cohesive enough to
  represent as any specific type of device. The typical use-case is
  for some other node's driver, or platform-specific code, to acquire
  a reference to the syscon node (e.g. by phandle, node path, or
  search using a specific compatible value), interrogate the node (or
  associated OS driver) to determine the location of the registers,
  and access the registers directly.

maintainers:
  - Kishon Vijay Abraham I <kishon@ti.com>
  - Roger Quadros <rogerq@kernel.org>

properties:
  compatible:
    items:
      - enum:
          - ti,j721e-system-controller
      - const: syscon
      - const: simple-mfd

  reg:
    maxItems: 1

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  ranges: true

patternProperties:
  # Optional children
  "^mux-controller@[0-9a-f]+$":
    type: object
    description:
      This is the SERDES lane control mux.

  "^clock-controller@[0-9a-f]+$":
    type: object
    $ref: /schemas/clock/ti,am654-ehrpwm-tbclk.yaml#
    description:
      Clock provider for TI EHRPWM nodes.

  "phy@[0-9a-f]+$":
    type: object
    $ref: /schemas/phy/ti,phy-gmii-sel.yaml#
    description:
      The phy node corresponding to the ethernet MAC.

required:
  - compatible
  - reg
  - "#address-cells"
  - "#size-cells"
  - ranges

additionalProperties: false

examples:
  - |
    scm_conf: scm-conf@100000 {
        compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
        reg = <0x00100000 0x1c000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        serdes_ln_ctrl: mux-controller@4080 {
            compatible = "mmio-mux";
            reg = <0x00004080 0x50>;

            #mux-control-cells = <1>;
            mux-reg-masks =
                <0x4080 0x3>, <0x4084 0x3>, /* SERDES0 lane0/1 select */
                <0x4090 0x3>, <0x4094 0x3>, /* SERDES1 lane0/1 select */
                <0x40a0 0x3>, <0x40a4 0x3>, /* SERDES2 lane0/1 select */
                <0x40b0 0x3>, <0x40b4 0x3>, /* SERDES3 lane0/1 select */
                <0x40c0 0x3>, <0x40c4 0x3>, <0x40c8 0x3>, <0x40cc 0x3>;
                /* SERDES4 lane0/1/2/3 select */
        };

        clock-controller@4140 {
            compatible = "ti,am654-ehrpwm-tbclk", "syscon";
            reg = <0x4140 0x18>;
            #clock-cells = <1>;
        };
    };
...


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,lp87524-q1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI LP87524-Q1 four 1-phase output buck converter

maintainers:
  - Keerthy <j-keerthy@ti.com>

properties:
  compatible:
    const: ti,lp87524-q1

  reg:
    description: I2C slave address
    const: 0x60

  reset-gpios:
    description: GPIO connected to NRST pin (active low reset, pin 20)
    maxItems: 1

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number.
      The second cell is is used to specify flags.
      See ../gpio/gpio.txt for more information.
    const: 2

  regulators:
    type: object

    patternProperties:
      "^buck[0123]$":
        type: object
        $ref: /schemas/regulator/regulator.yaml#

    required:
      - buck0
      - buck1
      - buck2
      - buck3

    additionalProperties: false

patternProperties:
  "^buck[0123]-in-supply$":
    description: Voltage regulator supply for each BUCK converter

required:
  - compatible
  - reg
  - gpio-controller
  - '#gpio-cells'
  - buck0-in-supply
  - buck1-in-supply
  - buck2-in-supply
  - buck3-in-supply
  - regulators

additionalProperties: false

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

        pmic@60 {
            compatible = "ti,lp87524-q1";
            reg = <0x60>;
            gpio-controller;
            #gpio-cells = <2>;

            buck0-in-supply = <&vdd_5v0>;
            buck1-in-supply = <&vdd_5v0>;
            buck2-in-supply = <&vdd_5v0>;
            buck3-in-supply = <&vdd_5v0>;

            regulators {
                buck0_reg: buck0 {
                    regulator-name = "buck0";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                };

                buck1_reg: buck1 {
                    regulator-name = "buck1";
                    regulator-min-microvolt = <1350000>;
                    regulator-max-microvolt = <1350000>;
                    regulator-always-on;
                };

                buck2_reg: buck2 {
                    regulator-name = "buck2";
                    regulator-min-microvolt = <950000>;
                    regulator-max-microvolt = <950000>;
                    regulator-always-on;
                };

                buck3_reg: buck3 {
                    regulator-name = "buck3";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-always-on;
                };
            };
        };
    };

...


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,lp87561-q1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI LP87561-Q1 single 4-phase output buck converter

maintainers:
  - Keerthy <j-keerthy@ti.com>

properties:
  compatible:
    const: ti,lp87561-q1

  reg:
    description: I2C slave address
    const: 0x60

  reset-gpios:
    description: GPIO connected to NRST pin (active low reset, pin 20)
    maxItems: 1

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number.
      The second cell is is used to specify flags.
      See ../gpio/gpio.txt for more information.
    const: 2

  buck3210-in-supply:
    description:
      Voltage regulator supply for all the four BUCK converters.

  regulators:
    type: object

    properties:
      buck3210:
        type: object
        $ref: /schemas/regulator/regulator.yaml#

    required:
      - buck3210

    additionalProperties: false

required:
  - compatible
  - reg
  - gpio-controller
  - '#gpio-cells'
  - buck3210-in-supply

additionalProperties: false

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

        pmic@60 {
            compatible = "ti,lp87561-q1";
            reg = <0x60>;
            gpio-controller;
            #gpio-cells = <2>;

            buck3210-in-supply = <&vsys_3v3>;

            regulators {
                buck3210_reg: buck3210 {
                    /* VDD_CORE */
                    regulator-name = "buck3210";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <800000>;
                    regulator-always-on;
                    regulator-boot-on;
                };
            };
        };
    };

...


code:
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/ti,lp87565-q1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI LP87565-Q1 / LP87565 dual 2-phase output buck converter

maintainers:
  - Keerthy <j-keerthy@ti.com>

properties:
  compatible:
    enum:
      - ti,lp87565
      - ti,lp87565-q1

  reg:
    description: I2C slave address
    const: 0x60

  reset-gpios:
    description: GPIO connected to NRST pin (active low reset, pin 20)
    maxItems: 1

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number.
      The second cell is is used to specify flags.
      See ../gpio/gpio.txt for more information.
    const: 2

  buck10-in-supply:
    description:
      Voltage regulator supply for BUCK0 and BUCK1 converters.

  buck23-in-supply:
    description:
      Voltage regulator supply for BUCK2 and BUCK3 converters.

  regulators:
    type: object

    patternProperties:
      "^buck(10|23)$":
        type: object
        $ref: /schemas/regulator/regulator.yaml#

    required:
      - buck10
      - buck23

    additionalProperties: false

required:
  - compatible
  - reg
  - gpio-controller
  - '#gpio-cells'
  - buck10-in-supply
  - buck23-in-supply

additionalProperties: false

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

        pmic@60 {
            compatible = "ti,lp87565-q1";
            reg = <0x60>;
            gpio-controller;
            #gpio-cells = <2>;

            buck10-in-supply = <&vsys_3v3>;
            buck23-in-supply = <&vsys_3v3>;

            regulators {
                buck10_reg: buck10 {
                    /* VDD_MPU */
                    regulator-name = "buck10";
                    regulator-min-microvolt = <850000>;
                    regulator-max-microvolt = <1250000>;
                    regulator-always-on;
                    regulator-boot-on;
                };

                buck23_reg: buck23 {
                    /* VDD_GPU */
                    regulator-name = "buck23";
                    regulator-min-microvolt = <850000>;
                    regulator-max-microvolt = <1250000>;
                    regulator-boot-on;
                    regulator-always-on;
                };
            };
        };
    };

...


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

title: TPS65086 Power Management Integrated Circuit (PMIC)

maintainers:
  - Emil Renner Berthing <kernel@esmil.dk>

properties:
  compatible:
    const: ti,tps65086

  reg:
    const: 0x5e
    description: I2C slave address

  interrupts:
    maxItems: 1

  interrupt-controller: true

  '#interrupt-cells':
    const: 2
    description: |
      The first cell is the IRQ number. The second cell is the flags,
      encoded as trigger masks from ../interrupt-controller/interrupts.txt.

  gpio-controller: true

  '#gpio-cells':
    const: 2
    description: |
      The first cell is the pin number and the second cell is used to specify
      flags.  See ../gpio/gpio.txt for more information.

  regulators:
    type: object
    additionalProperties: false
    description: |
      List of child nodes that specify the regulator initialization data.
      Child nodes must be named after their hardware counterparts:
      buck[1-6], ldoa[1-3], swa1, swb[1-2], and vtt.
      Each child node is defined using the standard binding for regulators and
      the optional regulator properties defined below.

    patternProperties:
      "^buck[1-6]$":
        type: object
        $ref: ../regulator/regulator.yaml

        properties:
          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-min-microvolt: true
          regulator-max-microvolt: true
          ti,regulator-step-size-25mv:
            type: boolean
            description: |
              Set this if the regulator is factory set with a 25mv step voltage
              mapping.
          ti,regulator-decay:
            type: boolean
            description: |
              Set this if the output needs to decay, default is for the output
              to slew down.

        additionalProperties: false

      "^(ldoa[1-3]|swa1|swb[1-2]|vtt)$":
        type: object
        $ref: ../regulator/regulator.yaml

        properties:
          regulator-name: true
          regulator-boot-on: true
          regulator-always-on: true
          regulator-min-microvolt: true
          regulator-max-microvolt: true

        additionalProperties: false

additionalProperties: false

required:
  - compatible
  - reg
  - gpio-controller
  - '#gpio-cells'
  - regulators

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c0 {
        #address-cells = <1>;
        #size-cells = <0>;

        pmic: pmic@5e {
            compatible = "ti,tps65086";
            reg = <0x5e>;
            interrupt-parent = <&gpio1>;
            interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
            interrupt-controller;
            #interrupt-cells = <2>;
            gpio-controller;
            #gpio-cells = <2>;

            regulators {
                buck1 {
                    regulator-name = "vcc1";
                    regulator-min-microvolt = <1600000>;
                    regulator-max-microvolt = <1600000>;
                    regulator-boot-on;
                    ti,regulator-decay;
                    ti,regulator-step-size-25mv;
                };
            };
        };
    };

...


code:
* Device tree bindings for Texas Instruments keystone device state control

The Keystone II devices have a set of registers that are used to control
the status of its peripherals. This node is intended to allow access to
this functionality.

Required properties:

- compatible:		"ti,keystone-devctrl", "syscon"

- reg:			contains offset/length value for device state control
			registers space.

Example:

devctrl: device-state-control@02620000 {
	compatible = "ti,keystone-devctrl", "syscon";
	reg = <0x02620000 0x1000>;
};


code:
TI LMU (Lighting Management Unit) device tree bindings

TI LMU driver supports lighting devices below.

   Name                  Child nodes
  ------      ---------------------------------
  LM3631       Backlight and regulator
  LM3632       Backlight and regulator
  LM3633       Backlight, LED and fault monitor
  LM3695       Backlight
  LM36274      Backlight and regulator

Required properties:
  - compatible: Should be one of:
                "ti,lm3631"
                "ti,lm3632"
                "ti,lm3633"
                "ti,lm3695"
		"ti,lm36274"
  - reg: I2C slave address.
         0x11 for LM3632
         0x29 for LM3631
         0x36 for LM3633
         0x63 for LM3695
         0x11 for LM36274

Optional properties:
  - enable-gpios: A GPIO specifier for hardware enable pin.
  - ramp-up-us: Current ramping from one brightness level to
		the a higher brightness level.
		Range from 2048 us - 117.44 s
  - ramp-down-us: Current ramping from one brightness level to
		  the a lower brightness level.
		  Range from 2048 us - 117.44 s
  - ti,brightness-resolution - This determines whether to use 8 bit brightness
			       mode or 11 bit brightness mode.  If this value is
			       not set the device is defaulted to the preferred
			       8bit brightness mode per 7.3.4.1 of the data
			       sheet.  This setting can either be in the parent
			       node or as part of the LED child nodes.  This
			       is determined by the part itself if the strings
			       have a common brightness register or individual
			       brightness registers.
			       The values are 255 (8bit) or 2047 (11bit).

Required node:
  - backlight: All LMU devices have backlight child nodes.
               For the properties, please refer to [1].

Optional nodes:
  - fault-monitor: Hardware fault monitoring driver for LM3633 and LM3697.
    Required properties:
      - compatible: Should be one of:
                    "ti,lm3633-fault-monitor"
  - leds: LED properties for LM3633. Please refer to [2].
	  LED properties for LM36274. Please refer to [4].
  - regulators: Regulator properties for LM3631 and LM3632.
                Please refer to [3].

[1] ../leds/backlight/ti-lmu-backlight.txt
[2] ../leds/leds-lm3633.txt
[3] ../regulator/lm363x-regulator.txt
[4] ../leds/leds-lm36274.txt

lm3631@29 {
	compatible = "ti,lm3631";
	reg = <0x29>;

	regulators {
		compatible = "ti,lm363x-regulator";

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6350000>;
			regulator-always-on;
		};

		vcont {
			regulator-name = "lcd_vcont";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <3300000>;
		};

		voref {
			regulator-name = "lcd_voref";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};
	};

	backlight {
		compatible = "ti,lm3631-backlight";

		lcd_bl {
			led-sources = <0 1>;
			ramp-up-us = <300000>;
		};
	};
};

lm3632@11 {
	compatible = "ti,lm3632";
	reg = <0x11>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>; /* PC2 */

	regulators {
		compatible = "ti,lm363x-regulator";

		enable-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>,
			       <&pioC 1 GPIO_ACTIVE_HIGH>;

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6400000>;
			regulator-always-on;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};
	};

	backlight {
		compatible = "ti,lm3632-backlight";

		pwms = <&pwm0 0 10000 0>; /* pwm number, period, polarity */
		pwm-names = "lmu-backlight";

		lcd {
			led-sources = <0 1>;
			pwm-period = <10000>;
		};
	};
};

lm3633@36 {
	compatible = "ti,lm3633";
	reg = <0x36>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;

	backlight {
		compatible = "ti,lm3633-backlight";

		main {
			label = "main_lcd";
			led-sources = <1 2>;
			ramp-up-us = <500000>;
			ramp-down-us = <500000>;
		};

		front {
			label = "front_lcd";
			led-sources = <0>;
			ramp-up-us = <1000000>;
			ramp-down-us = <0>;
		};
	};

	leds {
		compatible = "ti,lm3633-leds";

		chan1 {
			label = "status";
			led-sources = <1>;
			led-max-microamp = <6000>;
		};

		chan345 {
			label = "rgb";
			led-sources = <3 4 5>;
			led-max-microamp = <10000>;
		};
	};

	fault-monitor {
		compatible = "ti,lm3633-fault-monitor";
	};
};

lm3695@63 {
	compatible = "ti,lm3695";
	reg = <0x63>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;

	backlight {
		compatible = "ti,lm3695-backlight";

		lcd {
			label = "bl";
			led-sources = <0 1>;
		};
	};
};

lm36274@11 {
	compatible = "ti,lm36274";
	#address-cells = <1>;
	#size-cells = <0>;
	reg = <0x11>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;
	regulators {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "ti,lm363x-regulator";

		enable-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>,
			       <&pioC 1 GPIO_ACTIVE_HIGH>;

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <7150000>;
			regulator-always-on;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6500000>;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6500000>;
		};
	};

	backlight {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "ti,lm36274-backlight";

		led@0 {
			reg = <0>;
			led-sources = <0 2>;
			label = "white:backlight_cluster";
			linux,default-trigger = "backlight";
		};
	};
};


code:
* Device tree bindings for TI TPS61050/61052 Boost Converters

The TP61050/TPS61052 is a high-power "white LED driver". The
device provides LED, GPIO and regulator functionalities.

Required properties:
- compatible:		"ti,tps61050" or "ti,tps61052"
- reg:			Specifies the I2C slave address

Optional sub-node:

This subnode selects the chip's operational mode.
There can be at most one single available subnode.

- regulator: presence of this sub-node puts the chip in regulator mode.
	see ../regulator/regulator.yaml

- led: presence of this sub-node puts the chip in led mode.
	Optional properties:
	- function : see ../leds/common.txt
	- color    : see ../leds/common.txt
	- label    : see ../leds/common.txt
			(deprecated)

Example (GPIO operation only):

i2c0 {
	tps61052@33 {
		compatible = "ti,tps61052";
		reg = <0x33>;
	};
};

Example (GPIO + regulator operation):

i2c0 {
	tps61052@33 {
		compatible = "ti,tps61052";
		reg = <0x33>;

		regulator {
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			regulator-always-on;
		};
	};
};

Example (GPIO + led operation):

#include <dt-bindings/leds/common.h>

i2c0 {
	tps61052@33 {
		compatible = "ti,tps61052";
		reg = <0x33>;

		led {
			color = <LED_COLOR_ID_WHITE>;
		};
	};
};


code:
TPS6507x Power Management Integrated Circuit

Required properties:
- compatible: "ti,tps6507x"
- reg: I2C slave address
- regulators: This is the list of child nodes that specify the regulator
  initialization data for defined regulators. Not all regulators for the
  given device need to be present. The definition for each of these nodes
  is defined using the standard binding for regulators found at
  Documentation/devicetree/bindings/regulator/regulator.txt.
  The regulator is matched with the regulator-compatible.

  The valid regulator-compatible values are:
  tps6507x: vdcdc1, vdcdc2, vdcdc3, vldo1, vldo2
- xxx-supply: Input voltage supply regulator.
  These entries are required if regulators are enabled for a device.
  Missing of these properties can cause the regulator registration
  fails.
  If some of input supply is powered through battery or always-on
  supply then also it is require to have these parameters with proper
  node handle of always on power supply.
  tps6507x:
       vindcdc1_2-supply: VDCDC1 and VDCDC2 input.
       vindcdc3-supply  : VDCDC3 input.
       vldo1_2-supply   : VLDO1 and VLDO2 input.

Regulator Optional properties:
- defdcdc_default: It's property of DCDC2 and DCDC3 regulators.
			0: If defdcdc pin of DCDC2/DCDC3 is pulled to GND.
			1: If defdcdc pin of DCDC2/DCDC3 is driven HIGH.
  If this property is not defined, it defaults to 0 (not enabled).

Example:

	pmu: tps6507x@48 {
		compatible = "ti,tps6507x";
		reg = <0x48>;

		vindcdc1_2-supply = <&vbat>;
		vindcdc3-supply = <...>;
		vinldo1_2-supply = <...>;

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

			vdcdc1_reg: regulator@0 {
				regulator-compatible = "VDCDC1";
				reg = <0>;
				regulator-min-microvolt = <3150000>;
				regulator-max-microvolt = <3450000>;
				regulator-always-on;
				regulator-boot-on;
			};
			vdcdc2_reg: regulator@1 {
				regulator-compatible = "VDCDC2";
				reg = <1>;
				regulator-min-microvolt = <1710000>;
				regulator-max-microvolt = <3450000>;
				regulator-always-on;
				regulator-boot-on;
				defdcdc_default = <1>;
			};
			vdcdc3_reg: regulator@2 {
				regulator-compatible = "VDCDC3";
				reg = <2>;
				regulator-min-microvolt = <950000>
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
				defdcdc_default = <1>;
			};
			ldo1_reg: regulator@3 {
				regulator-compatible = "LDO1";
				reg = <3>;
				regulator-min-microvolt = <1710000>;
				regulator-max-microvolt = <1890000>;
				regulator-always-on;
				regulator-boot-on;
			};
			ldo2_reg: regulator@4 {
				regulator-compatible = "LDO2";
				reg = <4>;
				regulator-min-microvolt = <1140000>;
				regulator-max-microvolt = <1320000>;
				regulator-always-on;
				regulator-boot-on;
			};
		};

	};


code:
TPS65910 Power Management Integrated Circuit

Required properties:
- compatible: "ti,tps65910" or "ti,tps65911"
- reg: I2C slave address
- interrupts: the interrupt outputs of the controller
- #gpio-cells: number of cells to describe a GPIO, this should be 2.
  The first cell is the GPIO number.
  The second cell is used to specify additional options <unused>.
- gpio-controller: mark the device as a GPIO controller
- #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
  The first cell is the IRQ number.
  The second cell is the flags, encoded as the trigger masks from
  Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- regulators: This is the list of child nodes that specify the regulator
  initialization data for defined regulators. Not all regulators for the given
  device need to be present. The definition for each of these nodes is defined
  using the standard binding for regulators found at
  Documentation/devicetree/bindings/regulator/regulator.txt.
  The regulator is matched with the regulator-compatible.

  The valid regulator-compatible values are:
  tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
            vaux2, vaux33, vmmc, vbb
  tps65911: vrtc, vio, vdd1, vdd2, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
            ldo6, ldo7, ldo8

- xxx-supply: Input voltage supply regulator.
  These entries are required if regulators are enabled for a device. Missing these
  properties can cause the regulator registration to fail.
  If some of input supply is powered through battery or always-on supply then
  also it is require to have these parameters with proper node handle of always
  on power supply.
  tps65910:
	vcc1-supply: VDD1 input.
	vcc2-supply: VDD2 input.
	vcc3-supply: VAUX33 and VMMC input.
	vcc4-supply: VAUX1 and VAUX2 input.
	vcc5-supply: VPLL and VDAC input.
	vcc6-supply: VDIG1 and VDIG2 input.
	vcc7-supply: VRTC and VBB input.
	vccio-supply: VIO input.
  tps65911:
	vcc1-supply: VDD1 input.
	vcc2-supply: VDD2 input.
	vcc3-supply: LDO6, LDO7 and LDO8 input.
	vcc4-supply: LDO5 input.
	vcc5-supply: LDO3 and LDO4 input.
	vcc6-supply: LDO1 and LDO2 input.
	vcc7-supply: VRTC input.
	vccio-supply: VIO input.

Optional properties:
- ti,vmbch-threshold: (tps65911) main battery charged threshold
  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
  comparator. (see VMBCH_VSEL in TPS65910 datasheet)
- ti,en-ck32k-xtal: enable external 32-kHz crystal oscillator (see CK32K_CTRL
  in TPS6591X datasheet)
- ti,en-gpio-sleep: enable sleep control for gpios
  There should be 9 entries here, one for each gpio.
- ti,system-power-controller: Telling whether or not this pmic is controlling
  the system power.
- ti,sleep-enable: Enable SLEEP state.
- ti,sleep-keep-therm: Keep thermal monitoring on in sleep state.
- ti,sleep-keep-ck32k: Keep the 32KHz clock output on in sleep state.
- ti,sleep-keep-hsclk: Keep high speed internal clock on in sleep state.

Regulator Optional properties:
- ti,regulator-ext-sleep-control: enable external sleep
  control through external inputs [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)]
  If this property is not defined, it defaults to 0 (not enabled).

Example:

	pmu: tps65910@d2 {
		compatible = "ti,tps65910";
		reg = <0xd2>;
		interrupt-parent = <&intc>;
		interrupts = < 0 118 0x04 >;

		#gpio-cells = <2>;
		gpio-controller;

		#interrupt-cells = <2>;
		interrupt-controller;

		ti,system-power-controller;

		ti,vmbch-threshold = 0;
		ti,vmbch2-threshold = 0;
		ti,en-ck32k-xtal;
		ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;

		vcc1-supply = <&reg_parent>;
		vcc2-supply = <&some_reg>;
		vcc3-supply = <...>;
		vcc4-supply = <...>;
		vcc5-supply = <...>;
		vcc6-supply = <...>;
		vcc7-supply = <...>;
		vccio-supply = <...>;

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

			vdd1_reg: regulator@0 {
				regulator-compatible = "vdd1";
				reg = <0>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			vdd2_reg: regulator@1 {
				regulator-compatible = "vdd2";
				reg = <1>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1500000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <4>;
			};
			vddctrl_reg: regulator@2 {
				regulator-compatible = "vddctrl";
				reg = <2>;
				regulator-min-microvolt = < 600000>;
				regulator-max-microvolt = <1400000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			vio_reg: regulator@3 {
				regulator-compatible = "vio";
				reg = <3>;
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <1>;
			};
			ldo1_reg: regulator@4 {
				regulator-compatible = "ldo1";
				reg = <4>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo2_reg: regulator@5 {
				regulator-compatible = "ldo2";
				reg = <5>;
				regulator-min-microvolt = <1050000>;
				regulator-max-microvolt = <1050000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo3_reg: regulator@6 {
				regulator-compatible = "ldo3";
				reg = <6>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo4_reg: regulator@7 {
				regulator-compatible = "ldo4";
				reg = <7>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo5_reg: regulator@8 {
				regulator-compatible = "ldo5";
				reg = <8>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo6_reg: regulator@9 {
				regulator-compatible = "ldo6";
				reg = <9>;
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				ti,regulator-ext-sleep-control = <0>;
			};
			ldo7_reg: regulator@10 {
				regulator-compatible = "ldo7";
				reg = <10>;
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-always-on;
				regulator-boot-on;
				ti,regulator-ext-sleep-control = <1>;
			};
			ldo8_reg: regulator@11 {
				regulator-compatible = "ldo8";
				reg = <11>;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				ti,regulator-ext-sleep-control = <1>;
			};
		};
	};


code:
* TPS65912 Power Management Integrated Circuit bindings

Required properties:
 - compatible		: Should be "ti,tps65912".
 - reg			: Slave address or chip select number (I2C / SPI).
 - interrupts		: The interrupt line the device is connected to.
 - interrupt-controller	: Marks the device node as an interrupt controller.
 - #interrupt-cells	: The number of cells to describe an IRQ, should be 2.
			    The first cell is the IRQ number.
			    The second cell is the flags, encoded as trigger
			    masks from ../interrupt-controller/interrupts.txt.
 - gpio-controller	: Marks the device node as a GPIO Controller.
 - #gpio-cells		: Should be two.  The first cell is the pin number and
			    the second cell is used to specify flags.
			    See ../gpio/gpio.txt for more information.
 - regulators:		: List of child nodes that specify the regulator
			    initialization data. Child nodes must be named
			    after their hardware counterparts: dcdc[1-4] and
			    ldo[1-10]. Each child nodes is defined using the
			    standard binding for regulators.

Example:

	pmic: tps65912@2d {
		compatible = "ti,tps65912";
		reg = <0x2d>;
		interrupt-parent = <&gpio1>;
		interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <2>;
		gpio-controller;
		#gpio-cells = <2>;

		regulators {
			dcdc1 {
				regulator-name = "vdd_core";
				regulator-min-microvolt = <912000>;
				regulator-max-microvolt = <1144000>;
				regulator-boot-on;
				regulator-always-on;
			};

			ldo1 {
				regulator-name = "ldo1";
				regulator-min-microvolt = <1900000>;
				regulator-max-microvolt = <1900000>;
			};
		};
	};


code:
Texas Instruments TWL family

The TWLs are Integrated Power Management Chips.
Some version might contain much more analog function like
USB transceiver or Audio amplifier.
These chips are connected to an i2c bus.

Required properties:
- compatible : Must be "ti,twl4030";
  For Integrated power-management/audio CODEC device used in OMAP3
  based boards
- compatible : Must be "ti,twl6030";
  For Integrated power-management used in OMAP4 based boards
- interrupts : This i2c device has an IRQ line connected to the main SoC
- interrupt-controller : Since the twl support several interrupts internally,
  it is considered as an interrupt controller cascaded to the SoC one.
- #interrupt-cells = <1>;

Optional node:
- Child nodes contain in the twl. The twl family is made of several variants
  that support a different number of features.
  The children nodes will thus depend of the capability of the variant.

Example:
/*
 * Integrated Power Management Chip
 * https://www.ti.com/lit/ds/symlink/twl6030.pdf
 */
twl@48 {
    compatible = "ti,twl6030";
    reg = <0x48>;
    interrupts = <39>; /* IRQ_SYS_1N cascaded to gic */
    interrupt-controller;
    #interrupt-cells = <1>;
    interrupt-parent = <&gic>;
    #address-cells = <1>;
    #size-cells = <0>;

    twl_rtc {
        compatible = "ti,twl_rtc";
        interrupts = <11>;
        reg = <0>;
    };
};


code:
Texas Instruments TWL family (twl4030) audio module

The audio module inside the TWL family consist of an audio codec and a vibra
driver.

Required properties:
- compatible : must be "ti,twl4030-audio"

Optional properties, nodes:

Audio functionality:
- codec { }: Need to be present if the audio functionality is used. Within this
	     section the following options can be used:
- ti,digimic_delay: Delay need after enabling the digimic to reduce artifacts
		    from the start of the recorded sample (in ms)
-ti,ramp_delay_value: HS ramp delay configuration to reduce pop noise
-ti,hs_extmute: Use external mute for HS pop reduction
-ti,hs_extmute_gpio: Use external GPIO to control the external mute
-ti,offset_cncl_path: Offset cancellation path selection, refer to TRM for the
		      valid values.

Vibra functionality
- ti,enable-vibra: Need to be set to <1> if the vibra functionality is used. if
		   missing or it is 0, the vibra functionality is disabled.

Example:
&i2c1 {
	clock-frequency = <2600000>;

	twl: twl@48 {
		reg = <0x48>;
		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
		interrupt-parent = <&intc>;

		twl_audio: audio {
			compatible = "ti,twl4030-audio";

			ti,enable-vibra = <1>;

			codec {
				ti,ramp_delay_value = <3>;
			};

		};
	};
};


code:
Texas Instruments TWL family (twl4030) reset and power management module

The power management module inside the TWL family provides several facilities
to control the power resources, including power scripts. For now, the
binding only supports the complete shutdown of the system after poweroff.

Required properties:
- compatible : must be one of the following
	"ti,twl4030-power"
	"ti,twl4030-power-reset"
	"ti,twl4030-power-idle"
	"ti,twl4030-power-idle-osc-off"

The use of ti,twl4030-power-reset is recommended at least on
3530 that needs a special configuration for warm reset to work.

When using ti,twl4030-power-idle, the TI recommended configuration
for idle modes is loaded to the tlw4030 PMIC.

When using ti,twl4030-power-idle-osc-off, the TI recommended
configuration is used with the external oscillator being shut
down during off-idle. Note that this does not work on all boards
depending on how the external oscillator is wired.

Optional properties:

- ti,system-power-controller: This indicates that TWL4030 is the
  power supply master of the system. With this flag, the chip will
  initiate an ACTIVE-to-OFF or SLEEP-to-OFF transition when the
  system poweroffs.

- ti,use_poweroff: Deprecated name for ti,system-power-controller

Example:
&i2c1 {
	clock-frequency = <2600000>;

	twl: twl@48 {
		reg = <0x48>;
		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
		interrupt-parent = <&intc>;

		twl_power: power {
			compatible = "ti,twl4030-power";
			ti,use_poweroff;
		};
	};
};


code:
Texas Instruments TWL6040 family

The TWL6040s are 8-channel high quality low-power audio codecs providing audio,
vibra and GPO functionality on OMAP4+ platforms.
They are connected ot the host processor via i2c for commands, McPDM for audio
data and commands.

Required properties:
- compatible : "ti,twl6040" for twl6040, "ti,twl6041" for twl6041
- reg: must be 0x4b for i2c address
- interrupts: twl6040 has one interrupt line connecteded to the main SoC
- gpio-controller:
- #gpio-cells = <1>: twl6040 provides GPO lines.
- #clock-cells = <0>; twl6040 is a provider of pdmclk which is used by McPDM
- twl6040,audpwron-gpio: Power on GPIO line for the twl6040

- vio-supply: Regulator for the twl6040 VIO supply
- v2v1-supply: Regulator for the twl6040 V2V1 supply

Optional properties, nodes:
- enable-active-high: To power on the twl6040 during boot.
- clocks: phandle to the clk32k and/or to mclk clock provider
- clock-names: Must be "clk32k" for the 32K clock and "mclk" for the MCLK.

Vibra functionality
Required properties:
- vddvibl-supply: Regulator for the left vibra motor
- vddvibr-supply: Regulator for the right vibra motor
- vibra { }: Configuration section for vibra parameters containing the following
	     properties:
- ti,vibldrv-res: Resistance parameter for left driver
- ti,vibrdrv-res: Resistance parameter for right driver
- ti,viblmotor-res: Resistance parameter for left motor
- ti,viblmotor-res: Resistance parameter for right motor

Optional properties within vibra { } section:
- vddvibl_uV: If the vddvibl default voltage need to be changed
- vddvibr_uV: If the vddvibr default voltage need to be changed

Example:
&i2c1 {
	twl6040: twl@4b {
		compatible = "ti,twl6040";

		interrupts = <0 119 4>;
		interrupt-parent = <&gic>;
		twl6040,audpwron-gpio = <&gpio4 31 0>;

		vio-supply = <&v1v8>;
		v2v1-supply = <&v2v1>;
		enable-active-high;

		/* regulators for vibra motor */
		vddvibl-supply = <&vbat>;
		vddvibr-supply = <&vbat>;

		vibra {
			/* Vibra driver, motor resistance parameters */
			ti,vibldrv-res = <8>;
			ti,vibrdrv-res = <3>;
			ti,viblmotor-res = <10>;
			ti,vibrmotor-res = <10>;
		};
	};
};

/include/ "twl6040.dtsi"


code:
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/wlf,arizona.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic/Wolfson Microelectronics Arizona class audio SoCs

maintainers:
  - patches@opensource.cirrus.com

description: |
  These devices are audio SoCs with extensive digital capabilities and a
  range of analogue I/O.

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml
  - $ref: /schemas/sound/wlf,arizona.yaml#
  - $ref: /schemas/regulator/wlf,arizona.yaml#
  - $ref: /schemas/extcon/wlf,arizona.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l24
              - wlf,wm1831
    then:
      required:
        - DCVDD-supply
        - MICVDD-supply
    else:
      properties:
        LDOVDD-supply:
          description:
            Digital power supply, used internally to generate DCVDD when
            internally supplied.

  - if:
      properties:
        compatible:
          contains:
            enum:
              - wlf,wm1814
              - wlf,wm5102
              - wlf,wm5110
              - wlf,wm8280
              - wlf,wm8997
              - wlf,wm8998
    then:
      properties:
        DBVDD2-supply:
          description:
            Databus power supply.

      required:
        - DBVDD2-supply
  - if:
      properties:
        compatible:
          contains:
            enum:
              - wlf,wm1814
              - wlf,wm5102
              - wlf,wm5110
              - wlf,wm8280
              - wlf,wm8998
    then:
      properties:
        DBVDD3-supply:
          description:
            Databus power supply.

      required:
        - DBVDD3-supply
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l24
              - wlf,wm1831
              - wlf,wm8997
    then:
      properties:
        SPKVDD-supply:
          description:
            Mono speaker driver power supply.

      required:
        - SPKVDD-supply
    else:
      properties:
        SPKVDDL-supply:
          description:
            Left speaker driver power supply.

        SPKVDDR-supply:
          description:
            Right speaker driver power supply.

      required:
        - SPKVDDL-supply
        - SPKVDDR-supply

properties:
  compatible:
    enum:
      - cirrus,cs47l24
      - wlf,wm1814
      - wlf,wm1831
      - wlf,wm5102
      - wlf,wm5110
      - wlf,wm8280
      - wlf,wm8997
      - wlf,wm8998

  reg:
    maxItems: 1

  AVDD-supply:
    description:
      Analogue power supply.

  CPVDD-supply:
    description:
      Charge pump power supply.

  DBVDD1-supply:
    description:
      Databus power supply.

  DCVDD-supply:
    description:
      Digital power supply, normally supplied internally except on cs47l24,
      wm1831 where it is mandatory.

  MICVDD-supply:
    description:
      Microphone power supply, normally supplied internally except on
      cs47l24, wm1831 where it is mandatory.

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number and the second cell is used to
      specify optional parameters.
    const: 2

  wlf,gpio-defaults:
    description:
      A list of GPIO configuration register values. Defines for the
      appropriate values can found in dt-bindings/mfd/arizona.h. If
      absent, no configuration of these registers is performed. If any
      entry has a value that is out of range for a 16 bit register then the
      chip default will be used. If present exactly five values must be
      specified.
    $ref: "/schemas/types.yaml#/definitions/uint32-array"
    minItems: 1
    maxItems: 5

  interrupt-controller: true

  '#interrupt-cells':
    description:
      The first cell is the IRQ number.  The second cell is the flags,
      encoded as trigger masks.
    const: 2

  interrupts:
    maxItems: 1

  clocks:
    description:
      Should reference the clocks supplied on MCLK1 and MCLK2.
    minItems: 1
    maxItems: 2

  clock-names:
    description:
      Should contains two strings mclk1 for the clock supplied on MCLK1,
      recommended to be a high quality audio reference clock mclk2 for the
      clock supplied on MCLK2, recommended to be an always on 32k clock.
    oneOf:
      - items:
          - const: mclk1
      - items:
          - const: mclk2
      - items:
          - const: mclk1
          - const: mclk2

  reset-gpios:
    maxItems: 1

  wlf,reset:
    description:
      GPIO specifier for the GPIO controlling RESET
    deprecated: true
    $ref: /schemas/types.yaml#/definitions/phandle-array
    maxItems: 1

required:
  - compatible
  - AVDD-supply
  - CPVDD-supply
  - DBVDD1-supply
  - gpio-controller
  - '#gpio-cells'
  - interrupt-controller
  - '#interrupt-cells'
  - interrupts

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/mfd/arizona.h>
    i2c@e0004000 {
        #address-cells = <1>;
        #size-cells = <0>;
        reg = <0xe0004000 0x1000>;

        wm5102: codec@1a {
            compatible = "wlf,wm5102";
            reg = <0x1a>;

            reset-gpios = <&gpio 0>;
            wlf,ldoena = <&gpio 1>;

            AVDD-supply = <&vdd1v8>;
            DBVDD1-supply = <&vdd1v8>;
            DBVDD2-supply = <&vdd1v8>;
            DBVDD3-supply = <&vdd1v8>;
            CPVDD-supply = <&vdd1v8>;
            LDOVDD-supply = <&vdd1v8>;
            SPKVDDL-supply = <&vdd5v>;
            SPKVDDR-supply = <&vdd5v>;

            interrupts = <347>;
            interrupt-controller;
            #interrupt-cells = <2>;
            interrupt-parent = <&gic>;

            gpio-controller;
            #gpio-cells = <2>;

            #sound-dai-cells = <1>;

            wlf,gpio-defaults = <
                ARIZONA_GP_FN_TXLRCLK
                ARIZONA_GP_DEFAULT
                ARIZONA_GP_DEFAULT
                ARIZONA_GP_DEFAULT
                ARIZONA_GP_DEFAULT
            >;

            clocks = <&clks 0>, <&clks 1>;
            clock-names = "mclk1", "mclk2";

            wlf,inmode = <ARIZONA_INMODE_DIFF ARIZONA_INMODE_DMIC>;
            wlf,dmic-ref = <ARIZONA_DMIC_MICBIAS1 ARIZONA_DMIC_MICBIAS3>;

            wlf,use-jd2;
            wlf,use-jd2-nopull;
            wlf,jd-invert;

            wlf,micd-software-compare;
            wlf,micd-detect-debounce = <0>;
            wlf,micd-pol-gpio = <&codec 2 0>;
            wlf,micd-rate = <ARIZONA_MICD_TIME_8MS>;
            wlf,micd-dbtime = <4>;
            wlf,micd-timeout-ms = <100>;
            wlf,micd-force-micbias;
            wlf,micd-configs = <0 ARIZONA_DMIC_MICBIAS1 0>,
                               <0x2000 ARIZONA_DMIC_MICBIAS2 1>;

            wlf,gpsw = <ARIZONA_GPSW_OPEN>;
        };
    };


code:
Cirrus Logic/Wolfson Microelectronics wm831x PMICs

System PMICs with a wide range of additional features.

Required properties:

  - compatible : One of the following chip-specific strings:
        "wlf,wm8310"
        "wlf,wm8311"
        "wlf,wm8312"
        "wlf,wm8320"
        "wlf,wm8321"
        "wlf,wm8325"
        "wlf,wm8326"

  - reg : I2C slave address when connected using I2C, chip select number
    when using SPI.

  - gpio-controller : Indicates this device is a GPIO controller.
  - #gpio-cells : Must be 2. The first cell is the pin number and the
    second cell is used to specify optional parameters (currently unused).

  - interrupts : The interrupt line the IRQ signal for the device is
    connected to.

  - interrupt-controller : wm831x devices contain interrupt controllers and
    may provide interrupt services to other devices.
  - #interrupt-cells: Must be 2. The first cell is the IRQ number, and the
    second cell is the flags, encoded as the trigger masks from
    ../interrupt-controller/interrupts.txt

Optional sub-nodes:
  - phys : Contains a phandle to the USB PHY.
  - regulators : Contains sub-nodes for each of the regulators supplied by
    the device. The regulators are bound using their names listed below:

    dcdc1 : DCDC1
    dcdc2 : DCDC2
    dcdc3 : DCDC3
    dcdc4 : DCDC3
    isink1 : ISINK1
    isink2 : ISINK2
    ldo1 : LDO1
    ldo2 : LDO2
    ldo3 : LDO3
    ldo4 : LDO4
    ldo5 : LDO5
    ldo7 : LDO7
    ldo11 : LDO11

    The bindings details of each regulator can be found in:
    ../regulator/regulator.txt

Example:

wm8310: pmic@36 {
	compatible = "wlf,wm8310";
	reg = <0x36>;

	gpio-controller;
	#gpio-cells = <2>;

	interrupts = <347>;
	interrupt-parent = <&gic>;

	interrupt-controller;
	#interrupt-cells = <2>;

	regulators {
		dcdc1: dcdc1 {
			regulator-name = "DCDC1";
			regulator-min-microvolt = <600000>;
			regulator-max-microvolt = <600000>;
		};
		ldo1: ldo1 {
			regulator-name = "LDO1";
			regulator-min-microvolt = <1700000>;
			regulator-max-microvolt = <1700000>;
		};
	};
};


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: "http://devicetree.org/schemas/mfd/x-powers,ac100.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: X-Powers AC100

maintainers:
  - Chen-Yu Tsai <wens@csie.org>

properties:
  compatible:
    const: x-powers,ac100

  reg:
    maxItems: 1

  codec:
    type: object

    properties:
      "#clock-cells":
        const: 0

      compatible:
        const: x-powers,ac100-codec

      interrupts:
        maxItems: 1

      clock-output-names:
        maxItems: 1
        description: >
          Name of the 4M_adda clock exposed by the codec

    required:
      - "#clock-cells"
      - compatible
      - interrupts
      - clock-output-names

    additionalProperties: false

  rtc:
    type: object

    properties:
      "#clock-cells":
        const: 1

      compatible:
        const: x-powers,ac100-rtc

      interrupts:
        maxItems: 1

      clocks:
        maxItems: 1
        description: >
           A phandle to the codec's "4M_adda" clock

      clock-output-names:
        maxItems: 3
        description: >
          Name of the cko1, cko2 and cko3 clocks exposed by the codec

    required:
      - "#clock-cells"
      - compatible
      - interrupts
      - clocks
      - clock-output-names

    additionalProperties: false

required:
  - compatible
  - reg
  - codec
  - rtc

additionalProperties: false

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

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

        codec@e89 {
            compatible = "x-powers,ac100";
            reg = <0xe89>;

            ac100_codec: codec {
                compatible = "x-powers,ac100-codec";
                interrupt-parent = <&r_pio>;
                interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */
                #clock-cells = <0>;
                clock-output-names = "4M_adda";
            };

            ac100_rtc: rtc {
                compatible = "x-powers,ac100-rtc";
                interrupt-parent = <&nmi_intc>;
                interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                clocks = <&ac100_codec>;
                #clock-cells = <1>;
                clock-output-names = "cko1_rtc", "cko2_rtc", "cko3_rtc";
            };
        };
    };

...


code:
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: X-Powers AXP PMIC

maintainers:
  - Chen-Yu Tsai <wens@csie.org>

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - x-powers,axp152
              - x-powers,axp202
              - x-powers,axp209

    then:
      properties:
        regulators:
          properties:
            x-powers,dcdc-freq:
              minimum: 750
              maximum: 1875
              default: 1500

    else:
      properties:
        regulators:
          properties:
            x-powers,dcdc-freq:
              minimum: 1800
              maximum: 4050
              default: 3000

  - if:
      properties:
        compatible:
          contains:
            enum:
              - x-powers,axp152
              - x-powers,axp202
              - x-powers,axp209

    then:
      not:
        required:
          - x-powers,drive-vbus-en

  - if:
      not:
        properties:
          compatible:
            contains:
              const: x-powers,axp806

    then:
      allOf:
        - not:
            required:
              - x-powers,self-working-mode

        - not:
            required:
              - x-powers,master-mode

  - if:
      not:
        properties:
          compatible:
            contains:
              const: x-powers,axp305

    then:
      required:
        - interrupts

properties:
  compatible:
    oneOf:
      - enum:
          - x-powers,axp152
          - x-powers,axp202
          - x-powers,axp209
          - x-powers,axp221
          - x-powers,axp223
          - x-powers,axp803
          - x-powers,axp806
          - x-powers,axp809
          - x-powers,axp813
      - items:
          - const: x-powers,axp228
          - const: x-powers,axp221
      - items:
          - const: x-powers,axp805
          - const: x-powers,axp806
      - items:
          - const: x-powers,axp305
          - const: x-powers,axp805
          - const: x-powers,axp806
      - items:
          - const: x-powers,axp818
          - const: x-powers,axp813

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 1

  x-powers,drive-vbus-en:
    type: boolean
    description: >
      Set this when the N_VBUSEN pin is used as an output pin to control an
      external regulator to drive the OTG VBus, rather then as an input pin
      which signals whether the board is driving OTG VBus or not.

  x-powers,self-working-mode:
    type: boolean
    description: >
      Set this when the PMIC is wired for self-working mode through the MODESET
      pin.

  x-powers,master-mode:
    type: boolean
    description: >
      Set this when the PMIC is wired for master mode through the MODESET pin.

  vin1-supply:
    description: >
      DCDC1 power supply node, if present.

  vin2-supply:
    description: >
      DCDC2 power supply node, if present.

  vin3-supply:
    description: >
      DCDC3 power supply node, if present.

  vin4-supply:
    description: >
      DCDC4 power supply node, if present.

  vin5-supply:
    description: >
      DCDC5 power supply node, if present.

  vin6-supply:
    description: >
      DCDC6 power supply node, if present.

  vin7-supply:
    description: >
      DCDC7 power supply node, if present.

  vina-supply:
    description: >
      DCDCA power supply node, if present.

  vinb-supply:
    description: >
      DCDCB power supply node, if present.

  vinc-supply:
    description: >
      DCDCC power supply node, if present.

  vind-supply:
    description: >
      DCDCD power supply node, if present.

  vine-supply:
    description: >
      DCDCE power supply node, if present.

  acin-supply:
    description: >
      LDO1 power supply node, if present.

  ldo24in-supply:
    description: >
      LDO2 and LDO4 power supply node, if present.

  ldo3in-supply:
    description: >
      LDO3 power supply node, if present.

  ldo5in-supply:
    description: >
      LDO5 power supply node, if present.

  aldoin-supply:
    description: >
      ALDO* power supply node, if present.

  bldoin-supply:
    description: >
      BLDO* power supply node, if present.

  cldoin-supply:
    description: >
      CLDO* power supply node, if present.

  dldoin-supply:
    description: >
      DLDO* power supply node, if present.

  eldoin-supply:
    description: >
      ELDO* power supply node, if present.

  fldoin-supply:
    description: >
      FLDO* power supply node, if present.

  ips-supply:
    description: >
      LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.

  drivevbus-supply:
    description: >
      DRIVEVBUS power supply node, if present.

  swin-supply:
    description: >
      SW power supply node, if present.

  adc:
    $ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#

  gpio:
    $ref: /schemas/gpio/x-powers,axp209-gpio.yaml#

  ac-power:
    $ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#

  battery-power:
    $ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#

  usb-power:
    $ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#

  regulators:
    type: object

    properties:
      x-powers,dcdc-freq:
        $ref: /schemas/types.yaml#/definitions/uint32
        description: >
          Defines the work frequency of DC-DC in kHz.

    patternProperties:
      "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|drivevbus|dc5ldo)$":
        $ref: /schemas/regulator/regulator.yaml#
        type: object
        unevaluatedProperties: false

        properties:
          regulator-ramp-delay:
            description: >
              Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
              the AXP209.

          regulator-soft-start:
            description: >
              Only valid for the LDO3 regulator.

          x-powers,dcdc-workmode:
            $ref: /schemas/types.yaml#/definitions/uint32
            enum: [0, 1]
            description: >
              Only valid for DCDC regulators. Setup 1 for PWM mode, 0
              for AUTO (PWM/PFM) mode. The DCDC regulators work in a
              mixed PWM/PFM mode, using PFM under light loads and
              switching to PWM for heavier loads. Forcing PWM mode
              trades efficiency under light loads for lower output
              noise. This probably makes sense for HiFi audio related
              applications that aren't battery constrained.

    additionalProperties: false

required:
  - compatible
  - reg
  - "#interrupt-cells"
  - interrupt-controller

additionalProperties: false

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

          pmic@30 {
              compatible = "x-powers,axp152";
              reg = <0x30>;
              interrupts = <0>;
              interrupt-controller;
              #interrupt-cells = <1>;
          };
      };

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

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

          pmic@34 {
              compatible = "x-powers,axp209";
              reg = <0x34>;
              interrupt-parent = <&nmi_intc>;
              interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
              interrupt-controller;
              #interrupt-cells = <1>;

              ac_power_supply: ac-power {
                  compatible = "x-powers,axp202-ac-power-supply";
              };

              axp_adc: adc {
                  compatible = "x-powers,axp209-adc";
                  #io-channel-cells = <1>;
              };

              axp_gpio: gpio {
                  compatible = "x-powers,axp209-gpio";
                  gpio-controller;
                  #gpio-cells = <2>;

                  gpio0-adc-pin {
                      pins = "GPIO0";
                      function = "adc";
                  };
              };

              battery_power_supply: battery-power {
                  compatible = "x-powers,axp209-battery-power-supply";
              };

              regulators {
                  /* Default work frequency for buck regulators */
                  x-powers,dcdc-freq = <1500>;

                  reg_dcdc2: dcdc2 {
                      regulator-always-on;
                      regulator-min-microvolt = <1000000>;
                      regulator-max-microvolt = <1450000>;
                      regulator-name = "vdd-cpu";
                  };

                  reg_dcdc3: dcdc3 {
                      regulator-always-on;
                      regulator-min-microvolt = <1000000>;
                      regulator-max-microvolt = <1400000>;
                      regulator-name = "vdd-int-dll";
                  };

                  reg_ldo1: ldo1 {
                      /* LDO1 is a fixed output regulator */
                      regulator-always-on;
                      regulator-min-microvolt = <1300000>;
                      regulator-max-microvolt = <1300000>;
                      regulator-name = "vdd-rtc";
                  };

                  reg_ldo2: ldo2 {
                      regulator-always-on;
                      regulator-min-microvolt = <3000000>;
                      regulator-max-microvolt = <3000000>;
                      regulator-name = "avcc";
                  };

                  reg_ldo3: ldo3 {
                      regulator-name = "ldo3";
                  };

                  reg_ldo4: ldo4 {
                      regulator-name = "ldo4";
                  };

                  reg_ldo5: ldo5 {
                      regulator-name = "ldo5";
                  };
              };

              usb_power_supply: usb-power {
                  compatible = "x-powers,axp202-usb-power-supply";
              };
          };
      };