1 /* Copyright (C) 2013-2015 Czech Technical University in Prague
3 * - Michal Horn <hornmich@fel.cvut.cz>
5 * This document contains proprietary information belonging to Czech
6 * Technical University in Prague. Passing on and copying of this
7 * document, and communication of its contents is not permitted
8 * without prior written authorization.
11 #ifndef HAL_GPIO_DEF_H_
12 #define HAL_GPIO_DEF_H_
21 #define PORT_PIN(p,n,conf) (((p)<<PORT_SHIFT) | (n) | (conf))
22 #define PORT_CONF_MASK 0xff000000
25 #define PORT_CONF_DIR_MASK 0x01000000
26 #define PORT_CONF_DIR_IN (0x00000000 | PORT_CONF_SET_DIR)
27 #define PORT_CONF_DIR_OUT (0x01000000 | PORT_CONF_SET_DIR)
29 #define PORT_CONF_INIT_MASK 0x02000000
30 #define PORT_CONF_INIT_LOW 0x00000000
31 #define PORT_CONF_INIT_HIGH 0x02000000
33 #define PORT_CONF_OD_MASK 0x04000000
34 #define PORT_CONF_OD_OFF 0x00000000
35 #define PORT_CONF_OD_ON 0x04000000
37 #define PORT_CONF_SET_DIR 0x08000000
39 #define PORT_CONF_MODE_MASK 0x30000000
40 #define PORT_CONF_MODE_PTYPE_MASK 0x10000000
41 #define PORT_CONF_MODE_PEN_MASK 0x20000000
42 #define PORT_CONF_MODE_PU 0x10000000 // Pull-up
43 #define PORT_CONF_MODE_PD 0x00000000 // Pull-down
44 #define PORT_CONF_MODE_PEN 0x00000000 // Pull resistor enable
45 #define PORT_CONF_MODE_PDIS 0x20000000 // Pull resistor disable
47 #define PORT_CONF_FNC_MASK 0xc0000000
48 #define PORT_CONF_FNC_GPIO 0x00000000
49 #define PORT_CONF_FNC_0 0x00000000
50 #define PORT_CONF_FNC_1 0x40000000
51 #define PORT_CONF_FNC_2 0x80000000
52 #define PORT_CONF_FNC_3 0xc0000000
54 #define PORT_CONF_GPIO_OUT_HI_PD_PEN_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_HIGH|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PD|PORT_CONF_MODE_PEN|PORT_CONF_OD_OFF
55 #define PORT_CONF_GPIO_OUT_LO_PD_PEN_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PD|PORT_CONF_MODE_PEN|PORT_CONF_OD_OFF
56 #define PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PU|PORT_CONF_MODE_PEN|PORT_CONF_OD_OFF
57 #define PORT_CONF_GPIO_OUT_LO_PD_PEN_ODON PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PD|PORT_CONF_MODE_PEN|PORT_CONF_OD_ON
58 #define PORT_CONF_GPIO_OUT_LO_PD_PDIS_ODON PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PD|PORT_CONF_MODE_PDIS|PORT_CONF_OD_ON
59 #define PORT_CONF_GPIO_OUT_LO_PD_PDIS_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PD|PORT_CONF_MODE_PDIS|PORT_CONF_OD_OFF
60 #define PORT_CONF_GPIO_OUT_LO_PU_PDIS_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_OUT|PORT_CONF_MODE_PU|PORT_CONF_MODE_PDIS|PORT_CONF_OD_OFF
61 #define PORT_CONF_GPIO_IN_HI_PU_PEN_ODON PORT_CONF_FNC_GPIO|PORT_CONF_INIT_HIGH|PORT_CONF_DIR_IN|PORT_CONF_MODE_PU|PORT_CONF_MODE_PEN|PORT_CONF_OD_ON
62 #define PORT_CONF_GPIO_IN_HI_PU_PDIS_ODON PORT_CONF_FNC_GPIO|PORT_CONF_INIT_HIGH|PORT_CONF_DIR_IN|PORT_CONF_MODE_PU|PORT_CONF_MODE_PDIS|PORT_CONF_OD_ON
63 #define PORT_CONF_GPIO_IN_LO_PD_PDIS_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_IN|PORT_CONF_MODE_PD|PORT_CONF_MODE_PDIS|PORT_CONF_OD_OFF
64 #define PORT_CONF_GPIO_IN_LO_PD_PEN_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_IN|PORT_CONF_MODE_PD|PORT_CONF_MODE_PEN|PORT_CONF_OD_OFF
65 #define PORT_CONF_GPIO_IN_LO_PU_PDIS_ODOFF PORT_CONF_FNC_GPIO|PORT_CONF_INIT_LOW|PORT_CONF_DIR_IN|PORT_CONF_MODE_PD|PORT_CONF_MODE_PDIS|PORT_CONF_OD_OFF
67 typedef struct pin_map_element {
68 const char *pin_name; // Pin name
69 uint32_t pin_desc; // Pin descriptor assigned to the pin name
72 #define MAX_PIN_CNT 46
73 #define MAX_PORT_CNT 5
74 /* Port indexes to portmap */
75 #define PORT_ID_GIOA 0x1
76 #define PORT_ID_GIOB 0x2
77 #define PORT_ID_HET1 0x3
78 #define PORT_ID_HET2 0x4
80 #define PIN_NAME_GIOA0 "GIOA0"
81 #define PIN_NAME_GIOA1 "GIOA1"
82 #define PIN_NAME_GIOA2 "GIOA2"
83 #define PIN_NAME_GIOA3 "GIOA3"
84 #define PIN_NAME_GIOA4 "GIOA4"
85 #define PIN_NAME_GIOA5 "GIOA5"
86 #define PIN_NAME_GIOA6 "GIOA6"
87 #define PIN_NAME_GIOA7 "GIOA7"
89 #define PIN_NAME_GIOB0 "GIOB0"
90 #define PIN_NAME_GIOB1 "GIOB1"
91 #define PIN_NAME_GIOB2 "GIOB2"
92 #define PIN_NAME_GIOB3 "GIOB3"
93 #define PIN_NAME_GIOB4 "GIOB4"
94 #define PIN_NAME_GIOB5 "GIOB5"
95 #define PIN_NAME_GIOB6 "GIOB6"
96 #define PIN_NAME_GIOB7 "GIOB7"
98 #define PIN_NAME_NHET1_0 "NHET10"
99 #define PIN_NAME_NHET1_1 "NHET11"
100 #define PIN_NAME_NHET1_2 "NHET12"
101 #define PIN_NAME_NHET1_3 "NHET13"
102 #define PIN_NAME_NHET1_4 "NHET14"
103 #define PIN_NAME_NHET1_5 "NHET15"
104 #define PIN_NAME_NHET1_6 "NHET16"
105 #define PIN_NAME_NHET1_7 "NHET17"
106 #define PIN_NAME_NHET1_8 "NHET18"
107 #define PIN_NAME_NHET1_9 "NHET19"
108 #define PIN_NAME_NHET1_10 "NHET110"
109 #define PIN_NAME_NHET1_11 "NHET111"
110 #define PIN_NAME_NHET1_12 "NHET112"
111 #define PIN_NAME_NHET1_13 "NHET113"
112 #define PIN_NAME_NHET1_14 "NHET114"
113 #define PIN_NAME_NHET1_15 "NHET115"
114 #define PIN_NAME_NHET1_16 "NHET116"
115 #define PIN_NAME_NHET1_17 "NHET117"
116 #define PIN_NAME_NHET1_18 "NHET118"
117 #define PIN_NAME_NHET1_19 "NHET119"
118 #define PIN_NAME_NHET1_20 "NHET120"
119 #define PIN_NAME_NHET1_21 "NHET121"
120 #define PIN_NAME_NHET1_22 "NHET122"
121 #define PIN_NAME_NHET1_23 "NHET123"
122 #define PIN_NAME_NHET1_24 "NHET124"
123 #define PIN_NAME_NHET1_25 "NHET125"
124 #define PIN_NAME_NHET1_26 "NHET126"
125 #define PIN_NAME_NHET1_27 "NHET127"
126 #define PIN_NAME_NHET1_28 "NHET128"
127 #define PIN_NAME_NHET1_29 "NHET129"
128 #define PIN_NAME_NHET1_30 "NHET130"
129 #define PIN_NAME_NHET1_31 "NHET131"
131 #define PIN_NAME_UNUSED "unused"
133 /* Pins descriptors */
134 #define PIN_DSC_GIOA0 PORT_PIN(PORT_ID_GIOA, 0, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
135 #define PIN_DSC_GIOA1 PORT_PIN(PORT_ID_GIOA, 1, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
136 #define PIN_DSC_GIOA2 PORT_PIN(PORT_ID_GIOA, 2, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
137 #define PIN_DSC_GIOA3 PORT_PIN(PORT_ID_GIOA, 3, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
138 #define PIN_DSC_GIOA4 PORT_PIN(PORT_ID_GIOA, 4, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
139 #define PIN_DSC_GIOA5 PORT_PIN(PORT_ID_GIOA, 5, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
140 #define PIN_DSC_GIOA6 PORT_PIN(PORT_ID_GIOA, 6, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
141 #define PIN_DSC_GIOA7 PORT_PIN(PORT_ID_GIOA, 7, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
143 #define PIN_DSC_GIOB0 PORT_PIN(PORT_ID_GIOB, 0, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
144 #define PIN_DSC_GIOB1 PORT_PIN(PORT_ID_GIOB, 1, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
145 #define PIN_DSC_GIOB2 PORT_PIN(PORT_ID_GIOB, 2, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
146 #define PIN_DSC_GIOB3 PORT_PIN(PORT_ID_GIOB, 3, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
147 #define PIN_DSC_GIOB4 PORT_PIN(PORT_ID_GIOB, 4, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
148 #define PIN_DSC_GIOB5 PORT_PIN(PORT_ID_GIOB, 5, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
149 #define PIN_DSC_GIOB6 PORT_PIN(PORT_ID_GIOB, 6, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
150 #define PIN_DSC_GIOB7 PORT_PIN(PORT_ID_GIOB, 7, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
152 #define PIN_DSC_NHET1_0 PORT_PIN(PORT_ID_HET1, 0, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
153 #define PIN_DSC_NHET1_1 PORT_PIN(PORT_ID_HET1, 1, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
154 #define PIN_DSC_NHET1_2 PORT_PIN(PORT_ID_HET1, 2, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
155 #define PIN_DSC_NHET1_3 PORT_PIN(PORT_ID_HET1, 3, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
156 #define PIN_DSC_NHET1_4 PORT_PIN(PORT_ID_HET1, 4, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
157 #define PIN_DSC_NHET1_5 PORT_PIN(PORT_ID_HET1, 5, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
158 #define PIN_DSC_NHET1_6 PORT_PIN(PORT_ID_HET1, 6, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
159 #define PIN_DSC_NHET1_7 PORT_PIN(PORT_ID_HET1, 7, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
160 #define PIN_DSC_NHET1_8 PORT_PIN(PORT_ID_HET1, 8, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
161 #define PIN_DSC_NHET1_9 PORT_PIN(PORT_ID_HET1, 9, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
162 #define PIN_DSC_NHET1_10 PORT_PIN(PORT_ID_HET1, 10, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
163 #define PIN_DSC_NHET1_11 PORT_PIN(PORT_ID_HET1, 11, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
164 #define PIN_DSC_NHET1_12 PORT_PIN(PORT_ID_HET1, 12, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
165 #define PIN_DSC_NHET1_13 PORT_PIN(PORT_ID_HET1, 13, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
166 #define PIN_DSC_NHET1_14 PORT_PIN(PORT_ID_HET1, 14, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
167 #define PIN_DSC_NHET1_15 PORT_PIN(PORT_ID_HET1, 15, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
168 #define PIN_DSC_NHET1_16 PORT_PIN(PORT_ID_HET1, 16, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
169 #define PIN_DSC_NHET1_17 PORT_PIN(PORT_ID_HET1, 17, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
170 #define PIN_DSC_NHET1_18 PORT_PIN(PORT_ID_HET1, 18, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
171 #define PIN_DSC_NHET1_19 PORT_PIN(PORT_ID_HET1, 19, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
172 #define PIN_DSC_NHET1_20 PORT_PIN(PORT_ID_HET1, 20, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
173 #define PIN_DSC_NHET1_21 PORT_PIN(PORT_ID_HET1, 21, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
174 #define PIN_DSC_NHET1_22 PORT_PIN(PORT_ID_HET1, 22, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
175 #define PIN_DSC_NHET1_23 PORT_PIN(PORT_ID_HET1, 23, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
176 #define PIN_DSC_NHET1_24 PORT_PIN(PORT_ID_HET1, 24, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
177 #define PIN_DSC_NHET1_25 PORT_PIN(PORT_ID_HET1, 25, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
178 #define PIN_DSC_NHET1_26 PORT_PIN(PORT_ID_HET1, 26, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
179 #define PIN_DSC_NHET1_27 PORT_PIN(PORT_ID_HET1, 27, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
180 #define PIN_DSC_NHET1_28 PORT_PIN(PORT_ID_HET1, 28, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
181 #define PIN_DSC_NHET1_29 PORT_PIN(PORT_ID_HET1, 29, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
182 #define PIN_DSC_NHET1_30 PORT_PIN(PORT_ID_HET1, 30, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
183 #define PIN_DSC_NHET1_31 PORT_PIN(PORT_ID_HET1, 31, PORT_CONF_GPIO_OUT_LO_PU_PEN_ODOFF)
185 #endif /* HAL_GPIO_DEF_H_ */