Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ff3f518 authored by Bjorn Andersson's avatar Bjorn Andersson Committed by Mark Brown
Browse files

regulator: Make bulk API support optional supplies



Make it possible to use the bulk API with optional supplies, by allowing
the consumer to marking supplies as optional in the regulator_bulk_data.

Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8005c49d
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -3451,8 +3451,10 @@ int regulator_bulk_get(struct device *dev, int num_consumers,
		consumers[i].consumer = NULL;
		consumers[i].consumer = NULL;


	for (i = 0; i < num_consumers; i++) {
	for (i = 0; i < num_consumers; i++) {
		consumers[i].consumer = regulator_get(dev,
		consumers[i].consumer = _regulator_get(dev,
						      consumers[i].supply);
						       consumers[i].supply,
						       false,
						       !consumers[i].optional);
		if (IS_ERR(consumers[i].consumer)) {
		if (IS_ERR(consumers[i].consumer)) {
			ret = PTR_ERR(consumers[i].consumer);
			ret = PTR_ERR(consumers[i].consumer);
			dev_err(dev, "Failed to get supply '%s': %d\n",
			dev_err(dev, "Failed to get supply '%s': %d\n",
+5 −2
Original line number Original line Diff line number Diff line
@@ -164,8 +164,11 @@ int devm_regulator_bulk_get(struct device *dev, int num_consumers,
		consumers[i].consumer = NULL;
		consumers[i].consumer = NULL;


	for (i = 0; i < num_consumers; i++) {
	for (i = 0; i < num_consumers; i++) {
		consumers[i].consumer = devm_regulator_get(dev,
		consumers[i].consumer = _devm_regulator_get(dev,
							   consumers[i].supply);
							    consumers[i].supply,
							    consumers[i].optional ?
								OPTIONAL_GET :
								NORMAL_GET);
		if (IS_ERR(consumers[i].consumer)) {
		if (IS_ERR(consumers[i].consumer)) {
			ret = PTR_ERR(consumers[i].consumer);
			ret = PTR_ERR(consumers[i].consumer);
			dev_err(dev, "Failed to get supply '%s': %d\n",
			dev_err(dev, "Failed to get supply '%s': %d\n",
+3 −0
Original line number Original line Diff line number Diff line
@@ -140,6 +140,8 @@ struct regulator;
 *
 *
 * @supply:   The name of the supply.  Initialised by the user before
 * @supply:   The name of the supply.  Initialised by the user before
 *            using the bulk regulator APIs.
 *            using the bulk regulator APIs.
 * @optional: The supply should be considered optional. Initialised by the user
 *            before using the bulk regulator APIs.
 * @consumer: The regulator consumer for the supply.  This will be managed
 * @consumer: The regulator consumer for the supply.  This will be managed
 *            by the bulk API.
 *            by the bulk API.
 *
 *
@@ -149,6 +151,7 @@ struct regulator;
 */
 */
struct regulator_bulk_data {
struct regulator_bulk_data {
	const char *supply;
	const char *supply;
	bool optional;
	struct regulator *consumer;
	struct regulator *consumer;


	/* private: Internal use */
	/* private: Internal use */