Skip to content

Commit 48e6872

Browse files
committed
Add support for ADP5055 triple buck regulator.
Merge series from Alexis Czezar Torreno <[email protected]>: Introduce a regulator driver support for ADP5055. The device combines 3 high performance buck regulators in a 43-termminal land grid array package. The device enables direct connection to high input voltages up to 18V with no preregulator. Channel 1 and 2 deliver a programmable output current of 3.5A or 7.5A or provide a single output with up to 14A in parallel operation. Channel 3 has a programmable output current of 1.5A or 3A.
2 parents 36ddc9e + 147b2a9 commit 48e6872

File tree

5 files changed

+606
-0
lines changed

5 files changed

+606
-0
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/regulator/adi,adp5055-regulator.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Analog Devices ADP5055 Triple Buck Regulator
8+
9+
maintainers:
10+
- Alexis Czezar Torreno <[email protected]>
11+
12+
description: |
13+
The ADP5055 combines three high performance buck regulator. The device enables
14+
direct connection to high input voltages up to 18 V with no preregulators.
15+
https://www.analog.com/media/en/technical-documentation/data-sheets/adp5055.pdf
16+
17+
properties:
18+
compatible:
19+
enum:
20+
- adi,adp5055
21+
22+
reg:
23+
enum:
24+
- 0x70
25+
- 0x71
26+
27+
adi,tset-us:
28+
description:
29+
Setting time used by the device. This is changed via soldering specific
30+
resistor values on the CFG2 pin.
31+
enum: [2600, 20800]
32+
default: 2600
33+
34+
adi,ocp-blanking:
35+
description:
36+
If present, overcurrent protection (OCP) blanking for all regulator is on.
37+
type: boolean
38+
39+
adi,delay-power-good:
40+
description:
41+
Configures delay timer of the power good (PWRGD) pin. Delay is based on
42+
Tset which can be 2.6 ms or 20.8 ms.
43+
type: boolean
44+
45+
'#address-cells':
46+
const: 1
47+
48+
'#size-cells':
49+
const: 0
50+
51+
patternProperties:
52+
'^buck[0-2]$':
53+
type: object
54+
$ref: regulator.yaml#
55+
unevaluatedProperties: false
56+
57+
properties:
58+
enable-gpios:
59+
maxItems: 1
60+
description:
61+
GPIO specifier to enable the GPIO control for each regulator. The
62+
driver supports two modes of enable, hardware only (GPIOs) or software
63+
only (Registers). Pure hardware enabling requires each regulator to
64+
contain this property. If at least one regulator does not have this,
65+
the driver automatically switches to software only mode.
66+
67+
adi,dvs-limit-upper-microvolt:
68+
description:
69+
Configure the allowable upper side limit of the voltage output of each
70+
regulator in microvolt. Relative to the default Vref trimming value.
71+
Vref = 600 mV. Voltages are in 12 mV steps, value is autoadjusted.
72+
Vout_high = Vref_trim + dvs-limit-upper.
73+
minimum: 12000
74+
maximum: 192000
75+
default: 192000
76+
77+
adi,dvs-limit-lower-microvolt:
78+
description:
79+
Configure the allowable lower side limit of the voltage output of each
80+
regulator in microvolt. Relative to the default Vref trimming value.
81+
Vref = 600 mV. Voltages are in 12 mV steps, value is autoadjusted.
82+
Vout_low = Vref_trim + dvs-limit-lower.
83+
minimum: -190500
84+
maximum: -10500
85+
default: -190500
86+
87+
adi,fast-transient:
88+
description:
89+
Configures the fast transient sensitivity for each regulator.
90+
"none" - No fast transient.
91+
"3G_1.5%" - 1.5% window with 3*350uA/V
92+
"5G_1.5%" - 1.5% window with 5*350uA/V
93+
"5G_2.5%" - 2.5% window with 5*350uA/V
94+
enum: [none, 3G_1.5%, 5G_1.5%, 5G_2.5%]
95+
default: 5G_2.5%
96+
97+
adi,mask-power-good:
98+
description:
99+
If present, masks individual regulators PWRGD signal to the external
100+
PWRGD hardware pin.
101+
type: boolean
102+
103+
required:
104+
- regulator-name
105+
106+
required:
107+
- compatible
108+
- reg
109+
110+
additionalProperties: false
111+
112+
examples:
113+
- |
114+
#include <dt-bindings/gpio/gpio.h>
115+
116+
i2c {
117+
#address-cells = <1>;
118+
#size-cells = <0>;
119+
120+
regulator@70 {
121+
compatible = "adi,adp5055";
122+
reg = <0x70>;
123+
#address-cells = <1>;
124+
#size-cells = <0>;
125+
126+
adi,tset-us = <2600>;
127+
adi,ocp-blanking;
128+
adi,delay-power-good;
129+
130+
buck0 {
131+
regulator-name = "buck0";
132+
enable-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
133+
adi,dvs-limit-upper-microvolt = <192000>;
134+
adi,dvs-limit-lower-microvolt = <(-190500)>;
135+
adi,fast-transient = "5G_2.5%";
136+
adi,mask-power-good;
137+
};
138+
139+
buck1 {
140+
regulator-name = "buck1";
141+
enable-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
142+
adi,dvs-limit-upper-microvolt = <192000>;
143+
adi,dvs-limit-lower-microvolt = <(-190500)>;
144+
adi,fast-transient = "5G_2.5%";
145+
adi,mask-power-good;
146+
};
147+
148+
buck2 {
149+
regulator-name = "buck2";
150+
enable-gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
151+
adi,dvs-limit-upper-microvolt = <192000>;
152+
adi,dvs-limit-lower-microvolt = <(-190500)>;
153+
adi,fast-transient = "5G_2.5%";
154+
adi,mask-power-good;
155+
};
156+
};
157+
};

