dt-bindings: regulator/clock/mfd: Reorganize S2MPS-family bindings
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@samsung.com> Acked-by: Michael Turquette <mturquette@baylibre.com> Acked-by: Rob Herring <robh@kernel.org> Acked-by: Mark Brown <broonie@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
f8e3a514bf
commit
a13c7c51fd
|
@ -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";
|
||||||
|
};
|
||||||
|
};
|
|
@ -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>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -9224,7 +9224,9 @@ F: drivers/clk/clk-s2mps11.c
|
||||||
F: drivers/rtc/rtc-s5m.c
|
F: drivers/rtc/rtc-s5m.c
|
||||||
F: include/linux/mfd/samsung/
|
F: include/linux/mfd/samsung/
|
||||||
F: Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt
|
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
|
SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
|
||||||
M: Kyungmin Park <kyungmin.park@samsung.com>
|
M: Kyungmin Park <kyungmin.park@samsung.com>
|
||||||
|
|
Loading…
Reference in New Issue