1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3 * Copyright (c) 2017-2023, STMicroelectronics
4 */
5
6 #ifndef __DRIVERS_STM32_GPIO_H
7 #define __DRIVERS_STM32_GPIO_H
8
9 #include <assert.h>
10 #include <drivers/gpio.h>
11 #include <drivers/pinctrl.h>
12 #include <stdbool.h>
13 #include <stdint.h>
14 #include <stddef.h>
15
16 struct pinctrl_state;
17 struct stm32_pinctrl;
18
19 #ifdef CFG_STM32_GPIO
20 /*
21 * Get the bank and pin indices related to a pin control state
22 * @pinctrl: Pinctrl state
23 * @bank: Output bank indices array or NULL
24 * @pin: Output pin indices array or NULL
25 * @count: [in] Number of cells of @bank and @pin, [out] pin count in @pinctrl
26 */
27 void stm32_gpio_pinctrl_bank_pin(struct pinctrl_state *pinctrl,
28 unsigned int *bank, unsigned int *pin,
29 unsigned int *count);
30
31 /*
32 * stm32_gpio_chip_bank_id() - Get the GPIO bank ID associated to a chip
33 * @chip: GPIO chip associated to the bank
34 */
35 unsigned int stm32_gpio_chip_bank_id(struct gpio_chip *chip);
36 #else
stm32_gpio_pinctrl_bank_pin(struct pinctrl_state * p __unused,unsigned int * bank __unused,unsigned int * pin __unused,unsigned int * count __unused)37 static inline void stm32_gpio_pinctrl_bank_pin(struct pinctrl_state *p __unused,
38 unsigned int *bank __unused,
39 unsigned int *pin __unused,
40 unsigned int *count __unused)
41 {
42 }
43
44 static inline unsigned int __noreturn
stm32_gpio_chip_bank_id(struct gpio_chip * chip __unused)45 stm32_gpio_chip_bank_id(struct gpio_chip *chip __unused)
46 {
47 panic();
48 }
49 #endif /*CFG_STM32_GPIO*/
50 #endif /*__DRIVERS_STM32_GPIO_H*/
51