summaryrefslogtreecommitdiffstats
path: root/nuttx/arch/arm/src/kinetis/kinetis_port.h
blob: 2f72f4874361a2f630e562cc2024e3a5db026958 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
/************************************************************************************
 * arch/arm/src/kinetis/kinetis_port.h
 *
 *   Copyright (C) 2011 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 ************************************************************************************/

#ifndef __ARCH_ARM_SRC_KINETIS_KINETIS_PORT_H
#define __ARCH_ARM_SRC_KINETIS_KINETIS_PORT_H

/************************************************************************************
 * Included Files
 ************************************************************************************/

#include <nuttx/config.h>

#include "chip.h"

/************************************************************************************
 * Pre-processor Definitions
 ************************************************************************************/
/* General Definitions **************************************************************/

#define KINETIS_PORTA              (0)
#define KINETIS_PORTB              (1)
#define KINETIS_PORTC              (2)
#define KINETIS_PORTD              (3)
#define KINETIS_PORTE              (4)
#define KINETIS_NPORTS             (5)

/* Register Offsets *****************************************************************/

#define KINETIS_PORT_PCR_OFFSET(n) ((n) << 2) /* Pin Control Register n, n=0..31 */
#define KINETIS_PORT_PCR0_OFFSET   0x0000 /* Pin Control Register 0 */
#define KINETIS_PORT_PCR1_OFFSET   0x0004 /* Pin Control Register 1 */
#define KINETIS_PORT_PCR2_OFFSET   0x0008 /* Pin Control Register 2 */
#define KINETIS_PORT_PCR3_OFFSET   0x000C /* Pin Control Register 3 */
#define KINETIS_PORT_PCR4_OFFSET   0x0010 /* Pin Control Register 4 */
#define KINETIS_PORT_PCR5_OFFSET   0x0014 /* Pin Control Register 5 */
#define KINETIS_PORT_PCR6_OFFSET   0x0018 /* Pin Control Register 6 */
#define KINETIS_PORT_PCR7_OFFSET   0x001c /* Pin Control Register 7 */
#define KINETIS_PORT_PCR8_OFFSET   0x0020 /* Pin Control Register 8 */
#define KINETIS_PORT_PCR9_OFFSET   0x0024 /* Pin Control Register 9 */
#define KINETIS_PORT_PCR10_OFFSET  0x0028 /* Pin Control Register 10 */
#define KINETIS_PORT_PCR11_OFFSET  0x002c /* Pin Control Register 11 */
#define KINETIS_PORT_PCR12_OFFSET  0x0030 /* Pin Control Register 12 */
#define KINETIS_PORT_PCR13_OFFSET  0x0034 /* Pin Control Register 13 */
#define KINETIS_PORT_PCR14_OFFSET  0x0038 /* Pin Control Register 14 */
#define KINETIS_PORT_PCR15_OFFSET  0x003c /* Pin Control Register 15 */
#define KINETIS_PORT_PCR16_OFFSET  0x0040 /* Pin Control Register 16 */
#define KINETIS_PORT_PCR17_OFFSET  0x0044 /* Pin Control Register 17 */
#define KINETIS_PORT_PCR18_OFFSET  0x0048 /* Pin Control Register 18 */
#define KINETIS_PORT_PCR19_OFFSET  0x004c /* Pin Control Register 19 */
#define KINETIS_PORT_PCR20_OFFSET  0x0050 /* Pin Control Register 20 */
#define KINETIS_PORT_PCR21_OFFSET  0x0054 /* Pin Control Register 21 */
#define KINETIS_PORT_PCR22_OFFSET  0x0058 /* Pin Control Register 22 */
#define KINETIS_PORT_PCR23_OFFSET  0x005c /* Pin Control Register 23 */
#define KINETIS_PORT_PCR24_OFFSET  0x0060 /* Pin Control Register 24 */
#define KINETIS_PORT_PCR25_OFFSET  0x0064 /* Pin Control Register 25 */
#define KINETIS_PORT_PCR26_OFFSET  0x0068 /* Pin Control Register 26 */
#define KINETIS_PORT_PCR27_OFFSET  0x006c /* Pin Control Register 27 */
#define KINETIS_PORT_PCR28_OFFSET  0x0070 /* Pin Control Register 28 */
#define KINETIS_PORT_PCR29_OFFSET  0x0074 /* Pin Control Register 29 */
#define KINETIS_PORT_PCR30_OFFSET  0x0078 /* Pin Control Register 30 */
#define KINETIS_PORT_PCR31_OFFSET  0x007c /* Pin Control Register 31 */
#define KINETIS_PORT_GPCLR_OFFSET  0x0080 /* Global Pin Control Low Register */
#define KINETIS_PORT_GPCHR_OFFSET  0x0084 /* Global Pin Control High Register */
#define KINETIS_PORT_ISFR_OFFSET   0x00a0 /* Interrupt Status Flag Register */
#define KINETIS_PORT_DFER_OFFSET   0x00c0 /* Digital Filter Enable Register */
#define KINETIS_PORT_DFCR_OFFSET   0x00c4 /* Digital Filter Clock Register */
#define KINETIS_PORT_DFWR_OFFSET   0x00c8 /* Digital Filter Width Register */

/* Register Addresses ***************************************************************/

#define KINETIS_PORT_PCR(p,n)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORT_PCR0(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORT_PCR1(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORT_PCR2(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORT_PCR3(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORT_PCR4(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORT_PCR5(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORT_PCR6(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORT_PCR7(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORT_PCR8(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORT_PCR9(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORT_PCR10(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORT_PCR11(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORT_PCR12(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORT_PCR13(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORT_PCR14(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORT_PCR15(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORT_PCR16(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORT_PCR17(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORT_PCR18(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORT_PCR19(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORT_PCR20(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORT_PCR21(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORT_PCR22(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORT_PCR23(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORT_PCR24(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORT_PCR25(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORT_PCR26(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORT_PCR27(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORT_PCR28(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORT_PCR29(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORT_PCR30(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORT_PCR31(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORT_GPCLR(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORT_GPCHR(p)      (KINETIS_PORT_BASE(p)+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORT_ISFR(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORT_DFER(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORT_DFCR(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORT_DFWR(p)       (KINETIS_PORT_BASE(p)+KINETIS_PORT_DFWR_OFFSET)

#define KINETIS_PORTA_PCR(n)       (KINETIS_PORTA_BASE+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORTA_PCR0         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORTA_PCR1         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORTA_PCR2         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORTA_PCR3         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORTA_PCR4         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORTA_PCR5         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORTA_PCR6         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORTA_PCR7         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORTA_PCR8         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORTA_PCR9         (KINETIS_PORTA_BASE+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORTA_PCR10        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORTA_PCR11        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORTA_PCR12        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORTA_PCR13        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORTA_PCR14        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORTA_PCR15        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORTA_PCR16        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORTA_PCR17        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORTA_PCR18        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORTA_PCR19        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORTA_PCR20        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORTA_PCR21        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORTA_PCR22        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORTA_PCR23        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORTA_PCR24        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORTA_PCR25        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORTA_PCR26        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORTA_PCR27        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORTA_PCR28        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORTA_PCR29        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORTA_PCR30        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORTA_PCR31        (KINETIS_PORTA_BASE+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORTA_GPCLR        (KINETIS_PORTA_BASE+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORTA_GPCHR        (KINETIS_PORTA_BASE+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORTA_ISFR         (KINETIS_PORTA_BASE+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORTA_DFER         (KINETIS_PORTA_BASE+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORTA_DFCR         (KINETIS_PORTA_BASE+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORTA_DFWR         (KINETIS_PORTA_BASE+KINETIS_PORT_DFWR_OFFSET)

#define KINETIS_PORTB_PCR(n)       (KINETIS_PORTB_BASE+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORTB_PCR0         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORTB_PCR1         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORTB_PCR2         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORTB_PCR3         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORTB_PCR4         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORTB_PCR5         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORTB_PCR6         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORTB_PCR7         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORTB_PCR8         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORTB_PCR9         (KINETIS_PORTB_BASE+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORTB_PCR10        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORTB_PCR11        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORTB_PCR12        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORTB_PCR13        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORTB_PCR14        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORTB_PCR15        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORTB_PCR16        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORTB_PCR17        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORTB_PCR18        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORTB_PCR19        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORTB_PCR20        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORTB_PCR21        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORTB_PCR22        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORTB_PCR23        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORTB_PCR24        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORTB_PCR25        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORTB_PCR26        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORTB_PCR27        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORTB_PCR28        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORTB_PCR29        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORTB_PCR30        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORTB_PCR31        (KINETIS_PORTB_BASE+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORTB_GPCLR        (KINETIS_PORTB_BASE+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORTB_GPCHR        (KINETIS_PORTB_BASE+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORTB_ISFR         (KINETIS_PORTB_BASE+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORTB_DFER         (KINETIS_PORTB_BASE+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORTB_DFCR         (KINETIS_PORTB_BASE+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORTB_DFWR         (KINETIS_PORTB_BASE+KINETIS_PORT_DFWR_OFFSET)

#define KINETIS_PORTC_PCR(n)       (KINETIS_PORTC_BASE+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORTC_PCR0         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORTC_PCR1         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORTC_PCR2         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORTC_PCR3         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORTC_PCR4         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORTC_PCR5         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORTC_PCR6         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORTC_PCR7         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORTC_PCR8         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORTC_PCR9         (KINETIS_PORTC_BASE+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORTC_PCR10        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORTC_PCR11        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORTC_PCR12        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORTC_PCR13        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORTC_PCR14        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORTC_PCR15        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORTC_PCR16        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORTC_PCR17        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORTC_PCR18        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORTC_PCR19        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORTC_PCR20        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORTC_PCR21        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORTC_PCR22        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORTC_PCR23        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORTC_PCR24        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORTC_PCR25        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORTC_PCR26        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORTC_PCR27        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORTC_PCR28        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORTC_PCR29        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORTC_PCR30        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORTC_PCR31        (KINETIS_PORTC_BASE+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORTC_GPCLR        (KINETIS_PORTC_BASE+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORTC_GPCHR        (KINETIS_PORTC_BASE+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORTC_ISFR         (KINETIS_PORTC_BASE+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORTC_DFER         (KINETIS_PORTC_BASE+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORTC_DFCR         (KINETIS_PORTC_BASE+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORTC_DFWR         (KINETIS_PORTC_BASE+KINETIS_PORT_DFWR_OFFSET)

#define KINETIS_PORTD_PCR(n)       (KINETIS_PORTD_BASE+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORTD_PCR0         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORTD_PCR1         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORTD_PCR2         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORTD_PCR3         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORTD_PCR4         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORTD_PCR5         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORTD_PCR6         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORTD_PCR7         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORTD_PCR8         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORTD_PCR9         (KINETIS_PORTD_BASE+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORTD_PCR10        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORTD_PCR11        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORTD_PCR12        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORTD_PCR13        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORTD_PCR14        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORTD_PCR15        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORTD_PCR16        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORTD_PCR17        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORTD_PCR18        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORTD_PCR19        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORTD_PCR20        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORTD_PCR21        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORTD_PCR22        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORTD_PCR23        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORTD_PCR24        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORTD_PCR25        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORTD_PCR26        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORTD_PCR27        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORTD_PCR28        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORTD_PCR29        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORTD_PCR30        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORTD_PCR31        (KINETIS_PORTD_BASE+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORTD_GPCLR        (KINETIS_PORTD_BASE+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORTD_GPCHR        (KINETIS_PORTD_BASE+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORTD_ISFR         (KINETIS_PORTD_BASE+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORTD_DFER         (KINETIS_PORTD_BASE+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORTD_DFCR         (KINETIS_PORTD_BASE+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORTD_DFWR         (KINETIS_PORTD_BASE+KINETIS_PORT_DFWR_OFFSET)

