Message ID | 20250409-mdb-max7360-support-v6-8-7a2535876e39@bootlin.com |
---|---|
State | New |
Headers | show |
Series | Add support for MAX7360 | expand |
On Wed, Apr 09, 2025 at 04:55:55PM +0200, Mathieu Dubois-Briand wrote: > Allows to populate the gpio_regmap_config structure with > init_valid_mask() callback to set on the final gpio_chip structure. Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
On Wed Apr 9, 2025 at 7:02 PM CEST, Andy Shevchenko wrote: > On Wed, Apr 09, 2025 at 04:55:55PM +0200, Mathieu Dubois-Briand wrote: >> Allows to populate the gpio_regmap_config structure with >> init_valid_mask() callback to set on the final gpio_chip structure. > > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Thanks for the tag!
On Wed, Apr 9, 2025 at 4:56 PM Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> wrote: > Allows to populate the gpio_regmap_config structure with > init_valid_mask() callback to set on the final gpio_chip structure. > > Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> > Reviewed-by: Michael Walle <mwalle@kernel.org> Makes perfect sense! Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Yours, Linus Walleij
diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c index c27cc78f9025..e8987707feaf 100644 --- a/drivers/gpio/gpio-regmap.c +++ b/drivers/gpio/gpio-regmap.c @@ -256,6 +256,7 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config chip->names = config->names; chip->label = config->label ?: dev_name(config->parent); chip->can_sleep = regmap_might_sleep(config->regmap); + chip->init_valid_mask = config->init_valid_mask; chip->request = gpiochip_generic_request; chip->free = gpiochip_generic_free; diff --git a/include/linux/gpio/regmap.h b/include/linux/gpio/regmap.h index 7ed7927ae2e9..32ca4b4cccf1 100644 --- a/include/linux/gpio/regmap.h +++ b/include/linux/gpio/regmap.h @@ -6,6 +6,7 @@ struct device; struct fwnode_handle; struct gpio_regmap; +struct gpio_chip; struct irq_domain; struct regmap; @@ -40,6 +41,8 @@ struct regmap; * @drvdata: (Optional) Pointer to driver specific data which is * not used by gpio-remap but is provided "as is" to the * driver callback(s). + * @init_valid_mask: (Optional) Routine to initialize @valid_mask, to be used + * if not all GPIOs are valid. * @regmap_irq_chip: (Optional) Pointer on an regmap_irq_chip structure. If * set, a regmap-irq device will be created and the IRQ * domain will be set accordingly. @@ -96,6 +99,10 @@ struct gpio_regmap_config { unsigned int offset, unsigned int *reg, unsigned int *mask); + int (*init_valid_mask)(struct gpio_chip *gc, + unsigned long *valid_mask, + unsigned int ngpios); + void *drvdata; };