# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/samsung/exynos-pmu.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung Exynos SoC series Power Management Unit (PMU)

maintainers:
  - Sam Protsenko <semen.protsenko@linaro.org>

description: |+
  PMU block controls the power and operation states of Exynos SoC. It contains
  registers for changing the state of next features::

  - Local power control. Exynos SoCs have various power domains, and it's
    possible to turn them on and off independently, using corresponding
    registers in PMU block
  - System-level power control. That allows putting the system into power-down
    modes (sleep) by turning off the power for most of the domains
  - Miscellaneous PMU related features

# Custom select to avoid matching all nodes with 'syscon'
select:
  properties:
    compatible:
      contains:
        enum:
          - samsung,exynos850-pmu
  required:
    - compatible

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - samsung,exynos850-pmu
          - const: syscon

  reg:
    maxItems: 1

  samsung,uart-debug-1:
    type: boolean
    description:
      Enable this property if AP UART lines (Application Processor UART) must be
      connected to UART_DEBUG_1 path in PMU block. That's usually needed when
      the serial console is provided by uart1_pins. If this property is not
      specified, the default behavior will be used (AP UART lines connected to
      UART_DEBUG_0 path, which usually means uart0_pins are used for the serial
      console).

  syscon-poweroff:
    $ref: /schemas/power/reset/syscon-poweroff.yaml#
    type: object
    description:
      Node for power off method

  syscon-reboot:
    $ref: /schemas/power/reset/syscon-reboot.yaml#
    type: object
    description:
      Node for reboot method

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    pmu_system_controller: system-controller@11860000 {
        compatible = "samsung,exynos850-pmu", "syscon";
        reg = <0x11860000 0x10000>;

        reboot: syscon-reboot {
            compatible = "syscon-reboot";
            regmap = <&pmu_system_controller>;
            offset = <0x3a00>; /* SYSTEM_CONFIGURATION */
            mask = <0x2>; /* SWRESET_SYSTEM */
            value = <0x2>; /* reset value */
        };
    };
