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
@ -120,6 +120,7 @@ config SPL_DM_REGULATOR_FIXED
|
|||||||
config DM_REGULATOR_GPIO
|
config DM_REGULATOR_GPIO
|
||||||
bool "Enable Driver Model for GPIO REGULATOR"
|
bool "Enable Driver Model for GPIO REGULATOR"
|
||||||
depends on DM_REGULATOR && DM_GPIO
|
depends on DM_REGULATOR && DM_GPIO
|
||||||
|
select DM_REGULATOR_COMMON
|
||||||
---help---
|
---help---
|
||||||
This config enables implementation of driver-model regulator uclass
|
This config enables implementation of driver-model regulator uclass
|
||||||
features for gpio regulators. The driver implements get/set for
|
features for gpio regulators. The driver implements get/set for
|
||||||
@ -128,6 +129,7 @@ config DM_REGULATOR_GPIO
|
|||||||
config SPL_DM_REGULATOR_GPIO
|
config SPL_DM_REGULATOR_GPIO
|
||||||
bool "Enable Driver Model for GPIO REGULATOR in SPL"
|
bool "Enable Driver Model for GPIO REGULATOR in SPL"
|
||||||
depends on DM_REGULATOR_GPIO && SPL_GPIO_SUPPORT
|
depends on DM_REGULATOR_GPIO && SPL_GPIO_SUPPORT
|
||||||
|
select SPL_DM_REGULATOR_COMMON
|
||||||
---help---
|
---help---
|
||||||
This config enables implementation of driver-model regulator uclass
|
This config enables implementation of driver-model regulator uclass
|
||||||
features for gpio regulators in SPL.
|
features for gpio regulators in SPL.
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
* Keerthy <j-keerthy@ti.com>
|
* Keerthy <j-keerthy@ti.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "regulator_common.h"
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <fdtdec.h>
|
#include <fdtdec.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@ -18,6 +19,7 @@
|
|||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
struct gpio_regulator_platdata {
|
struct gpio_regulator_platdata {
|
||||||
|
struct regulator_common_platdata common;
|
||||||
struct gpio_desc gpio; /* GPIO for regulator voltage control */
|
struct gpio_desc gpio; /* GPIO for regulator voltage control */
|
||||||
int states[GPIO_REGULATOR_MAX_STATES];
|
int states[GPIO_REGULATOR_MAX_STATES];
|
||||||
int voltages[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++;
|
j++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return regulator_common_ofdata_to_platdata(dev, &dev_pdata->common, "enable-gpios");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gpio_regulator_get_value(struct udevice *dev)
|
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;
|
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 = {
|
static const struct dm_regulator_ops gpio_regulator_ops = {
|
||||||
.get_value = gpio_regulator_get_value,
|
.get_value = gpio_regulator_get_value,
|
||||||
.set_value = gpio_regulator_set_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[] = {
|
static const struct udevice_id gpio_regulator_ids[] = {
|
||||||
|
Loading…
Reference in New Issue
Block a user