blob: 7cd866ea2a1f91929f1a7ee894fe122895b11412 [file] [log] [blame]
rev13@wp.plfec465a2015-03-01 12:44:40 +01001/*
2 * (C) Copyright 2011
3 * Yuri Tikhonov, Emcraft Systems, yur@emcraft.com
4 *
5 * (C) Copyright 2015
6 * Kamil Lulko, <rev13@wp.pl>
7 *
8 * SPDX-License-Identifier: GPL-2.0+
9 */
10
11#ifndef _STM32_GPIO_H_
12#define _STM32_GPIO_H_
13
14enum stm32_gpio_port {
15 STM32_GPIO_PORT_A = 0,
16 STM32_GPIO_PORT_B,
17 STM32_GPIO_PORT_C,
18 STM32_GPIO_PORT_D,
19 STM32_GPIO_PORT_E,
20 STM32_GPIO_PORT_F,
21 STM32_GPIO_PORT_G,
22 STM32_GPIO_PORT_H,
23 STM32_GPIO_PORT_I
24};
25
26enum stm32_gpio_pin {
27 STM32_GPIO_PIN_0 = 0,
28 STM32_GPIO_PIN_1,
29 STM32_GPIO_PIN_2,
30 STM32_GPIO_PIN_3,
31 STM32_GPIO_PIN_4,
32 STM32_GPIO_PIN_5,
33 STM32_GPIO_PIN_6,
34 STM32_GPIO_PIN_7,
35 STM32_GPIO_PIN_8,
36 STM32_GPIO_PIN_9,
37 STM32_GPIO_PIN_10,
38 STM32_GPIO_PIN_11,
39 STM32_GPIO_PIN_12,
40 STM32_GPIO_PIN_13,
41 STM32_GPIO_PIN_14,
42 STM32_GPIO_PIN_15
43};
44
45enum stm32_gpio_mode {
46 STM32_GPIO_MODE_IN = 0,
47 STM32_GPIO_MODE_OUT,
48 STM32_GPIO_MODE_AF,
49 STM32_GPIO_MODE_AN
50};
51
52enum stm32_gpio_otype {
53 STM32_GPIO_OTYPE_PP = 0,
54 STM32_GPIO_OTYPE_OD
55};
56
57enum stm32_gpio_speed {
58 STM32_GPIO_SPEED_2M = 0,
59 STM32_GPIO_SPEED_25M,
60 STM32_GPIO_SPEED_50M,
61 STM32_GPIO_SPEED_100M
62};
63
64enum stm32_gpio_pupd {
65 STM32_GPIO_PUPD_NO = 0,
66 STM32_GPIO_PUPD_UP,
67 STM32_GPIO_PUPD_DOWN
68};
69
70enum stm32_gpio_af {
71 STM32_GPIO_AF0 = 0,
72 STM32_GPIO_AF1,
73 STM32_GPIO_AF2,
74 STM32_GPIO_AF3,
75 STM32_GPIO_AF4,
76 STM32_GPIO_AF5,
77 STM32_GPIO_AF6,
78 STM32_GPIO_AF7,
79 STM32_GPIO_AF8,
80 STM32_GPIO_AF9,
81 STM32_GPIO_AF10,
82 STM32_GPIO_AF11,
83 STM32_GPIO_AF12,
84 STM32_GPIO_AF13,
85 STM32_GPIO_AF14,
86 STM32_GPIO_AF15
87};
88
89struct stm32_gpio_dsc {
90 enum stm32_gpio_port port;
91 enum stm32_gpio_pin pin;
92};
93
94struct stm32_gpio_ctl {
95 enum stm32_gpio_mode mode;
96 enum stm32_gpio_otype otype;
97 enum stm32_gpio_speed speed;
98 enum stm32_gpio_pupd pupd;
99 enum stm32_gpio_af af;
100};
101
102static inline unsigned stm32_gpio_to_port(unsigned gpio)
103{
104 return gpio / 16;
105}
106
107static inline unsigned stm32_gpio_to_pin(unsigned gpio)
108{
109 return gpio % 16;
110}
111
112int stm32_gpio_config(const struct stm32_gpio_dsc *gpio_dsc,
113 const struct stm32_gpio_ctl *gpio_ctl);
114int stm32_gpout_set(const struct stm32_gpio_dsc *gpio_dsc, int state);
115
116#endif /* _STM32_GPIO_H_ */