Lines Matching +full:device +full:- +full:id
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * devres.c -- Voltage/Current Regulator framework devres implementation.
17 static void devm_regulator_release(struct device *dev, void *res) in devm_regulator_release()
22 static struct regulator *_devm_regulator_get(struct device *dev, const char *id, in _devm_regulator_get() argument
29 return ERR_PTR(-ENOMEM); in _devm_regulator_get()
31 regulator = _regulator_get(dev, id, get_type); in _devm_regulator_get()
43 * devm_regulator_get - Resource managed regulator_get()
44 * @dev: device to supply
45 * @id: supply name or regulator ID.
51 struct regulator *devm_regulator_get(struct device *dev, const char *id) in devm_regulator_get() argument
53 return _devm_regulator_get(dev, id, NORMAL_GET); in devm_regulator_get()
58 * devm_regulator_get_exclusive - Resource managed regulator_get_exclusive()
59 * @dev: device to supply
60 * @id: supply name or regulator ID.
66 struct regulator *devm_regulator_get_exclusive(struct device *dev, in devm_regulator_get_exclusive()
67 const char *id) in devm_regulator_get_exclusive() argument
69 return _devm_regulator_get(dev, id, EXCLUSIVE_GET); in devm_regulator_get_exclusive()
80 static int _devm_regulator_get_enable(struct device *dev, const char *id, in _devm_regulator_get_enable() argument
86 r = _devm_regulator_get(dev, id, get_type); in _devm_regulator_get_enable()
101 * devm_regulator_get_enable_optional - Resource managed regulator get and enable
102 * @dev: device to supply
103 * @id: supply name or regulator ID.
105 * Get and enable regulator for duration of the device life-time.
110 int devm_regulator_get_enable_optional(struct device *dev, const char *id) in devm_regulator_get_enable_optional() argument
112 return _devm_regulator_get_enable(dev, id, OPTIONAL_GET); in devm_regulator_get_enable_optional()
117 * devm_regulator_get_enable - Resource managed regulator get and enable
118 * @dev: device to supply
119 * @id: supply name or regulator ID.
121 * Get and enable regulator for duration of the device life-time.
126 int devm_regulator_get_enable(struct device *dev, const char *id) in devm_regulator_get_enable() argument
128 return _devm_regulator_get_enable(dev, id, NORMAL_GET); in devm_regulator_get_enable()
133 * devm_regulator_get_optional - Resource managed regulator_get_optional()
134 * @dev: device to supply
135 * @id: supply name or regulator ID.
141 struct regulator *devm_regulator_get_optional(struct device *dev, in devm_regulator_get_optional()
142 const char *id) in devm_regulator_get_optional() argument
144 return _devm_regulator_get(dev, id, OPTIONAL_GET); in devm_regulator_get_optional()
148 static int devm_regulator_match(struct device *dev, void *res, void *data) in devm_regulator_match()
159 * devm_regulator_put - Resource managed regulator_put()
170 rc = devres_release(regulator->dev, devm_regulator_release, in devm_regulator_put()
182 static void devm_regulator_bulk_release(struct device *dev, void *res) in devm_regulator_bulk_release()
186 regulator_bulk_free(devres->num_consumers, devres->consumers); in devm_regulator_bulk_release()
190 * devm_regulator_bulk_get - managed get multiple regulator consumers
192 * @dev: device to supply
200 * automatically be freed when the device is unbound. If any of the
204 int devm_regulator_bulk_get(struct device *dev, int num_consumers, in devm_regulator_bulk_get()
213 return -ENOMEM; in devm_regulator_bulk_get()
217 devres->consumers = consumers; in devm_regulator_bulk_get()
218 devres->num_consumers = num_consumers; in devm_regulator_bulk_get()
229 * devm_regulator_bulk_get_const - devm_regulator_bulk_get() w/ const data
231 * @dev: device to supply
242 int devm_regulator_bulk_get_const(struct device *dev, int num_consumers, in devm_regulator_bulk_get_const()
250 return -ENOMEM; in devm_regulator_bulk_get_const()
256 static int devm_regulator_bulk_match(struct device *dev, void *res, in devm_regulator_bulk_match()
268 return match->consumers == target; in devm_regulator_bulk_match()
272 * devm_regulator_bulk_put - Resource managed regulator_bulk_put()
284 rc = devres_release(regulator->dev, devm_regulator_bulk_release, in devm_regulator_bulk_put()
296 for (i = 0; i < devres->num_consumers; i++) in devm_regulator_bulk_disable()
297 regulator_disable(devres->consumers[i].consumer); in devm_regulator_bulk_disable()
301 * devm_regulator_bulk_get_enable - managed get'n enable multiple regulators
303 * @dev: device to supply
305 * @id: list of supply names or regulator IDs
311 * automatically be freed when the device is unbound. If any of the
315 int devm_regulator_bulk_get_enable(struct device *dev, int num_consumers, in devm_regulator_bulk_get_enable()
316 const char * const *id) in devm_regulator_bulk_get_enable() argument
324 return -ENOMEM; in devm_regulator_bulk_get_enable()
326 devres->consumers = devm_kcalloc(dev, num_consumers, sizeof(*consumers), in devm_regulator_bulk_get_enable()
328 consumers = devres->consumers; in devm_regulator_bulk_get_enable()
330 return -ENOMEM; in devm_regulator_bulk_get_enable()
332 devres->num_consumers = num_consumers; in devm_regulator_bulk_get_enable()
335 consumers[i].supply = id[i]; in devm_regulator_bulk_get_enable()
352 while (--i >= 0) in devm_regulator_bulk_get_enable()
361 static void devm_rdev_release(struct device *dev, void *res) in devm_rdev_release()
367 * devm_regulator_register - Resource managed regulator_register()
368 * @dev: device to supply
374 * error. The regulator will automatically be released when the device
377 struct regulator_dev *devm_regulator_register(struct device *dev, in devm_regulator_register()
386 return ERR_PTR(-ENOMEM); in devm_regulator_register()
401 struct device *dev;
402 const char *id; member
405 static int devm_regulator_match_supply_alias(struct device *dev, void *res, in devm_regulator_match_supply_alias()
411 return match->dev == target->dev && strcmp(match->id, target->id) == 0; in devm_regulator_match_supply_alias()
414 static void devm_regulator_destroy_supply_alias(struct device *dev, void *res) in devm_regulator_destroy_supply_alias()
418 regulator_unregister_supply_alias(match->dev, match->id); in devm_regulator_destroy_supply_alias()
422 * devm_regulator_register_supply_alias - Resource managed
425 * @dev: device to supply
426 * @id: supply name or regulator ID
427 * @alias_dev: device that should be used to lookup the supply
428 * @alias_id: supply name or regulator ID that should be used to lookup the
432 * device is unbound.
434 int devm_regulator_register_supply_alias(struct device *dev, const char *id, in devm_regulator_register_supply_alias() argument
435 struct device *alias_dev, in devm_regulator_register_supply_alias()
445 return -ENOMEM; in devm_regulator_register_supply_alias()
447 match->dev = dev; in devm_regulator_register_supply_alias()
448 match->id = id; in devm_regulator_register_supply_alias()
450 ret = regulator_register_supply_alias(dev, id, alias_dev, alias_id); in devm_regulator_register_supply_alias()
462 static void devm_regulator_unregister_supply_alias(struct device *dev, in devm_regulator_unregister_supply_alias()
463 const char *id) in devm_regulator_unregister_supply_alias() argument
469 match.id = id; in devm_regulator_unregister_supply_alias()
478 * devm_regulator_bulk_register_supply_alias - Managed register
481 * @dev: device to supply
482 * @id: list of supply names or regulator IDs
483 * @alias_dev: device that should be used to lookup the supply
492 * unregisters when the source device is unbound. If any of the
496 int devm_regulator_bulk_register_supply_alias(struct device *dev, in devm_regulator_bulk_register_supply_alias()
497 const char *const *id, in devm_regulator_bulk_register_supply_alias() argument
498 struct device *alias_dev, in devm_regulator_bulk_register_supply_alias()
506 ret = devm_regulator_register_supply_alias(dev, id[i], in devm_regulator_bulk_register_supply_alias()
517 "Failed to create supply alias %s,%s -> %s,%s\n", in devm_regulator_bulk_register_supply_alias()
518 id[i], dev_name(dev), alias_id[i], dev_name(alias_dev)); in devm_regulator_bulk_register_supply_alias()
520 while (--i >= 0) in devm_regulator_bulk_register_supply_alias()
521 devm_regulator_unregister_supply_alias(dev, id[i]); in devm_regulator_bulk_register_supply_alias()
532 static int devm_regulator_match_notifier(struct device *dev, void *res, in devm_regulator_match_notifier()
538 return match->regulator == target->regulator && match->nb == target->nb; in devm_regulator_match_notifier()
541 static void devm_regulator_destroy_notifier(struct device *dev, void *res) in devm_regulator_destroy_notifier()
545 regulator_unregister_notifier(match->regulator, match->nb); in devm_regulator_destroy_notifier()
549 * devm_regulator_register_notifier - Resource managed
555 * The notifier will be registers under the consumer device and be
556 * automatically be unregistered when the source device is unbound.
568 return -ENOMEM; in devm_regulator_register_notifier()
570 match->regulator = regulator; in devm_regulator_register_notifier()
571 match->nb = nb; in devm_regulator_register_notifier()
579 devres_add(regulator->dev, match); in devm_regulator_register_notifier()
586 * devm_regulator_unregister_notifier - Resource managed
605 rc = devres_release(regulator->dev, devm_regulator_destroy_notifier, in devm_regulator_unregister_notifier()
618 * devm_regulator_irq_helper - resource managed registration of IRQ based
621 * @dev: device to which lifetime the helper's lifetime is
628 * When IRQ is re-enabled these errors will be cleared
642 void *devm_regulator_irq_helper(struct device *dev, in devm_regulator_irq_helper()