diff --git a/drivers/gpio/gpio_pca95xx.c b/drivers/gpio/gpio_pca95xx.c index e8ae5ca26a2d6f..3d7d12e4f25c65 100644 --- a/drivers/gpio/gpio_pca95xx.c +++ b/drivers/gpio/gpio_pca95xx.c @@ -843,6 +843,28 @@ static int gpio_pca95xx_init(const struct device *dev) return 0; } +/* allow redefinition of init priority, per instance, + * at least for the 4 first instances + */ +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_0 +#define CONFIG_PCA95XX_INIT_PRIO_INST_0 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_1 +#define CONFIG_PCA95XX_INIT_PRIO_INST_1 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_2 +#define CONFIG_PCA95XX_INIT_PRIO_INST_2 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_3 +#define CONFIG_PCA95XX_INIT_PRIO_INST_3 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_4 +#define CONFIG_PCA95XX_INIT_PRIO_INST_4 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif +#ifndef CONFIG_PCA95XX_INIT_PRIO_INST_5 +#define CONFIG_PCA95XX_INIT_PRIO_INST_5 CONFIG_GPIO_PCA95XX_INIT_PRIORITY +#endif + #define GPIO_PCA95XX_DEVICE_INSTANCE(inst) \ static const struct gpio_pca95xx_config gpio_pca95xx_##inst##_cfg = { \ .common = { \ @@ -880,7 +902,8 @@ DEVICE_DT_INST_DEFINE(inst, \ NULL, \ &gpio_pca95xx_##inst##_drvdata, \ &gpio_pca95xx_##inst##_cfg, \ - POST_KERNEL, CONFIG_GPIO_PCA95XX_INIT_PRIORITY, \ + POST_KERNEL, \ + _CONCAT(CONFIG_PCA95XX_INIT_PRIO_INST_, inst), \ &gpio_pca95xx_drv_api_funcs); DT_INST_FOREACH_STATUS_OKAY(GPIO_PCA95XX_DEVICE_INSTANCE)