Skip to content

Commit c821974

Browse files
committed
Add Richtek RTQ2208 SubPMIC support
Merge series from Alina Yu <alina_yu@richtek.com>: This patch series adds support for RTQ2208 SubPMIC regulators. The RTQ2208 is a multi-phase, programmable power management IC that integrate with dual multi-configurable, synchronous buck converters and two ldos. The bucks features wide output voltage range from 0.4V to 2.05V and the capability to configure the corresponding power stages.
2 parents ed2f4c7 + 85a11f5 commit c821974

4 files changed

Lines changed: 792 additions & 0 deletions

File tree

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/regulator/richtek,rtq2208.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Richtek RTQ2208 SubPMIC Regulator
8+
9+
maintainers:
10+
- Alina Yu <alina_yu@richtek.com>
11+
12+
description: |
13+
RTQ2208 is a highly integrated power converter that offers functional safety dual
14+
multi-configurable synchronous buck converters and two LDOs.
15+
16+
Bucks support "regulator-allowed-modes" and "regulator-mode". The former defines the permitted
17+
switching operation in normal mode; the latter defines the operation in suspend to RAM mode.
18+
19+
No matter the RTQ2208 is configured to normal or suspend to RAM mode, there are two switching
20+
operation modes for all buck rails, automatic power saving mode (Auto mode) and forced continuous
21+
conduction mode (FCCM).
22+
23+
The definition of modes is in the datasheet which is available in below link
24+
and their meaning is::
25+
0 - Auto mode for power saving, which reducing the switching frequency at light load condition
26+
to maintain high frequency.
27+
1 - FCCM to meet the strict voltage regulation accuracy, which keeping constant switching frequency.
28+
29+
Datasheet will be available soon at
30+
https://www.richtek.com/assets/Products
31+
32+
properties:
33+
compatible:
34+
enum:
35+
- richtek,rtq2208
36+
37+
reg:
38+
maxItems: 1
39+
40+
interrupts:
41+
maxItems: 1
42+
43+
richtek,mtp-sel-high:
44+
type: boolean
45+
description:
46+
vout register selection based on this boolean value.
47+
false - Using DVS0 register setting to adjust vout
48+
true - Using DVS1 register setting to adjust vout
49+
50+
regulators:
51+
type: object
52+
additionalProperties: false
53+
54+
patternProperties:
55+
"^buck-[a-h]$":
56+
type: object
57+
$ref: regulator.yaml#
58+
unevaluatedProperties: false
59+
description:
60+
description for buck-[a-h] regulator.
61+
62+
properties:
63+
regulator-allowed-modes:
64+
description:
65+
two buck modes in different switching accuracy.
66+
0 - Auto mode
67+
1 - FCCM
68+
items:
69+
enum: [0, 1]
70+
71+
"^ldo[1-2]$":
72+
type: object
73+
$ref: regulator.yaml#
74+
unevaluatedProperties: false
75+
description:
76+
regulator description for ldo[1-2].
77+
78+
required:
79+
- compatible
80+
- reg
81+
- regulators
82+
83+
additionalProperties: false
84+
85+
examples:
86+
- |
87+
#include <dt-bindings/interrupt-controller/irq.h>
88+
i2c {
89+
#address-cells = <1>;
90+
#size-cells = <0>;
91+
92+
pmic@10 {
93+
compatible = "richtek,rtq2208";
94+
reg = <0x10>;
95+
interrupts-extended = <&gpio26 0 IRQ_TYPE_LEVEL_LOW>;
96+
richtek,mtp-sel-high;
97+
98+
regulators {
99+
buck-a {
100+
regulator-min-microvolt = <400000>;
101+
regulator-max-microvolt = <2050000>;
102+
regulator-allowed-modes = <0 1>;
103+
regulator-always-on;
104+
regulator-state-mem {
105+
regulator-on-in-suspend;
106+
regulator-mode = <1>;
107+
};
108+
};
109+
buck-b {
110+
regulator-min-microvolt = <400000>;
111+
regulator-max-microvolt = <2050000>;
112+
regulator-allowed-modes = <0 1>;
113+
regulator-always-on;
114+
regulator-state-mem {
115+
regulator-on-in-suspend;
116+
regulator-mode = <1>;
117+
};
118+
};
119+
buck-c {
120+
regulator-min-microvolt = <400000>;
121+
regulator-max-microvolt = <2050000>;
122+
regulator-allowed-modes = <0 1>;
123+
regulator-always-on;
124+
regulator-state-mem {
125+
regulator-on-in-suspend;
126+
regulator-mode = <1>;
127+
};
128+
};
129+
buck-d {
130+
regulator-min-microvolt = <400000>;
131+
regulator-max-microvolt = <2050000>;
132+
regulator-allowed-modes = <0 1>;
133+
regulator-always-on;
134+
regulator-state-mem {
135+
regulator-on-in-suspend;
136+
regulator-mode = <1>;
137+
};
138+
};
139+
buck-e {
140+
regulator-min-microvolt = <400000>;
141+
regulator-max-microvolt = <2050000>;
142+
regulator-allowed-modes = <0 1>;
143+
regulator-always-on;
144+
regulator-state-mem {
145+
regulator-on-in-suspend;
146+
regulator-mode = <1>;
147+
};
148+
};
149+
buck-f {
150+
regulator-min-microvolt = <400000>;
151+
regulator-max-microvolt = <2050000>;
152+
regulator-allowed-modes = <0 1>;
153+
regulator-always-on;
154+
regulator-state-mem {
155+
regulator-on-in-suspend;
156+
regulator-mode = <1>;
157+
};
158+
};
159+
buck-g {
160+
regulator-min-microvolt = <400000>;
161+
regulator-max-microvolt = <2050000>;
162+
regulator-allowed-modes = <0 1>;
163+
regulator-always-on;
164+
regulator-state-mem {
165+
regulator-on-in-suspend;
166+
regulator-mode = <1>;
167+
};
168+
};
169+
buck-h {
170+
regulator-min-microvolt = <400000>;
171+
regulator-max-microvolt = <2050000>;
172+
regulator-allowed-modes = <0 1>;
173+
regulator-always-on;
174+
regulator-state-mem {
175+
regulator-on-in-suspend;
176+
regulator-mode = <1>;
177+
};
178+
};
179+
ldo1 {
180+
regulator-min-microvolt = <1200000>;
181+
regulator-max-microvolt = <1200000>;
182+
regulator-always-on;
183+
regulator-state-mem {
184+
regulator-on-in-suspend;
185+
};
186+
};
187+
ldo2 {
188+
regulator-min-microvolt = <3300000>;
189+
regulator-max-microvolt = <3300000>;
190+
regulator-always-on;
191+
regulator-state-mem {
192+
regulator-on-in-suspend;
193+
};
194+
};
195+
};
196+
};
197+
};

