mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-17 12:41:32 +00:00
regulator: Allow enabling GPIO regulator
Drivers need to be able to enable regulators that may be implemented as GPIO regulators. Example: fsl_esdhc enables the vqmmc supply which is commonly implemented as a GPIO regulator in order to switch between I/O voltage levels. Signed-off-by: Sven Schwermer <sven@svenschwermer.de> Reviewed-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
parent
2f7a5f2682
commit
aa2067a869
2 changed files with 19 additions and 1 deletions
|
@ -120,6 +120,7 @@ config SPL_DM_REGULATOR_FIXED
|
|||
config DM_REGULATOR_GPIO
|
||||
bool "Enable Driver Model for GPIO REGULATOR"
|
||||
depends on DM_REGULATOR && DM_GPIO
|
||||
select DM_REGULATOR_COMMON
|
||||
---help---
|
||||
This config enables implementation of driver-model regulator uclass
|
||||
features for gpio regulators. The driver implements get/set for
|
||||
|
@ -128,6 +129,7 @@ config DM_REGULATOR_GPIO
|
|||
config SPL_DM_REGULATOR_GPIO
|
||||
bool "Enable Driver Model for GPIO REGULATOR in SPL"
|
||||
depends on DM_REGULATOR_GPIO && SPL_GPIO_SUPPORT
|
||||
select SPL_DM_REGULATOR_COMMON
|
||||
---help---
|
||||
This config enables implementation of driver-model regulator uclass
|
||||
features for gpio regulators in SPL.
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
* Keerthy <j-keerthy@ti.com>
|
||||
*/
|
||||
|
||||
#include "regulator_common.h"
|
||||
#include <common.h>
|
||||
#include <fdtdec.h>
|
||||
#include <errno.h>
|
||||
|
@ -18,6 +19,7 @@
|
|||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
struct gpio_regulator_platdata {
|
||||
struct regulator_common_platdata common;
|
||||
struct gpio_desc gpio; /* GPIO for regulator voltage control */
|
||||
int states[GPIO_REGULATOR_MAX_STATES];
|
||||
int voltages[GPIO_REGULATOR_MAX_STATES];
|
||||
|
@ -65,7 +67,7 @@ static int gpio_regulator_ofdata_to_platdata(struct udevice *dev)
|
|||
j++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return regulator_common_ofdata_to_platdata(dev, &dev_pdata->common, "enable-gpios");
|
||||
}
|
||||
|
||||
static int gpio_regulator_get_value(struct udevice *dev)
|
||||
|
@ -116,9 +118,23 @@ static int gpio_regulator_set_value(struct udevice *dev, int uV)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int gpio_regulator_get_enable(struct udevice *dev)
|
||||
{
|
||||
struct gpio_regulator_platdata *dev_pdata = dev_get_platdata(dev);
|
||||
return regulator_common_get_enable(dev, &dev_pdata->common);
|
||||
}
|
||||
|
||||
static int gpio_regulator_set_enable(struct udevice *dev, bool enable)
|
||||
{
|
||||
struct gpio_regulator_platdata *dev_pdata = dev_get_platdata(dev);
|
||||
return regulator_common_set_enable(dev, &dev_pdata->common, enable);
|
||||
}
|
||||
|
||||
static const struct dm_regulator_ops gpio_regulator_ops = {
|
||||
.get_value = gpio_regulator_get_value,
|
||||
.set_value = gpio_regulator_set_value,
|
||||
.get_enable = gpio_regulator_get_enable,
|
||||
.set_enable = gpio_regulator_set_enable,
|
||||
};
|
||||
|
||||
static const struct udevice_id gpio_regulator_ids[] = {
|
||||
|
|
Loading…
Add table
Reference in a new issue