Commit 9aefe3fb authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Lee Jones
Browse files

dt-bindings: mfd: samsung,s5m8767: Convert to dtschema



Convert the MFD part of Samsung S5M8767 PMIC to DT schema format.
Previously the bindings were mostly in mfd/samsung,sec-core.txt.

Since all of bindings for Samsung S2M and S5M family of PMICs were
converted from mfd/samsung,sec-core.txt to respective dtschema file,
remove the former one.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Link: https://lore.kernel.org/r/20211008113931.134847-6-krzysztof.kozlowski@canonical.com
parent cc0eb5dc
Loading
Loading
Loading
Loading
+269 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/samsung,s5m8767.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung S5M8767 Power Management IC

maintainers:
  - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>

description: |
  This is a part of device tree bindings for S2M and S5M family of Power
  Management IC (PMIC).

  The Samsung S5M8767 is a Power Management IC which includes voltage
  and current regulators, RTC, clock outputs and other sub-blocks.

properties:
  compatible:
    const: samsung,s5m8767-pmic

  clocks:
    $ref: ../clock/samsung,s2mps11.yaml
    description:
      Child node describing clock provider.

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  regulators:
    $ref: ../regulator/samsung,s5m8767.yaml
    description:
      List of child nodes that specify the regulators.

  s5m8767,pmic-buck2-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 8
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck2 when
      changing voltage using gpio dvs.

  s5m8767,pmic-buck3-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 8
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck3 when
      changing voltage using gpio dvs.

  s5m8767,pmic-buck4-dvs-voltage:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 8
    maxItems: 8
    description: |
      A set of 8 voltage values in micro-volt (uV) units for buck4 when
      changing voltage using gpio dvs.

  s5m8767,pmic-buck-ds-gpios:
    minItems: 3
    maxItems: 3
    description: |
      GPIO specifiers for three host gpio's used for selecting GPIO DVS lines.
      It is one-to-one mapped to dvs gpio lines.

  s5m8767,pmic-buck2-uses-gpio-dvs:
    type: boolean
    description: buck2 can be controlled by gpio dvs.

  s5m8767,pmic-buck3-uses-gpio-dvs:
    type: boolean
    description: buck3 can be controlled by gpio dvs.

  s5m8767,pmic-buck4-uses-gpio-dvs:
    type: boolean
    description: buck4 can be controlled by gpio dvs.

  s5m8767,pmic-buck-default-dvs-idx:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minimum: 0
    maximum: 7
    default: 0
    description: |
      Default voltage setting selected from the possible 8 options selectable
      by the dvs gpios. The value of this property should be between 0 and 7.
      If not specified or if out of range, the default value of this property
      is set to 0.

  s5m8767,pmic-buck-dvs-gpios:
    minItems: 3
    maxItems: 3
    description: |
      GPIO specifiers for three host gpio's used for dvs.

  wakeup-source: true

required:
  - compatible
  - reg
  - regulators
  - s5m8767,pmic-buck-ds-gpios

dependencies:
  s5m8767,pmic-buck2-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
  s5m8767,pmic-buck3-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
  s5m8767,pmic-buck4-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
  s5m8767,pmic-buck2-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck2-dvs-voltage' ]
  s5m8767,pmic-buck3-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck3-dvs-voltage' ]
  s5m8767,pmic-buck4-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck4-dvs-voltage' ]

additionalProperties: false

