Unverified Commit b871d9ad authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Mark Brown
Browse files

regulator: make the subsystem aware of shared GPIOs



GPIOLIB is now aware of shared GPIOs and - for platforms where access to
such pins is managed internally - we don't need to keep track of the
enable count.

Once all users in the kernel switch to using the new mechanism, we'll be
able to drop the internal counting of users from the regulator code.

Acked-by: default avatarMark Brown <broonie@kernel.org>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://patch.msgid.link/20251112-gpio-shared-v4-10-b51f97b1abd8@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent eb374f76
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2616,6 +2616,13 @@ static int regulator_ena_gpio_request(struct regulator_dev *rdev,

	mutex_lock(&regulator_list_mutex);

	if (gpiod_is_shared(gpiod))
		/*
		 * The sharing of this GPIO pin is managed internally by
		 * GPIOLIB. We don't need to keep track of its enable count.
		 */
		goto skip_compare;

	list_for_each_entry(pin, &regulator_ena_gpio_list, list) {
		if (gpiod_is_equal(pin->gpiod, gpiod)) {
			rdev_dbg(rdev, "GPIO is already used\n");
@@ -2628,6 +2635,7 @@ static int regulator_ena_gpio_request(struct regulator_dev *rdev,
		return -ENOMEM;
	}

skip_compare:
	pin = new_pin;
	new_pin = NULL;