#define KINETIS_PORTE_PCR(n)       (KINETIS_PORTE_BASE+KINETIS_PORT_PCR_OFFSET(n)
#define KINETIS_PORTE_PCR0         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR0_OFFSET)
#define KINETIS_PORTE_PCR1         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR1_OFFSET)
#define KINETIS_PORTE_PCR2         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR2_OFFSET)
#define KINETIS_PORTE_PCR3         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR3_OFFSET)
#define KINETIS_PORTE_PCR4         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR4_OFFSET)
#define KINETIS_PORTE_PCR5         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR5_OFFSET)
#define KINETIS_PORTE_PCR6         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR6_OFFSET)
#define KINETIS_PORTE_PCR7         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR7_OFFSET)
#define KINETIS_PORTE_PCR8         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR8_OFFSET)
#define KINETIS_PORTE_PCR9         (KINETIS_PORTE_BASE+KINETIS_PORT_PCR9_OFFSET)
#define KINETIS_PORTE_PCR10        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR10_OFFSET)
#define KINETIS_PORTE_PCR11        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR11_OFFSET)
#define KINETIS_PORTE_PCR12        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR12_OFFSET)
#define KINETIS_PORTE_PCR13        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR13_OFFSET)
#define KINETIS_PORTE_PCR14        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR14_OFFSET)
#define KINETIS_PORTE_PCR15        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR15_OFFSET)
#define KINETIS_PORTE_PCR16        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR16_OFFSET)
#define KINETIS_PORTE_PCR17        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR17_OFFSET)
#define KINETIS_PORTE_PCR18        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR18_OFFSET)
#define KINETIS_PORTE_PCR19        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR19_OFFSET)
#define KINETIS_PORTE_PCR20        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR20_OFFSET)
#define KINETIS_PORTE_PCR21        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR21_OFFSET)
#define KINETIS_PORTE_PCR22        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR22_OFFSET)
#define KINETIS_PORTE_PCR23        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR23_OFFSET)
#define KINETIS_PORTE_PCR24        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR24_OFFSET)
#define KINETIS_PORTE_PCR25        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR25_OFFSET)
#define KINETIS_PORTE_PCR26        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR26_OFFSET)
#define KINETIS_PORTE_PCR27        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR27_OFFSET)
#define KINETIS_PORTE_PCR28        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR28_OFFSET)
#define KINETIS_PORTE_PCR29        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR29_OFFSET)
#define KINETIS_PORTE_PCR30        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR30_OFFSET)
#define KINETIS_PORTE_PCR31        (KINETIS_PORTE_BASE+KINETIS_PORT_PCR31_OFFSET)
#define KINETIS_PORTE_GPCLR        (KINETIS_PORTE_BASE+KINETIS_PORT_GPCLR_OFFSET)
#define KINETIS_PORTE_GPCHR        (KINETIS_PORTE_BASE+KINETIS_PORT_GPCHR_OFFSET)
#define KINETIS_PORTE_ISFR         (KINETIS_PORTE_BASE+KINETIS_PORT_ISFR_OFFSET)
#define KINETIS_PORTE_DFER         (KINETIS_PORTE_BASE+KINETIS_PORT_DFER_OFFSET)
#define KINETIS_PORTE_DFCR         (KINETIS_PORTE_BASE+KINETIS_PORT_DFCR_OFFSET)
#define KINETIS_PORTE_DFWR         (KINETIS_PORTE_BASE+KINETIS_PORT_DFWR_OFFSET)

/* Register Bit Definitions *********************************************************/
/* Pin Control Register n, n=0..31 */

#define PORT_PCR_PS                 (1 << 0)  /* Bit 0: Pull Select */
#define PORT_PCR_PE                 (1 << 1)  /* Bit 1: Pull Enable */
#define PORT_PCR_SRE                (1 << 2)  /* Bit 2: Slew Rate Enable */
                                              /* Bit 3: Reserved */
#define PORT_PCR_PFE                (1 << 4)  /* Bit 4: Passive Filter Enable */
#define PORT_PCR_ODE                (1 << 5)  /* Bit 5: Open Drain Enable */
#define PORT_PCR_DSE                (1 << 6)  /* Bit 6: Drive Strength Enable */
                                              /* Bit 7: Reserved */
#define PORT_PCR_MUX_SHIFT          (8)       /* Bits 8-10: Pin Mux Control */
#define PORT_PCR_MUX_MASK           (7 << PORT_PCR_MUX_SHIFT)
#  define PORT_PCR_MUX_ANALOG       (0 << PORT_PCR_MUX_SHIFT)  /* Pin Disabled (Analog) */
#  define PORT_PCR_MUX_GPIO         (1 << PORT_PCR_MUX_SHIFT)  /* Alternative 1 (GPIO) */
#  define PORT_PCR_MUX_ALT1         (1 << PORT_PCR_MUX_SHIFT)  /* Alternative 1 (GPIO) */
#  define PORT_PCR_MUX_ALT2         (2 << PORT_PCR_MUX_SHIFT)  /* Alternative 2 (chip specific) */
#  define PORT_PCR_MUX_ALT3         (3 << PORT_PCR_MUX_SHIFT)  /* Alternative 3 (chip specific) */
#  define PORT_PCR_MUX_ALT4         (4 << PORT_PCR_MUX_SHIFT)  /* Alternative 4 (chip specific) */
#  define PORT_PCR_MUX_ALT5         (5 << PORT_PCR_MUX_SHIFT)  /* Alternative 5 (chip specific) */
#  define PORT_PCR_MUX_ALT6         (6 << PORT_PCR_MUX_SHIFT)  /* Alternative 6 (chip specific) */
#  define PORT_PCR_MUX_ALT7         (7 << PORT_PCR_MUX_SHIFT)  /* Alternative 7 (chip specific / JTAG / NMI) */
                                              /* Bits 11-14: Reserved */
