Commit d46bf9ec authored by Álvaro Fernández Rojas's avatar Álvaro Fernández Rojas Committed by Linus Walleij

gpio: regmap: set gpio_chip of_node

This is needed for properly registering GPIO regmap as a child of a regmap
pin controller.
Signed-off-by: default avatarÁlvaro Fernández Rojas <noltari@gmail.com>
Reviewed-by: default avatarMichael Walle <michael@walle.cc>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: default avatarBartosz Golaszewski <bgolaszewski@baylibre.com>
Link: https://lore.kernel.org/r/20210324081923.20379-3-noltari@gmail.comSigned-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 9c7d2469
...@@ -254,6 +254,11 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config ...@@ -254,6 +254,11 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
chip->names = config->names; chip->names = config->names;
chip->label = config->label ?: dev_name(config->parent); chip->label = config->label ?: dev_name(config->parent);
#if defined(CONFIG_OF_GPIO)
/* gpiolib will use of_node of the parent if chip->of_node is NULL */
chip->of_node = to_of_node(config->fwnode);
#endif /* CONFIG_OF_GPIO */
/* /*
* If our regmap is fast_io we should probably set can_sleep to false. * If our regmap is fast_io we should probably set can_sleep to false.
* Right now, the regmap doesn't save this property, nor is there any * Right now, the regmap doesn't save this property, nor is there any
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#define _LINUX_GPIO_REGMAP_H #define _LINUX_GPIO_REGMAP_H
struct device; struct device;
struct fwnode_handle;
struct gpio_regmap; struct gpio_regmap;
struct irq_domain; struct irq_domain;
struct regmap; struct regmap;
...@@ -16,6 +17,8 @@ struct regmap; ...@@ -16,6 +17,8 @@ struct regmap;
* @parent: The parent device * @parent: The parent device
* @regmap: The regmap used to access the registers * @regmap: The regmap used to access the registers
* given, the name of the device is used * given, the name of the device is used
* @fwnode: (Optional) The firmware node.
* If not given, the fwnode of the parent is used.
* @label: (Optional) Descriptive name for GPIO controller. * @label: (Optional) Descriptive name for GPIO controller.
* If not given, the name of the device is used. * If not given, the name of the device is used.
* @ngpio: Number of GPIOs * @ngpio: Number of GPIOs
...@@ -57,6 +60,7 @@ struct regmap; ...@@ -57,6 +60,7 @@ struct regmap;
struct gpio_regmap_config { struct gpio_regmap_config {
struct device *parent; struct device *parent;
struct regmap *regmap; struct regmap *regmap;
struct fwnode_handle *fwnode;
const char *label; const char *label;
int ngpio; int ngpio;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment