Re: [PATCH 1/3] dt-bindings: regulator/clock/mfd: Reorganize S2MPS-family bindings

From: Lee Jones
Date: Mon Jan 11 2016 - 02:51:12 EST


On Fri, 04 Dec 2015, Krzysztof Kozlowski wrote:

> Bindings for Samsung S2M and S5M family PMICs are in mess. They are
> spread over different files and subdirectories in a non-consistent way.
> The devices and respective drivers for them share a lot in common so
> everything could be organized in a more readable way.
>
> Reorganize the S2MPS11/13/14/15 Device Tree bindings to match the
> drivers for this family of devices:
> - move mfd/s2mps11.txt to mfd/samsung,sec-core.txt for the main MFD
> driver (common for entire family),
> - split clock block to clock/samsung,s2mps11.txt,
> - split regulator block to regulator/samsung,s2mps11.txt.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@xxxxxxxxxxx>
> ---
> .../devicetree/bindings/clock/samsung,s2mps11.txt | 49 +++++++
> Documentation/devicetree/bindings/mfd/s2mps11.txt | 153 ---------------------
> .../devicetree/bindings/mfd/samsung,sec-core.txt | 84 +++++++++++
> .../bindings/regulator/samsung,s2mps11.txt | 102 ++++++++++++++
> MAINTAINERS | 4 +-
> 5 files changed, 238 insertions(+), 154 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
> delete mode 100644 Documentation/devicetree/bindings/mfd/s2mps11.txt
> create mode 100644 Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
> create mode 100644 Documentation/devicetree/bindings/regulator/samsung,s2mps11.txt

Applied, thanks.

