Commit 0627b71f authored by Mathieu Dubois-Briand's avatar Mathieu Dubois-Briand Committed by Lee Jones
Browse files

gpio: regmap: Allow to provide init_valid_mask callback



Allows to populate the gpio_regmap_config structure with
init_valid_mask() callback to set on the final gpio_chip structure.

Reviewed-by: default avatarMichael Walle <mwalle@kernel.org>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Reviewed-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: default avatarMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Link: https://lore.kernel.org/r/20250824-mdb-max7360-support-v14-6-435cfda2b1ea@bootlin.com


Signed-off-by: default avatarLee Jones <lee@kernel.org>
parent 553b75d4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -261,6 +261,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;
+7 −0
Original line number Diff line number Diff line
@@ -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.
@@ -93,6 +96,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;
};