Commit 43b665c9 authored by Matti Vaittinen's avatar Matti Vaittinen Committed by Bartosz Golaszewski
Browse files

gpio: gpio-rcar: Drop direct use of valid_mask



The valid_mask member of the struct gpio_chip is unconditionally written
by the GPIO core at driver registration. It should not be directly
populated by the drivers. Hiding the valid_mask in struct gpio_device
makes it clear it is not meant to be directly populated by drivers. This
means drivers should not access it directly from the struct gpio_chip.

The gpio-rcar checks the valid mask in set/get_multiple() operations.
This is no longer needed [1]. Drop these checks.

Additionally, the valid_mask is needed for enabling the GPIO inputs at
probe time. Use the new valid_mask -getter function instead of accessing
it directly from the struct gpio_chip.

Signed-off-by: default avatarMatti Vaittinen <mazziesaccount@gmail.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/e46441ba8a2840e6b48ec8d2ecd5919995a5675f.1741180097.git.mazziesaccount@gmail.com


Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent f636d4f6
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -336,9 +336,6 @@ static int gpio_rcar_get_multiple(struct gpio_chip *chip, unsigned long *mask,
	unsigned long flags;

	bankmask = mask[0] & GENMASK(chip->ngpio - 1, 0);
	if (chip->valid_mask)
		bankmask &= chip->valid_mask[0];

	if (!bankmask)
		return 0;

@@ -380,9 +377,6 @@ static void gpio_rcar_set_multiple(struct gpio_chip *chip, unsigned long *mask,
	u32 val, bankmask;

	bankmask = mask[0] & GENMASK(chip->ngpio - 1, 0);
	if (chip->valid_mask)
		bankmask &= chip->valid_mask[0];

	if (!bankmask)
		return;

@@ -482,10 +476,13 @@ static int gpio_rcar_parse_dt(struct gpio_rcar_priv *p, unsigned int *npins)
static void gpio_rcar_enable_inputs(struct gpio_rcar_priv *p)
{
	u32 mask = GENMASK(p->gpio_chip.ngpio - 1, 0);
	const unsigned long *valid_mask;

	valid_mask = gpiochip_query_valid_mask(&p->gpio_chip);

	/* Select "Input Enable" in INEN */
	if (p->gpio_chip.valid_mask)
		mask &= p->gpio_chip.valid_mask[0];
	if (valid_mask)
		mask &= valid_mask[0];
	if (mask)
		gpio_rcar_write(p, INEN, gpio_rcar_read(p, INEN) | mask);
}