#define PORT_PCR_LK                 (1 << 15) /* Bit 15: Lock Register */
#define PORT_PCR_IRQC_SHIFT         (16)      /* Bits 16-19: Interrupt Configuration */
#define PORT_PCR_IRQC_MASK          (15 << PORT_PCR_IRQC_SHIFT)
#  define PORT_PCR_IRQC_DISABLED    (0 << PORT_PCR_IRQC_SHIFT)  /* Interrupt/DMA Request disabled */
#  define PORT_PCR_IRQC_DMARISING   (1 << PORT_PCR_IRQC_SHIFT)  /* DMA Request on rising edge */
#  define PORT_PCR_IRQC_DMAFALLING  (2 << PORT_PCR_IRQC_SHIFT)  /* DMA Request on falling edge */
#  define PORT_PCR_IRQC_DMABOTH     (3 << PORT_PCR_IRQC_SHIFT)  /* DMA Request on either edge */
#  define PORT_PCR_IRQC_ZERO        (8 << PORT_PCR_IRQC_SHIFT)  /* Interrupt when logic zero */
#  define PORT_PCR_IRQC_RISING      (9 << PORT_PCR_IRQC_SHIFT)  /* Interrupt on rising edge */
#  define PORT_PCR_IRQC_FALLING     (10 << PORT_PCR_IRQC_SHIFT) /* Interrupt on falling edge */
#  define PORT_PCR_IRQC_BOTH        (11 << PORT_PCR_IRQC_SHIFT) /* Interrupt on either edge */
#  define PORT_PCR_IRQC_ONE         (12 << PORT_PCR_IRQC_SHIFT) /* Interrupt when logic one */
                                              /* Bits 20-23: Reserved */
#define PORT_PCR_ISF                (1 << 24) /* Bit 24: Interrupt Status Flag */
                                              /* Bits 25-31: Reserved */

/* Global Pin Control Low Register */

#define PORT_GPCLR_GPWD_SHIFT       (0)       /* Bits 0-15: Global Pin Write Data */
#define PORT_GPCLR_GPWD_MASK        (0xffff << PORT_GPCLR_GPWD_SHIFT)
#  define PORT_GPCLR_GPWD(n)        ((1 << (n)) << PORT_GPCLR_GPWD_SHIFT)
#define PORT_GPCLR_GPWE_SHIFT       (16)      /* Bits 16-31: Global Pin Write Enable */
#define PORT_GPCLR_GPWE_MASK        (0xffff << PORT_GPCLR_GPWE_SHIFT)
#  define PORT_GPCLR_GPWE(n)        ((1 << (n)) << PORT_GPCLR_GPWE_SHIFT)

/* Global Pin Control High Register */

#define PORT_GPCHR_

#define PORT_GPCHR_GPWD_SHIFT       (0)       /* Bits 0-15: Global Pin Write Data */
#define PORT_GPCHR_GPWD_MASK        (0xffff << PORT_GPCHR_GPWD_SHIFT)
#  define PORT_GPCHR_GPWD(n)        ((1 << (n)) << PORT_GPCHR_GPWD_SHIFT)
#define PORT_GPCHR_GPWE_SHIFT       (16)      /* Bits 16-31: Global Pin Write Enable */
#define PORT_GPCHR_GPWE_MASK        (0xffff << PORT_GPCHR_GPWE_SHIFT)
#  define PORT_GPCHR_GPWE(n)        ((1 << (n)) << PORT_GPCHR_GPWE_SHIFT)

/* Interrupt Status Flag Register */

#define PORT_ISFR(n)                (1 << (n))

/* Digital Filter Enable Register */

#define PORT_DFER(n)                (1 << (n))

/* Digital Filter Clock Register */

#define PORT_DFCR_CS                (1 << 0)  /* Bit 0: Clock Source */

/* Digital Filter Width Register */

#define PORT_DFWR_FILT_SHIFT        (0)       /* Bits 0-4: Filter Length */
#define PORT_DFWR_FILT_MASK         (31 << PORT_DFWR_FILT_SHIFT)

/************************************************************************************
 * Public Types
 ************************************************************************************/

/************************************************************************************
 * Public Data
 ************************************************************************************/

/************************************************************************************
 * Public Functions
 ************************************************************************************/

#endif /* __ARCH_ARM_SRC_KINETIS_KINETIS_PORT_H */