> diff --git a/Documentation/devicetree/bindings/clock/samsung,s2mps11.txt b/Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
> new file mode 100644
> index 000000000000..2726c1d58a79
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
> @@ -0,0 +1,49 @@
> +Binding for Samsung S2M and S5M family clock generator block
> +============================================================
> +
> +This is a part of device tree bindings for S2M and S5M family multi-function
> +devices.
> +More information can be found in bindings/mfd/sec-core.txt file.
> +
> +The S2MPS11/13/15 and S5M8767 provide three(AP/CP/BT) buffered 32.768 kHz
> +outputs. The S2MPS14 provides two (AP/BT) buffered 32.768 KHz outputs.
> +
> +To register these as clocks with common clock framework instantiate under
> +main device node a sub-node named "clocks".
> +
> +It uses the common clock binding documented in:
> + - Documentation/devicetree/bindings/clock/clock-bindings.txt
> +
> +
> +Required properties of the "clocks" sub-node:
> + - #clock-cells: should be 1.
> + - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps13-clk",
> + "samsung,s2mps14-clk", "samsung,s5m8767-clk"
> + The S2MPS15 uses the same compatible as S2MPS13, as both provides similar
> + clocks.
> +
> +
> +Each clock is assigned an identifier and client nodes use this identifier
> +to specify the clock which they consume.
> + Clock ID Devices
> + ----------------------------------------------------------
> + 32KhzAP 0 S2MPS11/13/14/15, S5M8767
> + 32KhzCP 1 S2MPS11/13/15, S5M8767
> + 32KhzBT 2 S2MPS11/13/14/15, S5M8767
> +
> +Include dt-bindings/clock/samsung,s2mps11.h file to use preprocessor defines
> +in device tree sources.
> +
> +
> +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";
> + };
> + };
> diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
> deleted file mode 100644
> index 09b94c97faac..000000000000
> --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
> +++ /dev/null
> @@ -1,153 +0,0 @@
> -
> -* Samsung S2MPS11/13/14/15 and S2MPU02 Voltage and Current Regulator
> -
> -The Samsung S2MPS11 is a multi-function device which includes voltage and
> -current regulators, RTC, charger controller and other sub-blocks. It is
> -interfaced to the host controller using an I2C interface. Each sub-block is
> -addressed by the host system using different I2C slave addresses.
> -
> -Required properties:
> -- compatible: Should be one of the following
> - - "samsung,s2mps11-pmic"
> - - "samsung,s2mps13-pmic"
> - - "samsung,s2mps14-pmic"
> - - "samsung,s2mps15-pmic"
> - - "samsung,s2mpu02-pmic".
> -- reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
> -
> -Optional properties:
> -- interrupt-parent: Specifies the phandle of the interrupt controller to which
> - the interrupts from s2mps11 are delivered to.
> -- 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.
> -
> -Optional nodes:
> -- clocks: s2mps11, s2mps13, s2mps15 and s5m8767 provide three(AP/CP/BT) buffered 32.768
> - KHz outputs, so to register these as clocks with common clock framework
> - instantiate a sub-node named "clocks". It uses the common clock binding
> - documented in :
> - [Documentation/devicetree/bindings/clock/clock-bindings.txt]
> - The s2mps14 provides two (AP/BT) buffered 32.768 KHz outputs.
> - - #clock-cells: should be 1.
> -
> - - The following is the list of clocks generated by the controller. Each clock
> - is assigned an identifier and client nodes use this identifier to specify
> - the clock which they consume.
> - Clock ID Devices
> - ----------------------------------------------------------
> - 32KhzAP 0 S2MPS11, S2MPS13, S2MPS14, S2MPS15, S5M8767
> - 32KhzCP 1 S2MPS11, S2MPS13, S2MPS15, S5M8767
> - 32KhzBT 2 S2MPS11, S2MPS13, S2MPS14, S2MPS15, S5M8767
> -
> - - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps13-clk",
> - "samsung,s2mps14-clk", "samsung,s5m8767-clk"
> - The s2msp15 uses the same compatible as s2mps13, as both provides similar clocks.
> -
> -- regulators: The regulators of s2mps11 that have to be instantiated should be
> -included in a sub-node named 'regulators'. Regulator nodes included in this
> -sub-node should be of the format as listed below.
> -
> - regulator_name {
> - [standard regulator constraints....];
> - };
> -
> - regulator-ramp-delay for BUCKs = [6250/12500/25000(default)/50000] uV/us
> -
> - BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explicitly
> - regulator-ramp-delay = <0> can be used for them to disable ramp delay.
> - In the absence of the regulator-ramp-delay property, the default ramp
> - delay will be used.
> -
> -NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set
> -for a particular group of BUCKs. So provide same regulator-ramp-delay<value>.
> -Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6],
> -BUCK[3, 4], and BUCK[7, 8, 10]
> -
> -On S2MPS14 the LDO10, LDO11 and LDO12 can be configured to external control
> -over GPIO. To turn this feature on this property must be added to the regulator
> -sub-node:
> - - samsung,ext-control-gpios: GPIO specifier for one GPIO
> - controlling this regulator (enable/disable);
> -Example:
> - LDO12 {
> - regulator-name = "V_EMMC_2.8V";
> - regulator-min-microvolt = <2800000>;
> - regulator-max-microvolt = <2800000>;
> - samsung,ext-control-gpios = <&gpk0 2 0>;
> - };
> -
> -
> -The regulator constraints inside the regulator nodes use the standard regulator
> -bindings which are documented elsewhere.
> -
> -The following are the names of the regulators that the s2mps11 pmic block
> -supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
> -as per the datasheet of s2mps11.
> -
> - - LDOn
> - - valid values for n are:
> - - S2MPS11: 1 to 38
> - - S2MPS13: 1 to 40
> - - S2MPS14: 1 to 25
> - - S2MPS15: 1 to 27
> - - S2MPU02: 1 to 28
> - - Example: LDO1, LDO2, LDO28
> - - BUCKn
> - - valid values for n are:
> - - S2MPS11: 1 to 10
> - - S2MPS13: 1 to 10
> - - S2MPS14: 1 to 5
> - - S2MPS15: 1 to 10
> - - S2MPU02: 1 to 7
> - - Example: BUCK1, BUCK2, BUCK9
> -
> -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>;
> - };
> - };
> - };
> diff --git a/Documentation/devicetree/bindings/mfd/samsung,sec-core.txt b/Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
> new file mode 100644
> index 000000000000..ef0166d0f643
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
> @@ -0,0 +1,84 @@
> +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 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,s2mps11.txt
> + - bindings/clock/samsung,s2mps11.txt
> +
> +
> +Required properties:
> + - compatible: Should be one of the following
> + - "samsung,s2mps11-pmic",
> + - "samsung,s2mps13-pmic",
> + - "samsung,s2mps14-pmic",
> + - "samsung,s2mps15-pmic",
> + - "samsung,s2mpu02-pmic".
> + - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.
> +
> +Optional properties:
> + - interrupt-parent: Specifies the phandle of the interrupt controller to which
> + the interrupts from s2mps11 are delivered to.
> + - 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>;
> + };
> + };
> + };
> diff --git a/Documentation/devicetree/bindings/regulator/samsung,s2mps11.txt b/Documentation/devicetree/bindings/regulator/samsung,s2mps11.txt
> new file mode 100644
> index 000000000000..27a48bf1b185
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/regulator/samsung,s2mps11.txt
> @@ -0,0 +1,102 @@
> +Binding for Samsung S2M family regulator block
> +==============================================
> +
> +This is a part of device tree bindings for S2M family multi-function devices.
> +More information can be found in bindings/mfd/sec-core.txt file.
> +
> +The S2MPS11/13/14/15 and S2MPU02 devices provide buck and LDO regulators.
> +
> +To register these with regulator framework instantiate under main device node
> +a sub-node named "regulators" with more sub-nodes for each regulator using the
> +common regulator binding documented in:
> + - Documentation/devicetree/bindings/regulator/regulator.txt
> +
> +
> +Names of regulators supported by different devices:
> + - LDOn
> + - valid values for n are:
> + - S2MPS11: 1 to 38
> + - S2MPS13: 1 to 40
> + - S2MPS14: 1 to 25
> + - S2MPS15: 1 to 27
> + - S2MPU02: 1 to 28
> + - Example: LDO1, LDO2, LDO28
> + - BUCKn
> + - valid values for n are:
> + - S2MPS11: 1 to 10
> + - S2MPS13: 1 to 10
> + - S2MPS14: 1 to 5
> + - S2MPS15: 1 to 10
> + - S2MPU02: 1 to 7
> + - Example: BUCK1, BUCK2, BUCK9
> +Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
> +as per the datasheet of device.
> +
> +
> +Optional properties of the nodes under "regulators" sub-node:
> + - regulator-ramp-delay: ramp delay in uV/us. May be 6250, 12500,
> + 25000 (default) or 50000.
> +
> + Additionally S2MPS11 supports disabling ramp delay for BUCK{2,3,4,6}
> + by setting it to <0>.
> +
> + Note: On S2MPS11 some bucks share the ramp rate setting i.e. same ramp value
> + will be set for a particular group of bucks so provide the same
> + regulator-ramp-delay value for them.
> + Groups sharing ramp rate:
> + - buck{1,6},
> + - buck{3,4},
> + - buck{7,8,10}.
> +
> + - samsung,ext-control-gpios: On S2MPS14 the LDO10, LDO11 and LDO12 can be
> + configured to external control over GPIO. To turn this feature on this
> + property must be added to the regulator sub-node:
> + - samsung,ext-control-gpios: GPIO specifier for one GPIO
> + controlling this regulator (enable/disable)
> + Example:
> + LDO12 {
> + regulator-name = "V_EMMC_2.8V";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + samsung,ext-control-gpios = <&gpk0 2 0>;
> + };
> +
> +
> +Example:
> +
> + s2mps11_pmic@66 {
> + compatible = "samsung,s2mps11-pmic";
> + reg = <0x66>;
> +
> + 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>;
> + };
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f3de00113ae8..137284e37250 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -9234,7 +9234,9 @@ F: drivers/clk/clk-s2mps11.c
> F: drivers/rtc/rtc-s5m.c
> F: include/linux/mfd/samsung/
> F: Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt
> -F: Documentation/devicetree/bindings/mfd/s2mp*.txt
> +F: Documentation/devicetree/bindings/mfd/samsung,sec-core.txt
> +F: Documentation/devicetree/bindings/regulator/samsung,s2m*.txt
> +F: Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
>
> SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
> M: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org â Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog