Lines Matching +full:static +full:- +full:enable
1 // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
3 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
23 u32 enable; member
32 static int stm32mp_pwr_write(struct udevice *dev, uint reg, in stm32mp_pwr_write()
39 return -EINVAL; in stm32mp_pwr_write()
41 return regmap_write(priv->regmap, STM32MP_PWR_CR3, val); in stm32mp_pwr_write()
44 static int stm32mp_pwr_read(struct udevice *dev, uint reg, uint8_t *buff, in stm32mp_pwr_read()
50 return -EINVAL; in stm32mp_pwr_read()
52 return regmap_read(priv->regmap, STM32MP_PWR_CR3, (u32 *)buff); in stm32mp_pwr_read()
55 static int stm32mp_pwr_ofdata_to_platdata(struct udevice *dev) in stm32mp_pwr_ofdata_to_platdata()
66 priv->regmap = regmap; in stm32mp_pwr_ofdata_to_platdata()
71 static const struct pmic_child_info pwr_children_info[] = {
77 static int stm32mp_pwr_bind(struct udevice *dev) in stm32mp_pwr_bind()
81 children = pmic_bind_children(dev, dev->node, pwr_children_info); in stm32mp_pwr_bind()
88 static struct dm_pmic_ops stm32mp_pwr_ops = {
93 static const struct udevice_id stm32mp_pwr_ids[] = {
94 { .compatible = "st,stm32mp1,pwr-reg" },
108 static const struct stm32mp_pwr_reg_info stm32mp_pwr_reg11 = {
109 .enable = STM32MP_PWR_CR3_REG11DEN,
114 static const struct stm32mp_pwr_reg_info stm32mp_pwr_reg18 = {
115 .enable = STM32MP_PWR_CR3_REG18DEN,
120 static const struct stm32mp_pwr_reg_info stm32mp_pwr_usb33 = {
121 .enable = STM32MP_PWR_CR3_USB33DEN,
126 static const struct stm32mp_pwr_reg_info *stm32mp_pwr_reg_infos[] = {
133 static int stm32mp_pwr_regulator_probe(struct udevice *dev) in stm32mp_pwr_regulator_probe()
143 rc = dev_read_stringlist_search(dev, "regulator-name", in stm32mp_pwr_regulator_probe()
144 (*p)->name); in stm32mp_pwr_regulator_probe()
146 dev_dbg(dev, "found regulator %s\n", (*p)->name); in stm32mp_pwr_regulator_probe()
148 } else if (rc != -ENODATA) { in stm32mp_pwr_regulator_probe()
158 while (dev_read_string_index(dev, "regulator-name", in stm32mp_pwr_regulator_probe()
162 return -EINVAL; in stm32mp_pwr_regulator_probe()
165 uc_pdata->type = REGULATOR_TYPE_FIXED; in stm32mp_pwr_regulator_probe()
166 dev->priv = (void *)*p; in stm32mp_pwr_regulator_probe()
171 static int stm32mp_pwr_regulator_set_value(struct udevice *dev, int uV) in stm32mp_pwr_regulator_set_value()
177 return -ENXIO; in stm32mp_pwr_regulator_set_value()
179 if (uc_pdata->min_uV != uV) { in stm32mp_pwr_regulator_set_value()
180 dev_dbg(dev, "Invalid uV=%d for: %s\n", uV, uc_pdata->name); in stm32mp_pwr_regulator_set_value()
181 return -EINVAL; in stm32mp_pwr_regulator_set_value()
187 static int stm32mp_pwr_regulator_get_value(struct udevice *dev) in stm32mp_pwr_regulator_get_value()
193 return -ENXIO; in stm32mp_pwr_regulator_get_value()
195 if (uc_pdata->min_uV != uc_pdata->max_uV) { in stm32mp_pwr_regulator_get_value()
196 dev_dbg(dev, "Invalid constraints for: %s\n", uc_pdata->name); in stm32mp_pwr_regulator_get_value()
197 return -EINVAL; in stm32mp_pwr_regulator_get_value()
200 return uc_pdata->min_uV; in stm32mp_pwr_regulator_get_value()
203 static int stm32mp_pwr_regulator_get_enable(struct udevice *dev) in stm32mp_pwr_regulator_get_enable()
209 rc = pmic_read(dev->parent, 0, (uint8_t *)®, sizeof(reg)); in stm32mp_pwr_regulator_get_enable()
213 dev_dbg(dev, "%s id %s\n", p->name, (reg & p->enable) ? "on" : "off"); in stm32mp_pwr_regulator_get_enable()
215 return (reg & p->enable) != 0; in stm32mp_pwr_regulator_get_enable()
218 static int stm32mp_pwr_regulator_set_enable(struct udevice *dev, bool enable) in stm32mp_pwr_regulator_set_enable() argument
225 dev_dbg(dev, "Turning %s %s\n", enable ? "on" : "off", p->name); in stm32mp_pwr_regulator_set_enable()
227 rc = pmic_read(dev->parent, 0, (uint8_t *)®, sizeof(reg)); in stm32mp_pwr_regulator_set_enable()
232 if (!!(reg & p->enable) == enable) in stm32mp_pwr_regulator_set_enable()
235 reg &= ~p->enable; in stm32mp_pwr_regulator_set_enable()
236 if (enable) in stm32mp_pwr_regulator_set_enable()
237 reg |= p->enable; in stm32mp_pwr_regulator_set_enable()
239 rc = pmic_write(dev->parent, 0, (uint8_t *)®, sizeof(reg)); in stm32mp_pwr_regulator_set_enable()
243 if (!enable) in stm32mp_pwr_regulator_set_enable()
246 /* waiting ready for enable */ in stm32mp_pwr_regulator_set_enable()
249 rc = pmic_read(dev->parent, 0, (uint8_t *)®, sizeof(reg)); in stm32mp_pwr_regulator_set_enable()
252 if (reg & p->ready) in stm32mp_pwr_regulator_set_enable()
255 dev_dbg(dev, "%s: timeout\n", p->name); in stm32mp_pwr_regulator_set_enable()
256 return -ETIMEDOUT; in stm32mp_pwr_regulator_set_enable()
262 static const struct dm_regulator_ops stm32mp_pwr_regulator_ops = {