aboutsummaryrefslogtreecommitdiff
path: root/include/libopencm3/lpc43xx/sgpio.h
blob: e6816ad376ef9247014b8075da27c517a8933c4e (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
/*
 * This file is part of the libopencm3 project.
 *
 * Copyright (C) 2012 Michael Ossmann <mike@ossmann.com>
 *
 * This library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef LPC43XX_SGPIO_H
#define LPC43XX_SGPIO_H

#include <libopencm3/cm3/common.h>
#include <libopencm3/lpc43xx/memorymap.h>

/* --- SGPIO registers ----------------------------------------------------- */

/* Pin multiplexer configuration registers (OUT_MUX_CFG0 to 15) */
#define SGPIO_OUT_MUX_CFG0              (SGPIO_PORT_BASE + 0x00)
#define SGPIO_OUT_MUX_CFG1              (SGPIO_PORT_BASE + 0x04)
#define SGPIO_OUT_MUX_CFG2              (SGPIO_PORT_BASE + 0x08)
#define SGPIO_OUT_MUX_CFG3              (SGPIO_PORT_BASE + 0x0C)
#define SGPIO_OUT_MUX_CFG4              (SGPIO_PORT_BASE + 0x10)
#define SGPIO_OUT_MUX_CFG5              (SGPIO_PORT_BASE + 0x14)
#define SGPIO_OUT_MUX_CFG6              (SGPIO_PORT_BASE + 0x18)
#define SGPIO_OUT_MUX_CFG7              (SGPIO_PORT_BASE + 0x1C)
#define SGPIO_OUT_MUX_CFG8              (SGPIO_PORT_BASE + 0x20)
#define SGPIO_OUT_MUX_CFG9              (SGPIO_PORT_BASE + 0x24)
#define SGPIO_OUT_MUX_CFG10             (SGPIO_PORT_BASE + 0x28)
#define SGPIO_OUT_MUX_CFG11             (SGPIO_PORT_BASE + 0x2C)
#define SGPIO_OUT_MUX_CFG12             (SGPIO_PORT_BASE + 0x30)
#define SGPIO_OUT_MUX_CFG13             (SGPIO_PORT_BASE + 0x34)
#define SGPIO_OUT_MUX_CFG14             (SGPIO_PORT_BASE + 0x38)
#define SGPIO_OUT_MUX_CFG15             (SGPIO_PORT_BASE + 0x3C)

/* SGPIO multiplexer configuration registers (SGPIO_MUX_CFG0 to 15) */
#define SGPIO_MUX_CFG0                  (SGPIO_PORT_BASE + 0x40)
#define SGPIO_MUX_CFG1                  (SGPIO_PORT_BASE + 0x44)
#define SGPIO_MUX_CFG2                  (SGPIO_PORT_BASE + 0x48)
#define SGPIO_MUX_CFG3                  (SGPIO_PORT_BASE + 0x4C)
#define SGPIO_MUX_CFG4                  (SGPIO_PORT_BASE + 0x50)
#define SGPIO_MUX_CFG5                  (SGPIO_PORT_BASE + 0x54)
#define SGPIO_MUX_CFG6                  (SGPIO_PORT_BASE + 0x58)
#define SGPIO_MUX_CFG7                  (SGPIO_PORT_BASE + 0x5C)
#define SGPIO_MUX_CFG8                  (SGPIO_PORT_BASE + 0x60)
#define SGPIO_MUX_CFG9                  (SGPIO_PORT_BASE + 0x64)
#define SGPIO_MUX_CFG10                 (SGPIO_PORT_BASE + 0x68)
#define SGPIO_MUX_CFG11                 (SGPIO_PORT_BASE + 0x6C)
#define SGPIO_MUX_CFG12                 (SGPIO_PORT_BASE + 0x70)
#define SGPIO_MUX_CFG13                 (SGPIO_PORT_BASE + 0x74)
#define SGPIO_MUX_CFG14                 (SGPIO_PORT_BASE + 0x78)
#define SGPIO_MUX_CFG15                 (SGPIO_PORT_BASE + 0x7C)

/* Slice multiplexer configuration registers (SLICE_MUX_CFG0 to 15) */
#define SGPIO_SLICE_MUX_CFG0            (SGPIO_PORT_BASE + 0x80)
#define SGPIO_SLICE_MUX_CFG1            (SGPIO_PORT_BASE + 0x84)
#define SGPIO_SLICE_MUX_CFG2            (SGPIO_PORT_BASE + 0x88)
#define SGPIO_SLICE_MUX_CFG3            (SGPIO_PORT_BASE + 0x8C)
#define SGPIO_SLICE_MUX_CFG4            (SGPIO_PORT_BASE + 0x90)
#define SGPIO_SLICE_MUX_CFG5            (SGPIO_PORT_BASE + 0x94)
#define SGPIO_SLICE_MUX_CFG6            (SGPIO_PORT_BASE + 0x98)
#define SGPIO_SLICE_MUX_CFG7            (SGPIO_PORT_BASE + 0x9C)
#define SGPIO_SLICE_MUX_CFG8            (SGPIO_PORT_BASE + 0xA0)
#define SGPIO_SLICE_MUX_CFG9            (SGPIO_PORT_BASE + 0xA4)
#define SGPIO_SLICE_MUX_CFG10           (SGPIO_PORT_BASE + 0xA8)
#define SGPIO_SLICE_MUX_CFG11           (SGPIO_PORT_BASE + 0xAC)
#define SGPIO_SLICE_MUX_CFG12           (SGPIO_PORT_BASE + 0xB0)
#define SGPIO_SLICE_MUX_CFG13           (SGPIO_PORT_BASE + 0xB4)
#define SGPIO_SLICE_MUX_CFG14           (SGPIO_PORT_BASE + 0xB8)
#define SGPIO_SLICE_MUX_CFG15           (SGPIO_PORT_BASE + 0xBC)

/* Slice data registers (REG0 to 15) */
#define SGPIO_REG0                      (SGPIO_PORT_BASE + 0xC0)
#define SGPIO_REG1                      (SGPIO_PORT_BASE + 0xC4)
#define SGPIO_REG2                      (SGPIO_PORT_BASE + 0xC8)
#define SGPIO_REG3                      (SGPIO_PORT_BASE + 0xCC)
#define SGPIO_REG4                      (SGPIO_PORT_BASE + 0xD0)
#define SGPIO_REG5                      (SGPIO_PORT_BASE + 0xD4)
#define SGPIO_REG6                      (SGPIO_PORT_BASE + 0xD8)
#define SGPIO_REG7                      (SGPIO_PORT_BASE + 0xDC)
#define SGPIO_REG8                      (SGPIO_PORT_BASE + 0xE0)
#define SGPIO_REG9                      (SGPIO_PORT_BASE + 0xE4)
#define SGPIO_REG10                     (SGPIO_PORT_BASE + 0xE8)
#define SGPIO_REG11                     (SGPIO_PORT_BASE + 0xEC)
#define SGPIO_REG12                     (SGPIO_PORT_BASE + 0xF0)
#define SGPIO_REG13                     (SGPIO_PORT_BASE + 0xF4)
#define SGPIO_REG14                     (SGPIO_PORT_BASE + 0xF8)
#define SGPIO_REG15                     (SGPIO_PORT_BASE + 0xFC)

/* Slice data shadow registers (REG_SS0 to 15) */
#define SGPIO_REG_SS0                   (SGPIO_PORT_BASE + 0x100)
#define SGPIO_REG_SS1                   (SGPIO_PORT_BASE + 0x104)
#define SGPIO_REG_SS2                   (SGPIO_PORT_BASE + 0x108)
#define SGPIO_REG_SS3                   (SGPIO_PORT_BASE + 0x10C)
#define SGPIO_REG_SS4                   (SGPIO_PORT_BASE + 0x110)
#define SGPIO_REG_SS5                   (SGPIO_PORT_BASE + 0x114)
#define SGPIO_REG_SS6                   (SGPIO_PORT_BASE + 0x118)
#define SGPIO_REG_SS7                   (SGPIO_PORT_BASE + 0x11C)
#define SGPIO_REG_SS8                   (SGPIO_PORT_BASE + 0x120)
#define SGPIO_REG_SS9                   (SGPIO_PORT_BASE + 0x124)
#define SGPIO_REG_SS10                  (SGPIO_PORT_BASE + 0x128)
#define SGPIO_REG_SS11                  (SGPIO_PORT_BASE + 0x12C)
#define SGPIO_REG_SS12                  (SGPIO_PORT_BASE + 0x130)
#define SGPIO_REG_SS13                  (SGPIO_PORT_BASE + 0x134)
#define SGPIO_REG_SS14                  (SGPIO_PORT_BASE + 0x138)
#define SGPIO_REG_SS15                  (SGPIO_PORT_BASE + 0x13C)

/* Reload registers (PRESET0 to 15) */
#define SGPIO_PRESET0                   (SGPIO_PORT_BASE + 0x140)
#define SGPIO_PRESET1                   (SGPIO_PORT_BASE + 0x144)
#define SGPIO_PRESET2                   (SGPIO_PORT_BASE + 0x148)
#define SGPIO_PRESET3                   (SGPIO_PORT_BASE + 0x14C)
#define SGPIO_PRESET4                   (SGPIO_PORT_BASE + 0x150)
#define SGPIO_PRESET5                   (SGPIO_PORT_BASE + 0x154)
#define SGPIO_PRESET6                   (SGPIO_PORT_BASE + 0x158)
#define SGPIO_PRESET7                   (SGPIO_PORT_BASE + 0x15C)
#define SGPIO_PRESET8                   (SGPIO_PORT_BASE + 0x160)
#define SGPIO_PRESET9                   (SGPIO_PORT_BASE + 0x164)
#define SGPIO_PRESET10                  (SGPIO_PORT_BASE + 0x168)
#define SGPIO_PRESET11                  (SGPIO_PORT_BASE + 0x16C)
#define SGPIO_PRESET12                  (SGPIO_PORT_BASE + 0x170)
#define SGPIO_PRESET13                  (SGPIO_PORT_BASE + 0x174)
#define SGPIO_PRESET14                  (SGPIO_PORT_BASE + 0x178)
#define SGPIO_PRESET15                  (SGPIO_PORT_BASE + 0x17C)

/* Down counter registers (COUNT0 to 15) */
#define SGPIO_COUNT0                    (SGPIO_PORT_BASE + 0x180)
#define SGPIO_COUNT1                    (SGPIO_PORT_BASE + 0x184)
#define SGPIO_COUNT2                    (SGPIO_PORT_BASE + 0x188)
#define SGPIO_COUNT3                    (SGPIO_PORT_BASE + 0x18C)
#define SGPIO_COUNT4                    (SGPIO_PORT_BASE + 0x190)
#define SGPIO_COUNT5                    (SGPIO_PORT_BASE + 0x194)
#define SGPIO_COUNT6                    (SGPIO_PORT_BASE + 0x198)
#define SGPIO_COUNT7                    (SGPIO_PORT_BASE + 0x19C)
#define SGPIO_COUNT8                    (SGPIO_PORT_BASE + 0x1A0)
#define SGPIO_COUNT9                    (SGPIO_PORT_BASE + 0x1A4)
#define SGPIO_COUNT10                   (SGPIO_PORT_BASE + 0x1A8)
#define SGPIO_COUNT11                   (SGPIO_PORT_BASE + 0x1AC)
#define SGPIO_COUNT12                   (SGPIO_PORT_BASE + 0x1B0)
#define SGPIO_COUNT13                   (SGPIO_PORT_BASE + 0x1B4)
#define SGPIO_COUNT14                   (SGPIO_PORT_BASE + 0x1B8)
#define SGPIO_COUNT15                   (SGPIO_PORT_BASE + 0x1BC)

/* Position registers (POS0 to 15) */
#define SGPIO_POS0                      (SGPIO_PORT_BASE + 0x1C0)
#define SGPIO_POS1                      (SGPIO_PORT_BASE + 0x1C4)
#define SGPIO_POS2                      (SGPIO_PORT_BASE + 0x1C8)
#define SGPIO_POS3                      (SGPIO_PORT_BASE + 0x1CC)
#define SGPIO_POS4                      (SGPIO_PORT_BASE + 0x1D0)
#define SGPIO_POS5                      (SGPIO_PORT_BASE + 0x1D4)
#define SGPIO_POS6                      (SGPIO_PORT_BASE + 0x1D8)
#define SGPIO_POS7                      (SGPIO_PORT_BASE + 0x1DC)
#define SGPIO_POS8                      (SGPIO_PORT_BASE + 0x1E0)
#define SGPIO_POS9                      (SGPIO_PORT_BASE + 0x1E4)
#define SGPIO_POS10                     (SGPIO_PORT_BASE + 0x1E8)
#define SGPIO_POS11                     (SGPIO_PORT_BASE + 0x1EC)
#define SGPIO_POS12                     (SGPIO_PORT_BASE + 0x1F0)
#define SGPIO_POS13                     (SGPIO_PORT_BASE + 0x1F4)
#define SGPIO_POS14                     (SGPIO_PORT_BASE + 0x1F8)
#define SGPIO_POS15                     (SGPIO_PORT_BASE + 0x1FC)

/* Mask for pattern match function of slice A */
#define SGPIO_MASK_A                    (SGPIO_PORT_BASE + 0x200)

/* Mask for pattern match function of slice H */
#define SGPIO_MASK_H                    (SGPIO_PORT_BASE + 0x204)

/* Mask for pattern match function of slice I */
#define SGPIO_MASK_I                    (SGPIO_PORT_BASE + 0x208)

/* Mask for pattern match function of slice P */
#define SGPIO_MASK_P                    (SGPIO_PORT_BASE + 0x20C)

/* GPIO input status register */
#define SGPIO_GPIO_INREG                (SGPIO_PORT_BASE + 0x210)

/* GPIO output control register */
#define SGPIO_GPIO_OUTREG               (SGPIO_PORT_BASE + 0x214)

/* GPIO OE control register */
#define SGPIO_GPIO_OENREG               (SGPIO_PORT_BASE + 0x218)

/* Enables the slice COUNT counter */
#define SGPIO_CTRL_ENABLE               (SGPIO_PORT_BASE + 0x21C)

/* Disables the slice COUNT counter */
#define SGPIO_CTRL_DISABLE              (SGPIO_PORT_BASE + 0x220)

/* Shift clock interrupt clear mask */
#define SGPIO_CLR_EN_0                  (SGPIO_PORT_BASE + 0xF00)

/* Shift clock interrupt set mask */
#define SGPIO_SET_EN_0                  (SGPIO_PORT_BASE + 0xF04)

/* Shift clock interrupt enable */
#define SGPIO_ENABLE_0                  (SGPIO_PORT_BASE + 0xF08)

/* Shift clock interrupt status */
#define SGPIO_STATUS_0                  (SGPIO_PORT_BASE + 0xF0C)

/* Shift clock interrupt clear status */
#define SGPIO_CTR_STAT_0                (SGPIO_PORT_BASE + 0xF10)

/* Shift clock interrupt set status */
#define SGPIO_SET_STAT_0                (SGPIO_PORT_BASE + 0xF14)

/* Capture clock interrupt clear mask */
#define SGPIO_CLR_EN_1                  (SGPIO_PORT_BASE + 0xF20)

/* Capture clock interrupt set mask */
#define SGPIO_SET_EN_1                  (SGPIO_PORT_BASE + 0xF24)

/* Capture clock interrupt enable */
#define SGPIO_ENABLE_1                  (SGPIO_PORT_BASE + 0xF28)

/* Capture clock interrupt status */
#define SGPIO_STATUS_1                  (SGPIO_PORT_BASE + 0xF2C)

/* Capture clock interrupt clear status */
#define SGPIO_CTR_STAT_1                (SGPIO_PORT_BASE + 0xF30)

/* Capture clock interrupt set status */
#define SGPIO_SET_STAT_1                (SGPIO_PORT_BASE + 0xF34)

/* Pattern match interrupt clear mask */
#define SGPIO_CLR_EN_2                  (SGPIO_PORT_BASE + 0xF40)

/* Pattern match interrupt set mask */
#define SGPIO_SET_EN_2                  (SGPIO_PORT_BASE + 0xF44)

/* Pattern match interrupt enable */
#define SGPIO_ENABLE_2                  (SGPIO_PORT_BASE + 0xF48)

/* Pattern match interrupt status */
#define SGPIO_STATUS_2                  (SGPIO_PORT_BASE + 0xF4C)

/* Pattern match interrupt clear status */
#define SGPIO_CTR_STAT_2                (SGPIO_PORT_BASE + 0xF50)

/* Pattern match interrupt set status */
#define SGPIO_SET_STAT_2                (SGPIO_PORT_BASE + 0xF54)

/* Input interrupt clear mask */
#define SGPIO_CLR_EN_3                  (SGPIO_PORT_BASE + 0xF60)

/* Input bit match interrupt set mask */
#define SGPIO_SET_EN_3                  (SGPIO_PORT_BASE + 0xF64)

/* Input bit match interrupt enable */
#define SGPIO_ENABLE_3                  (SGPIO_PORT_BASE + 0xF68)

/* Input bit match interrupt status */
#define SGPIO_STATUS_3                  (SGPIO_PORT_BASE + 0xF6C)

/* Input bit match interrupt clear status */
#define SGPIO_CTR_STAT_3                (SGPIO_PORT_BASE + 0xF70)

/* Input bit match interrupt set status */
#define SGPIO_SET_STAT_3                (SGPIO_PORT_BASE + 0xF74)

#endif