From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- roms/u-boot/drivers/power/regulator/fixed.c | 93 +++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 roms/u-boot/drivers/power/regulator/fixed.c (limited to 'roms/u-boot/drivers/power/regulator/fixed.c') diff --git a/roms/u-boot/drivers/power/regulator/fixed.c b/roms/u-boot/drivers/power/regulator/fixed.c new file mode 100644 index 000000000..d3e0fb672 --- /dev/null +++ b/roms/u-boot/drivers/power/regulator/fixed.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2015 Samsung Electronics + * + * Przemyslaw Marczak + */ + +#include +#include +#include +#include +#include +#include + +#include "regulator_common.h" + +static int fixed_regulator_of_to_plat(struct udevice *dev) +{ + struct dm_regulator_uclass_plat *uc_pdata; + struct regulator_common_plat *dev_pdata; + + dev_pdata = dev_get_plat(dev); + uc_pdata = dev_get_uclass_plat(dev); + if (!uc_pdata) + return -ENXIO; + + uc_pdata->type = REGULATOR_TYPE_FIXED; + + return regulator_common_of_to_plat(dev, dev_pdata, "gpio"); +} + +static int fixed_regulator_get_value(struct udevice *dev) +{ + struct dm_regulator_uclass_plat *uc_pdata; + + uc_pdata = dev_get_uclass_plat(dev); + if (!uc_pdata) + return -ENXIO; + + if (uc_pdata->min_uV != uc_pdata->max_uV) { + debug("Invalid constraints for: %s\n", uc_pdata->name); + return -EINVAL; + } + + return uc_pdata->min_uV; +} + +static int fixed_regulator_get_current(struct udevice *dev) +{ + struct dm_regulator_uclass_plat *uc_pdata; + + uc_pdata = dev_get_uclass_plat(dev); + if (!uc_pdata) + return -ENXIO; + + if (uc_pdata->min_uA != uc_pdata->max_uA) { + debug("Invalid constraints for: %s\n", uc_pdata->name); + return -EINVAL; + } + + return uc_pdata->min_uA; +} + +static int fixed_regulator_get_enable(struct udevice *dev) +{ + return regulator_common_get_enable(dev, dev_get_plat(dev)); +} + +static int fixed_regulator_set_enable(struct udevice *dev, bool enable) +{ + return regulator_common_set_enable(dev, dev_get_plat(dev), enable); +} + +static const struct dm_regulator_ops fixed_regulator_ops = { + .get_value = fixed_regulator_get_value, + .get_current = fixed_regulator_get_current, + .get_enable = fixed_regulator_get_enable, + .set_enable = fixed_regulator_set_enable, +}; + +static const struct udevice_id fixed_regulator_ids[] = { + { .compatible = "regulator-fixed" }, + { }, +}; + +U_BOOT_DRIVER(regulator_fixed) = { + .name = "regulator_fixed", + .id = UCLASS_REGULATOR, + .ops = &fixed_regulator_ops, + .of_match = fixed_regulator_ids, + .of_to_plat = fixed_regulator_of_to_plat, + .plat_auto = sizeof(struct regulator_common_plat), +}; -- cgit 1.2.3-korg