allOf:
  - if:
      required:
        - s5m8767,pmic-buck2-uses-gpio-dvs
    then:
      properties:
        s5m8767,pmic-buck3-uses-gpio-dvs: false
        s5m8767,pmic-buck4-uses-gpio-dvs: false

  - if:
      required:
        - s5m8767,pmic-buck3-uses-gpio-dvs
    then:
      properties:
        s5m8767,pmic-buck2-uses-gpio-dvs: false
        s5m8767,pmic-buck4-uses-gpio-dvs: false

  - if:
      required:
        - s5m8767,pmic-buck4-uses-gpio-dvs
    then:
      properties:
        s5m8767,pmic-buck2-uses-gpio-dvs: false
        s5m8767,pmic-buck3-uses-gpio-dvs: false

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

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

        pmic@66 {
            compatible = "samsung,s5m8767-pmic";
            reg = <0x66>;

            interrupt-parent = <&gpx3>;
            interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
            wakeup-source;

            s5m8767,pmic-buck-default-dvs-idx = <3>;
            s5m8767,pmic-buck2-uses-gpio-dvs;

            s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>,
                                          <&gpd1 1 GPIO_ACTIVE_LOW>,
                                          <&gpd1 2 GPIO_ACTIVE_LOW>;

            s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
                                         <&gpx2 4 GPIO_ACTIVE_LOW>,
                                         <&gpx2 5 GPIO_ACTIVE_LOW>;

            s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
                                             <1250000>, <1200000>,
                                             <1150000>, <1100000>,
                                             <1000000>, <950000>;

            s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
                                             <1100000>, <1100000>,
                                             <1000000>, <1000000>,
                                             <1000000>, <1000000>;

            s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
                                             <1200000>, <1200000>,
                                             <1200000>, <1200000>,
                                             <1200000>, <1200000>;

            clocks {
                compatible = "samsung,s5m8767-clk";
                #clock-cells = <1>;
                clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
            };

            regulators {
                LDO1 {
                    regulator-name = "VDD_ALIVE";
                    regulator-min-microvolt = <1100000>;
                    regulator-max-microvolt = <1100000>;
                    regulator-always-on;
                    regulator-boot-on;
                    op_mode = <1>; /* Normal Mode */
                };

                // ...

                BUCK1 {
                    regulator-name = "VDD_MIF";
                    regulator-min-microvolt = <950000>;
                    regulator-max-microvolt = <1100000>;
                    regulator-always-on;
                    regulator-boot-on;
                    op_mode = <1>; /* Normal Mode */
                };

                BUCK2 {
                    regulator-name = "VDD_ARM";
                    regulator-min-microvolt = <900000>;
                    regulator-max-microvolt = <1350000>;
                    regulator-always-on;
                    regulator-boot-on;
                    op_mode = <1>; /* Normal Mode */
                };

                // ...
            };
        };
    };

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

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

        pmic@66 {
            compatible = "samsung,s5m8767-pmic";
            reg = <0x66>;

            interrupt-parent = <&gpx3>;
            interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
            wakeup-source;

            s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
                                         <&gpx2 4 GPIO_ACTIVE_LOW>,
                                         <&gpx2 5 GPIO_ACTIVE_LOW>;

            clocks {
                compatible = "samsung,s5m8767-clk";
                #clock-cells = <1>;
                clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
            };

            regulators {
                LDO1 {
                    regulator-name = "VDD_ALIVE";
                    regulator-min-microvolt = <1100000>;
                    regulator-max-microvolt = <1100000>;
                    regulator-always-on;
                    regulator-boot-on;
                    op_mode = <1>; /* Normal Mode */
                };

                // ...
            };
        };
    };
+0 −86
Original line number Diff line number Diff line
Binding for Samsung S2M and S5M family multi-function device
============================================================

This is a part of device tree bindings for S2M and S5M family multi-function
devices.

The Samsung S2MPA01, S2MPS11/13/14/15, S2MPU02 and S5M8767 is a family
of multi-function devices which include voltage and current regulators, RTC,
charger controller, clock outputs and other sub-blocks. It is interfaced
to the host controller using an I2C interface. Each sub-block is usually
addressed by the host system using different I2C slave addresses.


This document describes bindings for main device node. Optional sub-blocks
must be a sub-nodes to it. Bindings for them can be found in:
 - bindings/regulator/samsung,s2mpa01.txt
 - bindings/regulator/samsung,s2mps11.txt
 - bindings/regulator/samsung,s5m8767.txt
 - bindings/clock/samsung,s2mps11.txt


Required properties:
 - compatible: Should be one of the following
	- "samsung,s2mpa01-pmic",
	- "samsung,s2mps11-pmic",
	- "samsung,s2mps13-pmic",
	- "samsung,s2mps14-pmic",
	- "samsung,s2mps15-pmic",
	- "samsung,s2mpu02-pmic",
	- "samsung,s5m8767-pmic".
 - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.

Optional properties:
 - interrupts: Interrupt specifiers for interrupt sources.
 - samsung,s2mps11-wrstbi-ground: Indicates that WRSTBI pin of PMIC is pulled
   down. When the system is suspended it will always go down thus triggerring
   unwanted buck warm reset (setting buck voltages to default values).
 - samsung,s2mps11-acokb-ground: Indicates that ACOKB pin of S2MPS11 PMIC is
   connected to the ground so the PMIC must manually set PWRHOLD bit in CTRL1
   register to turn off the power. Usually the ACOKB is pulled up to VBATT so
   when PWRHOLD pin goes low, the rising ACOKB will trigger power off.

Example:

	s2mps11_pmic@66 {
		compatible = "samsung,s2mps11-pmic";
		reg = <0x66>;

		s2m_osc: clocks {
			compatible = "samsung,s2mps11-clk";
			#clock-cells = <1>;
			clock-output-names = "xx", "yy", "zz";
		};

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ABB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-ramp-delay = <50000>;
			};
		};
	};
+1 −1
Original line number Diff line number Diff line
@@ -16504,7 +16504,7 @@ L: linux-samsung-soc@vger.kernel.org
S:	Supported
F:	Documentation/devicetree/bindings/clock/samsung,s2mps11.yaml
F:	Documentation/devicetree/bindings/mfd/samsung,s2m*.yaml
F:	Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
F:	Documentation/devicetree/bindings/mfd/samsung,s5m*.yaml
F:	Documentation/devicetree/bindings/regulator/samsung,s2m*.yaml
F:	Documentation/devicetree/bindings/regulator/samsung,s5m*.yaml
F:	drivers/clk/clk-s2mps11.c