gpio: Initialize the irqchip valid_mask with a callback

After changing the valid_mask for the struct gpio_chip
to detect the need and presence of a valid mask with the
presence of a .init_valid_mask() callback to fill it in,
we augment the gpio_irq_chip to use the same logic.

Switch all driver using the gpio_irq_chio valid_mask
over to this new method.

This makes sure the valid_mask for the gpio_irq_chip gets
filled in when we add the gpio_chip, which makes it a
little easier to switch over drivers using the old
way of setting up gpio_irq_chip over to the new method
of passing the gpio_irq_chip along with the gpio_chip.
(See drivers/gpio/TODO for details.)

Cc: Patrice Chotard <>
Cc: Andrew Lunn <>
Cc: Andrew Jeffery <>
Cc: Joel Stanley <>
Cc: Thierry Reding <>
Cc: Hans de Goede <>
Cc: Andy Shevchenko <>
Cc: Mika Westerberg <>
Signed-off-by: Linus Walleij <>
All is compile tested on top of the gpio "devel" branch.

Andy: I guess this would collide with my attempted
rewrites of some Intel-related drivers, we can either
merge this first and I will rebase and resend the
other changes, or you can send me a pull request
if you think some of my changes are working and I
will instead rebase this on top of that, thanks.

Hans de Goede: I actually think that patch
"gpio: Fix irqchip initialization order" fixes the
issues you saw with the rewrite of int0002 earlier,
and we suggested setting up the mask as part of the
chip addition then, but this change is nice to have
8 files changed