MAINTAINERS

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,6 +1567,13 @@ W: https://ez.analog.com/linux-software-drivers
15671567
F: Documentation/devicetree/bindings/iio/filter/adi,admv8818.yaml
15681568
F: drivers/iio/filter/admv8818.c
15691569

1570+
ANALOG DEVICES INC ADP5055 DRIVER
1571+
M: Alexis Czezar Torreno <[email protected]>
1572+
S: Supported
1573+
W: https://ez.analog.com/linux-software-drivers
1574+
F: Documentation/devicetree/bindings/regulator/adi,adp5055-regulator.yaml
1575+
F: drivers/regulator/adp5055-regulator.c
1576+
15701577
ANALOG DEVICES INC ADP5061 DRIVER
15711578
M: Michael Hennerich <[email protected]>
15721579

drivers/regulator/Kconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,17 @@ config REGULATOR_AD5398
122122
This driver supports AD5398 and AD5821 current regulator chips.
123123
If building into module, its name is ad5398.ko.
124124

125+
config REGULATOR_ADP5055
126+
tristate "Analog Devices ADP5055 Triple Buck Regulator"
127+
depends on I2C
128+
select REGMAP_I2C
129+
help
130+
This driver controls an Analog Devices ADP5055 with triple buck
131+
regulators using an I2C interface.
132+
133+
Say M here if you want to include support for the regulator as a
134+
module.
135+
125136
config REGULATOR_ANATOP
126137
tristate "Freescale i.MX on-chip ANATOP LDO regulators"
127138
depends on ARCH_MXC || COMPILE_TEST

drivers/regulator/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ obj-$(CONFIG_REGULATOR_AB8500) += ab8500-ext.o ab8500.o
2222
obj-$(CONFIG_REGULATOR_ACT8865) += act8865-regulator.o
2323
obj-$(CONFIG_REGULATOR_ACT8945A) += act8945a-regulator.o
2424
obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o
25+
obj-$(CONFIG_REGULATOR_ADP5055) += adp5055-regulator.o
2526
obj-$(CONFIG_REGULATOR_ANATOP) += anatop-regulator.o
2627
obj-$(CONFIG_REGULATOR_ARIZONA_LDO1) += arizona-ldo1.o
2728
obj-$(CONFIG_REGULATOR_ARIZONA_MICSUPP) += arizona-micsupp.o

0 commit comments

Comments
 (0)