Commit d1bfd022 authored by Andy Shevchenko's avatar Andy Shevchenko
Browse files

pinctrl: intel: Make use of for_each_requested_gpio_in_range()



Make use of for_each_requested_gpio_in_range() instead of home grown analogue.

Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent e64fbfa5
Loading
Loading
Loading
Loading
+6 −15
Original line number Diff line number Diff line
@@ -1628,19 +1628,6 @@ static void intel_gpio_irq_init(struct intel_pinctrl *pctrl)
	}
}

static u32
intel_gpio_is_requested(struct gpio_chip *chip, int base, unsigned int size)
{
	u32 requested = 0;
	unsigned int i;

	for (i = 0; i < size; i++)
		if (gpiochip_is_requested(chip, base + i))
			requested |= BIT(i);

	return requested;
}

static bool intel_gpio_update_reg(void __iomem *reg, u32 mask, u32 value)
{
	u32 curr, updated;
@@ -1661,12 +1648,16 @@ static void intel_restore_hostown(struct intel_pinctrl *pctrl, unsigned int c,
	const struct intel_community *community = &pctrl->communities[c];
	const struct intel_padgroup *padgrp = &community->gpps[gpp];
	struct device *dev = pctrl->dev;
	u32 requested;
	const char *dummy;
	u32 requested = 0;
	unsigned int i;

	if (padgrp->gpio_base == INTEL_GPIO_BASE_NOMAP)
		return;

	requested = intel_gpio_is_requested(&pctrl->chip, padgrp->gpio_base, padgrp->size);
	for_each_requested_gpio_in_range(&pctrl->chip, i, padgrp->gpio_base, padgrp->size, dummy)
		requested |= BIT(i);

	if (!intel_gpio_update_reg(base + gpp * 4, requested, saved))
		return;