3 * Yuri Tikhonov, Emcraft Systems, yur@emcraft.com
6 * Kamil Lulko, <kamil.lulko@gmail.com>
8 * Copyright 2015 ATS Advanced Telematics Systems GmbH
9 * Copyright 2015 Konsulko Group, Matt Porter <mporter@konsulko.com>
11 * SPDX-License-Identifier: GPL-2.0+
14 #ifndef _STM32_GPIO_H_
15 #define _STM32_GPIO_H_
17 enum stm32_gpio_port {
18 STM32_GPIO_PORT_A = 0,
46 enum stm32_gpio_icnf {
47 STM32_GPIO_ICNF_AN = 0,
48 STM32_GPIO_ICNF_IN_FLT,
49 STM32_GPIO_ICNF_IN_PUD,
53 enum stm32_gpio_ocnf {
54 STM32_GPIO_OCNF_GP_PP = 0,
55 STM32_GPIO_OCNF_GP_OD,
56 STM32_GPIO_OCNF_AF_PP,
60 enum stm32_gpio_pupd {
61 STM32_GPIO_PUPD_DOWN = 0,
65 enum stm32_gpio_mode {
66 STM32_GPIO_MODE_IN = 0,
67 STM32_GPIO_MODE_OUT_10M,
68 STM32_GPIO_MODE_OUT_2M,
69 STM32_GPIO_MODE_OUT_50M
91 struct stm32_gpio_dsc {
92 enum stm32_gpio_port port;
93 enum stm32_gpio_pin pin;
96 struct stm32_gpio_ctl {
97 enum stm32_gpio_icnf icnf;
98 enum stm32_gpio_ocnf ocnf;
99 enum stm32_gpio_mode mode;
100 enum stm32_gpio_pupd pupd;
101 enum stm32_gpio_af af;
104 static inline unsigned stm32_gpio_to_port(unsigned gpio)
109 static inline unsigned stm32_gpio_to_pin(unsigned gpio)
114 int stm32_gpio_config(const struct stm32_gpio_dsc *gpio_dsc,
115 const struct stm32_gpio_ctl *gpio_ctl);
116 int stm32_gpout_set(const struct stm32_gpio_dsc *gpio_dsc, int state);
118 #endif /* _STM32_GPIO_H_ */