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

Commit dc49f3d5 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'regulator/topic/constraints' into regulator-next

parents 277b1be9 064d5cd1
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
@@ -844,15 +844,24 @@ static int machine_constraints_voltage(struct regulator_dev *rdev,
	/* do we need to apply the constraint voltage */
	if (rdev->constraints->apply_uV &&
	    rdev->constraints->min_uV == rdev->constraints->max_uV) {
		ret = _regulator_do_set_voltage(rdev,
						rdev->constraints->min_uV,
		int current_uV = _regulator_get_voltage(rdev);
		if (current_uV < 0) {
			rdev_err(rdev, "failed to get the current voltage\n");
			return current_uV;
		}
		if (current_uV < rdev->constraints->min_uV ||
		    current_uV > rdev->constraints->max_uV) {
			ret = _regulator_do_set_voltage(
				rdev, rdev->constraints->min_uV,
				rdev->constraints->max_uV);
			if (ret < 0) {
			rdev_err(rdev, "failed to apply %duV constraint\n",
				rdev_err(rdev,
					"failed to apply %duV constraint\n",
					rdev->constraints->min_uV);
				return ret;
			}
		}
	}

	/* constrain machine-level voltage specs to fit
	 * the actual range supported by this regulator.
@@ -3819,8 +3828,9 @@ static int __init regulator_init_complete(void)
	mutex_lock(&regulator_list_mutex);

	/* If we have a full configuration then disable any regulators
	 * which are not in use or always_on.  This will become the
	 * default behaviour in the future.
	 * we have permission to change the status for and which are
	 * not in use or always_on.  This is effectively the default
	 * for DT and ACPI as they have full constraints.
	 */
	list_for_each_entry(rdev, &regulator_list, list) {
		ops = rdev->desc->ops;
@@ -3829,6 +3839,9 @@ static int __init regulator_init_complete(void)
		if (c && c->always_on)
			continue;

		if (c && !(c->valid_ops_mask & REGULATOR_CHANGE_STATUS))
			continue;

		mutex_lock(&rdev->mutex);

		if (rdev->use_count)
@@ -3867,4 +3880,4 @@ static int __init regulator_init_complete(void)

	return 0;
}
late_initcall(regulator_init_complete);
late_initcall_sync(regulator_init_complete);