Commit | Line | Data |
---|---|---|
aa32acad | 1 | |
8d7c7726 | 2 | * Samsung S2MPS11 and S2MPS14 Voltage and Current Regulator |
aa32acad | 3 | |
9a46847a | 4 | The Samsung S2MPS11 is a multi-function device which includes voltage and |
aa32acad | 5 | current regulators, RTC, charger controller and other sub-blocks. It is |
9a46847a SK |
6 | interfaced to the host controller using an I2C interface. Each sub-block is |
7 | addressed by the host system using different I2C slave addresses. | |
aa32acad YSB |
8 | |
9 | Required properties: | |
8d7c7726 | 10 | - compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic". |
aa32acad YSB |
11 | - reg: Specifies the I2C slave address of the pmic block. It should be 0x66. |
12 | ||
13 | Optional properties: | |
14 | - interrupt-parent: Specifies the phandle of the interrupt controller to which | |
15 | the interrupts from s2mps11 are delivered to. | |
16 | - interrupts: Interrupt specifiers for interrupt sources. | |
17 | ||
18 | Optional nodes: | |
3134bcae YSB |
19 | - clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to |
20 | register these as clocks with common clock framework instantiate a sub-node | |
21 | named "clocks". It uses the common clock binding documented in : | |
22 | [Documentation/devicetree/bindings/clock/clock-bindings.txt] | |
23 | - #clock-cells: should be 1. | |
24 | ||
25 | - The following is the list of clocks generated by the controller. Each clock | |
26 | is assigned an identifier and client nodes use this identifier to specify | |
27 | the clock which they consume. | |
28 | Clock ID | |
29 | ---------------------- | |
30 | 32KhzAP 0 | |
31 | 32KhzCP 1 | |
32 | 32KhzBT 2 | |
33 | ||
aa32acad YSB |
34 | - regulators: The regulators of s2mps11 that have to be instantiated should be |
35 | included in a sub-node named 'regulators'. Regulator nodes included in this | |
36 | sub-node should be of the format as listed below. | |
37 | ||
38 | regulator_name { | |
39 | [standard regulator constraints....]; | |
40 | }; | |
41 | ||
42 | regulator-ramp-delay for BUCKs = [6250/12500/25000(default)/50000] uV/us | |
43 | ||
44 | BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explictly | |
45 | regulator-ramp-delay = <0> can be used for them to disable ramp delay. | |
9a46847a SK |
46 | In the absence of the regulator-ramp-delay property, the default ramp |
47 | delay will be used. | |
aa32acad YSB |
48 | |
49 | NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set | |
50 | for a particular group of BUCKs. So provide same regulator-ramp-delay<value>. | |
51 | Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6], | |
52 | BUCK[3, 4], and BUCK[7, 8, 10] | |
53 | ||
54 | The regulator constraints inside the regulator nodes use the standard regulator | |
55 | bindings which are documented elsewhere. | |
56 | ||
57 | The following are the names of the regulators that the s2mps11 pmic block | |
58 | supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number | |
59 | as per the datasheet of s2mps11. | |
60 | ||
61 | - LDOn | |
8d7c7726 KK |
62 | - valid values for n are: |
63 | - S2MPS11: 1 to 38 | |
64 | - S2MPS14: 1 to 25 | |
94100e7b | 65 | - Example: LDO1, LD02, LDO28 |
aa32acad | 66 | - BUCKn |
8d7c7726 KK |
67 | - valid values for n are: |
68 | - S2MPS11: 1 to 10 | |
69 | - S2MPS14: 1 to 5 | |
aa32acad YSB |
70 | - Example: BUCK1, BUCK2, BUCK9 |
71 | ||
72 | Example: | |
73 | ||
74 | s2mps11_pmic@66 { | |
75 | compatible = "samsung,s2mps11-pmic"; | |
76 | reg = <0x66>; | |
77 | ||
3134bcae YSB |
78 | s2m_osc: clocks{ |
79 | #clock-cells = 1; | |
80 | clock-output-names = "xx", "yy", "zz"; | |
81 | }; | |
82 | ||
aa32acad YSB |
83 | regulators { |
84 | ldo1_reg: LDO1 { | |
85 | regulator-name = "VDD_ABB_3.3V"; | |
86 | regulator-min-microvolt = <3300000>; | |
87 | regulator-max-microvolt = <3300000>; | |
88 | }; | |
89 | ||
90 | ldo2_reg: LDO2 { | |
91 | regulator-name = "VDD_ALIVE_1.1V"; | |
92 | regulator-min-microvolt = <1100000>; | |
93 | regulator-max-microvolt = <1100000>; | |
94 | regulator-always-on; | |
95 | }; | |
96 | ||
97 | buck1_reg: BUCK1 { | |
98 | regulator-name = "vdd_mif"; | |
99 | regulator-min-microvolt = <950000>; | |
100 | regulator-max-microvolt = <1350000>; | |
101 | regulator-always-on; | |
102 | regulator-boot-on; | |
103 | }; | |
104 | ||
105 | buck2_reg: BUCK2 { | |
106 | regulator-name = "vdd_arm"; | |
107 | regulator-min-microvolt = <950000>; | |
108 | regulator-max-microvolt = <1350000>; | |
109 | regulator-always-on; | |
110 | regulator-boot-on; | |
111 | regulator-ramp-delay = <50000>; | |
112 | }; | |
113 | }; | |
114 | }; |