Skip to contentSkip to conversation

regulator: Add driver for gpio-controlled regulators

PATCH Applied Heiko Stübner 2 participants 4 messages Oct 5, 2011 – Oct 9, 2011 Voltage and current regulator framework

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 regulator: Add driver for gpio-controlled regulators

This patch adds support for regulators that can be controlled via gpios.

Examples for such regulators are the TI-tps65024x voltage regulators with 4 fixed and 1 runtime-switchable voltage regulators or the TI-bq240XX charger regulators.

The number of controlling gpios is not limited, the mapping between voltage/current and target gpio state is done via the states map and the driver can be used for either voltage or current regulators.

A mapping for a regulator with two GPIOs could look like:

gpios = {
{ .gpio = GPIO1, .flags = GPIOF_OUT_INIT_HIGH, .label = "gpio name 1" }, { .gpio = GPIO2, .flags = GPIOF_OUT_INIT_LOW, .label = "gpio name 2" },
}

The flags element of the gpios array determines the initial state of the gpio, set during probe. The initial state of the regulator is also calculated from these values

states = {
	{ .value = volt_or_cur1, .gpios = (0 << 1) | (0 << 0) },
	{ .value = volt_or_cur2, .gpios = (0 << 1) | (1 << 0) },
	{ .value = volt_or_cur3, .gpios = (1 << 1) | (0 << 0) },
	{ .value = volt_or_cur4, .gpios = (1 << 1) | (1 << 0) },
}

The target-state for the n-th gpio is determined by the n-th bit in the bitfield of the target-value.

---
resend due to wrong list, sorry

changes since v1:
address comments from Mark Brown, mainly use gpio_request_array to allocate the settings-gpios.
readd forgotten patch history

changes since rfc v2:
add capability to work as voltage or current regulator test on bq24075 and tps650240 and fix runtime errors

changes since rfc v1:
modifiy voltage switching driver to work with more than one gpio, making it a versatile driver for gpio controlled regulators

 drivers/regulator/Kconfig                |    9 +
 drivers/regulator/Makefile               |    1 +
 drivers/regulator/gpio-regulator.c       |  357 ++++++++++++++++++++++++++++++
 include/linux/regulator/gpio-regulator.h |   87 ++++++++
 4 files changed, 454 insertions(+), 0 deletions(-)
drivers/regulator/Kconfig +9 -0
index c7fd2c0..5e0c7b6 100644
@@ -64,6 +64,15 @@ config REGULATOR_USERSPACE_CONSUMER
 
           If unsure, say no.
 
+config REGULATOR_GPIO
+	tristate "GPIO regulator support"
+	help
+	  This driver provides support for regulators that can be
+	  controlled via gpios.
+	  It is capable of supporting current and voltage regulators
+	  and the platform has to provide a mapping of GPIO-states
+	  to target volts/amps.
+
 config REGULATOR_BQ24022
 	tristate "TI bq24022 Dual Input 1-Cell Li-Ion Charger IC"
 	help
drivers/regulator/Makefile +1 -0
index 040d5aa..93a6318 100644
@@ -8,6 +8,7 @@ obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o
 obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o
 obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o
 
+obj-$(CONFIG_REGULATOR_GPIO) += gpio-regulator.o
 obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o
 obj-$(CONFIG_REGULATOR_BQ24022) += bq24022.o
 obj-$(CONFIG_REGULATOR_LP3971) += lp3971.o
drivers/regulator/gpio-regulator.c new file +357 -0

357 lines not on this page · raw message

include/linux/regulator/gpio-regulator.h new file +87 -0

87 lines not on this page · raw message

Signature · 1 line
tg: (c6a389f..) topic/drivers/reg-switch (depends on: master)
#1 lore raw
Quoted 1 line · Heiko Stübner

This patch adds support for regulators that can be controlled via gpios.

How does this differ from the v2 of your patch that you sent at Tue, 4 Oct 2011 21:34:42 +0200?

#2 lore raw

Am Mittwoch, 5. Oktober 2011, 12:28:35 schrieben Sie:

Quoted 5 lines · Heiko Stübner
Quoted 1 line

This patch adds support for regulators that can be controlled via gpios.

How does this differ from the v2 of your patch that you sent at Tue, 4 Oct 2011 21:34:42 +0200?

as I wrote in the changes section, it is a resend, as I included the wrong list (linux-arm-kernel instead of linux-kernel).

There are no code changes.

Heiko

Applied
#3 lore raw
In reply to Heiko Stübner
Quoted 5 lines · Heiko Stübner

This patch adds support for regulators that can be controlled via gpios.

Examples for such regulators are the TI-tps65024x voltage regulators with 4 fixed and 1 runtime-switchable voltage regulators or the TI-bq240XX charger regulators.

Applied, thanks.