drivers/regulator/Kconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,6 +1254,17 @@ config REGULATOR_RTQ6752
12541254
synchronous boost converters for PAVDD, and one synchronous NAVDD
12551255
buck-boost. This device is suitable for automotive TFT-LCD panel.
12561256

1257+
config REGULATOR_RTQ2208
1258+
tristate "Richtek RTQ2208 SubPMIC Regulator"
1259+
depends on I2C
1260+
select REGMAP_I2C
1261+
help
1262+
This driver adds support for RTQ2208 SubPMIC regulators.
1263+
The RTQ2208 is a multi-phase, programmable power management IC that
1264+
integrate with dual multi-configurable, synchronous buck converters
1265+
and two ldos. It features wide output voltage range from 0.4V to 2.05V
1266+
and the capability to configure the corresponding power stages.
1267+
12571268
config REGULATOR_S2MPA01
12581269
tristate "Samsung S2MPA01 voltage regulator"
12591270
depends on MFD_SEC_CORE || COMPILE_TEST

drivers/regulator/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ obj-$(CONFIG_REGULATOR_RT6245) += rt6245-regulator.o
147147
obj-$(CONFIG_REGULATOR_RTMV20) += rtmv20-regulator.o
148148
obj-$(CONFIG_REGULATOR_RTQ2134) += rtq2134-regulator.o
149149
obj-$(CONFIG_REGULATOR_RTQ6752) += rtq6752-regulator.o
150+
obj-$(CONFIG_REGULATOR_RTQ2208) += rtq2208-regulator.o
150151
obj-$(CONFIG_REGULATOR_S2MPA01) += s2mpa01.o
151152
obj-$(CONFIG_REGULATOR_S2MPS11) += s2mps11.o
152153
obj-$(CONFIG_REGULATOR_S5M8767) += s5m8767.o

0 commit comments

Comments
 (0)