RTEMS 6.1-rc7
Loading...
Searching...
No Matches
io.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
11/*
12 * Copyright (C) 2009, 2012 embedded brains GmbH & Co. KG
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions
16 * are met:
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 */
35
36#ifndef LIBBSP_ARM_LPC24XX_IO_H
37#define LIBBSP_ARM_LPC24XX_IO_H
38
39#include <rtems.h>
40
41#include <bsp/lpc24xx.h>
42
43#ifdef __cplusplus
44extern "C" {
45#endif /* __cplusplus */
46
57#ifdef ARM_MULTILIB_ARCH_V7M
58 #define LPC24XX_IO_PORT_COUNT 6U
59#else
60 #define LPC24XX_IO_PORT_COUNT 5U
61#endif
62
63#define LPC24XX_IO_INDEX_MAX (LPC24XX_IO_PORT_COUNT * 32U)
64
65#define LPC24XX_IO_INDEX_BY_PORT(port, bit) (((port) << 5U) + (bit))
66
67#define LPC24XX_IO_PORT(index) ((index) >> 5U)
68
69#define LPC24XX_IO_PORT_BIT(index) ((index) & 0x1fU)
70
71typedef enum {
72 #ifdef ARM_MULTILIB_ARCH_V4
73 LPC24XX_MODULE_ACF,
74 #endif
75 LPC24XX_MODULE_ADC,
76 #ifdef ARM_MULTILIB_ARCH_V4
77 LPC24XX_MODULE_BAT_RAM,
78 #endif
79 LPC24XX_MODULE_CAN_0,
80 LPC24XX_MODULE_CAN_1,
81 LPC24XX_MODULE_DAC,
82 LPC24XX_MODULE_EMC,
83 LPC24XX_MODULE_ETHERNET,
84 LPC24XX_MODULE_GPDMA,
85 LPC24XX_MODULE_GPIO,
86 LPC24XX_MODULE_I2C_0,
87 LPC24XX_MODULE_I2C_1,
88 LPC24XX_MODULE_I2C_2,
89 LPC24XX_MODULE_I2S,
90 LPC24XX_MODULE_LCD,
91 LPC24XX_MODULE_MCI,
92 #ifdef ARM_MULTILIB_ARCH_V7M
93 LPC24XX_MODULE_MCPWM,
94 #endif
95 LPC24XX_MODULE_PCB,
96 LPC24XX_MODULE_PWM_0,
97 LPC24XX_MODULE_PWM_1,
98 #ifdef ARM_MULTILIB_ARCH_V7M
99 LPC24XX_MODULE_QEI,
100 #endif
101 LPC24XX_MODULE_RTC,
102 #ifdef ARM_MULTILIB_ARCH_V4
103 LPC24XX_MODULE_SPI,
104 #endif
105 LPC24XX_MODULE_SSP_0,
106 LPC24XX_MODULE_SSP_1,
107 #ifdef ARM_MULTILIB_ARCH_V7M
108 LPC24XX_MODULE_SSP_2,
109 #endif
110 LPC24XX_MODULE_SYSCON,
111 LPC24XX_MODULE_TIMER_0,
112 LPC24XX_MODULE_TIMER_1,
113 LPC24XX_MODULE_TIMER_2,
114 LPC24XX_MODULE_TIMER_3,
115 LPC24XX_MODULE_UART_0,
116 LPC24XX_MODULE_UART_1,
117 LPC24XX_MODULE_UART_2,
118 LPC24XX_MODULE_UART_3,
119 #ifdef ARM_MULTILIB_ARCH_V7M
120 LPC24XX_MODULE_UART_4,
121 #endif
122 #ifdef ARM_MULTILIB_ARCH_V4
123 LPC24XX_MODULE_WDT,
124 #endif
125 LPC24XX_MODULE_USB
126} lpc24xx_module;
127
128#define LPC24XX_MODULE_COUNT (LPC24XX_MODULE_USB + 1)
129
130typedef enum {
131 LPC24XX_MODULE_PCLK_DEFAULT = 0x4U,
132 LPC24XX_MODULE_CCLK = 0x1U,
133 LPC24XX_MODULE_CCLK_2 = 0x2U,
134 LPC24XX_MODULE_CCLK_4 = 0x0U,
135 LPC24XX_MODULE_CCLK_6 = 0x3U,
136 LPC24XX_MODULE_CCLK_8 = 0x3U
137} lpc24xx_module_clock;
138
139#define LPC24XX_MODULE_CLOCK_MASK 0x3U
140
141typedef enum {
142 LPC24XX_GPIO_DEFAULT = 0x0U,
143 LPC24XX_GPIO_RESISTOR_PULL_UP = 0x0U,
144 LPC24XX_GPIO_RESISTOR_NONE = 0x1U,
145 LPC24XX_GPIO_RESISTOR_PULL_DOWN = 0x2U,
146 LPC24XX_GPIO_INPUT = 0x0U,
147 #ifdef ARM_MULTILIB_ARCH_V7M
148 LPC17XX_GPIO_REPEATER = 0x3U,
149 LPC17XX_GPIO_HYSTERESIS = IOCON_HYS,
150 LPC17XX_GPIO_INPUT_INVERT = IOCON_INV,
151 LPC17XX_GPIO_FAST_MODE = IOCON_SLEW,
152 LPC17XX_GPIO_OPEN_DRAIN = IOCON_OD,
153 LPC17XX_GPIO_INPUT_FILTER = IOCON_FILTER,
154 #endif
155 LPC24XX_GPIO_OUTPUT = 0x8000U
156} lpc24xx_gpio_settings;
157
158rtems_status_code lpc24xx_module_enable(
159 lpc24xx_module module,
160 lpc24xx_module_clock clock
161);
162
163rtems_status_code lpc24xx_module_disable(
164 lpc24xx_module module
165);
166
167bool lpc24xx_module_is_enabled(lpc24xx_module module);
168
169rtems_status_code lpc24xx_gpio_config(
170 unsigned index,
171 lpc24xx_gpio_settings settings
172);
173
174static inline void lpc24xx_gpio_set(unsigned index)
175{
176 if (index <= LPC24XX_IO_INDEX_MAX) {
177 unsigned port = LPC24XX_IO_PORT(index);
178 unsigned bit = LPC24XX_IO_PORT_BIT(index);
179
180 LPC24XX_FIO [port].set = 1U << bit;
181 }
182}
183
184static inline void lpc24xx_gpio_clear(unsigned index)
185{
186 if (index <= LPC24XX_IO_INDEX_MAX) {
187 unsigned port = LPC24XX_IO_PORT(index);
188 unsigned bit = LPC24XX_IO_PORT_BIT(index);
189
190 LPC24XX_FIO [port].clr = 1U << bit;
191 }
192}
193
194static inline void lpc24xx_gpio_write(unsigned index, bool value)
195{
196 if (value) {
197 lpc24xx_gpio_set(index);
198 } else {
199 lpc24xx_gpio_clear(index);
200 }
201}
202
203static inline bool lpc24xx_gpio_get(unsigned index)
204{
205 if (index <= LPC24XX_IO_INDEX_MAX) {
206 unsigned port = LPC24XX_IO_PORT(index);
207 unsigned bit = LPC24XX_IO_PORT_BIT(index);
208
209 return (LPC24XX_FIO [port].pin & (1U << bit)) != 0;
210 } else {
211 return false;
212 }
213}
214
215typedef enum {
220
225
230
236
237typedef union {
238 struct {
239 uint16_t port : 3;
240 uint16_t port_bit : 5;
241 uint16_t function : 3;
242 uint16_t type : 4;
243 uint16_t range : 1;
244 } fields;
245 uint16_t value;
247
248typedef enum {
249 LPC24XX_PIN_FUNCTION_00,
250 LPC24XX_PIN_FUNCTION_01,
251 LPC24XX_PIN_FUNCTION_10,
252 LPC24XX_PIN_FUNCTION_11
253} lpc24xx_pin_function;
254
255typedef enum {
256 LPC17XX_PIN_TYPE_DEFAULT,
257 LPC17XX_PIN_TYPE_ADC,
258 LPC17XX_PIN_TYPE_DAC,
259 LPC17XX_PIN_TYPE_I2C,
260 LPC17XX_PIN_TYPE_I2C_FAST_PLUS,
261 LPC17XX_PIN_TYPE_OPEN_DRAIN,
262 LPC17XX_PIN_TYPE_FAST_SLEW_RATE
263} lpc17xx_pin_type;
264
265#ifdef ARM_MULTILIB_ARCH_V4
266 #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f0, 0, 0 } }
267 #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f0, t, 0 } }
268 #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
269 { { p, i, f0, 0, 0 } }, { { p, j, f0, 0, 1 } }
270 #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
271 { { p, i, f0, t, 0 } }, { { p, j, f0, t, 1 } }
272#else
273 #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f1, 0, 0 } }
274 #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f1, t, 0 } }
275 #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
276 { { p, i, f1, 0, 0 } }, { { p, j, f1, 0, 1 } }
277 #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
278 { { p, i, f1, t, 0 } }, { { p, j, f1, t, 1 } }
279#endif
280
281#define LPC24XX_PIN_TERMINAL { { 0x7, 0x1f, 0x7, 0xf, 0x1 } }
282
315 const lpc24xx_pin_range *pins,
316 lpc24xx_pin_action action
317);
318
322static inline unsigned lpc24xx_pin_get_first_index(
323 const lpc24xx_pin_range *range
324)
325{
326 return LPC24XX_IO_INDEX_BY_PORT(range->fields.port, range->fields.port_bit);
327}
328
335#define LPC24XX_PIN_ADC_CHANNEL_0 \
336 LPC24XX_PIN_WITH_TYPE(0, 23, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
337#define LPC24XX_PIN_ADC_CHANNEL_1 \
338 LPC24XX_PIN_WITH_TYPE(0, 24, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
339#define LPC24XX_PIN_ADC_CHANNEL_2 \
340 LPC24XX_PIN_WITH_TYPE(0, 25, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
341#define LPC24XX_PIN_ADC_CHANNEL_3 \
342 LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
343#define LPC24XX_PIN_ADC_CHANNEL_4 \
344 LPC24XX_PIN_WITH_TYPE(1, 30, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
345#define LPC24XX_PIN_ADC_CHANNEL_5 \
346 LPC24XX_PIN_WITH_TYPE(1, 31, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
347#define LPC24XX_PIN_ADC_CHANNEL_6 \
348 LPC24XX_PIN_WITH_TYPE(0, 12, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
349#define LPC24XX_PIN_ADC_CHANNEL_7 \
350 LPC24XX_PIN_WITH_TYPE(0, 13, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
351
360#define LPC24XX_PIN_CAN_0_RD_P0_0 \
361 LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_01, 1)
362
363#define LPC24XX_PIN_CAN_0_RD_P0_21 \
364 LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_11, 4)
365
366#define LPC24XX_PIN_CAN_0_TD_P0_1 \
367 LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_01, 1)
368
369#define LPC24XX_PIN_CAN_0_TD_P0_22 \
370 LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_11, 4)
371
380#define LPC24XX_PIN_CAN_1_RD_P0_4 \
381 LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_10, 2)
382
383#define LPC24XX_PIN_CAN_1_RD_P2_7 \
384 LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_01, 1)
385
386#define LPC24XX_PIN_CAN_1_TD_P0_5 \
387 LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_10, 2)
388
389#define LPC24XX_PIN_CAN_1_TD_P2_8 \
390 LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_01, 1)
391
400#define LPC24XX_PIN_DAC \
401 LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_DAC)
402
411#define LPC24XX_PIN_ETHERNET_MII \
412 LPC24XX_PIN_RANGE(1, 0, 17, LPC24XX_PIN_FUNCTION_01, 1)
413
414#define LPC24XX_PIN_ETHERNET_RMII_0 \
415 LPC24XX_PIN_RANGE(1, 0, 1, LPC24XX_PIN_FUNCTION_01, 1)
416#define LPC24XX_PIN_ETHERNET_RMII_1 \
417 LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_01, 1)
418#define LPC24XX_PIN_ETHERNET_RMII_2 \
419 LPC24XX_PIN_RANGE(1, 8, 10, LPC24XX_PIN_FUNCTION_01, 1)
420#define LPC24XX_PIN_ETHERNET_RMII_3 \
421 LPC24XX_PIN_RANGE(1, 14, 17, LPC24XX_PIN_FUNCTION_01, 1)
422
431#define LPC24XX_PIN_EINT_0 \
432 LPC24XX_PIN(2, 10, LPC24XX_PIN_FUNCTION_01, 1)
433#define LPC24XX_PIN_EINT_1 \
434 LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 1)
435#define LPC24XX_PIN_EINT_2 \
436 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 1)
437#define LPC24XX_PIN_EINT_3 \
438 LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 1)
439
448#define LPC24XX_PIN_EMC(p, i) \
449 LPC24XX_PIN_WITH_TYPE(p, i, LPC24XX_PIN_FUNCTION_01, 1, \
450 LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
451
452#define LPC24XX_PIN_EMC_RANGE(p, i, j) \
453 LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, LPC24XX_PIN_FUNCTION_01, 1, \
454 LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
455
456#define LPC24XX_PIN_EMC_CS_0 LPC24XX_PIN_EMC(4, 30)
457#define LPC24XX_PIN_EMC_CS_1 LPC24XX_PIN_EMC(4, 31)
458#define LPC24XX_PIN_EMC_CS_2 LPC24XX_PIN_EMC(2, 14)
459#define LPC24XX_PIN_EMC_CS_3 LPC24XX_PIN_EMC(2, 15)
460
461#define LPC24XX_PIN_EMC_DYCS_0 LPC24XX_PIN_EMC(2, 20)
462#define LPC24XX_PIN_EMC_DYCS_1 LPC24XX_PIN_EMC(2, 21)
463#define LPC24XX_PIN_EMC_DYCS_2 LPC24XX_PIN_EMC(2, 22)
464#define LPC24XX_PIN_EMC_DYCS_3 LPC24XX_PIN_EMC(2, 23)
465
466#define LPC24XX_PIN_EMC_OE LPC24XX_PIN_EMC(4, 24)
467#define LPC24XX_PIN_EMC_WE LPC24XX_PIN_EMC(4, 25)
468#define LPC24XX_PIN_EMC_CAS LPC24XX_PIN_EMC(2, 16)
469#define LPC24XX_PIN_EMC_RAS LPC24XX_PIN_EMC(2, 17)
470
471#define LPC24XX_PIN_EMC_CLK_0 LPC24XX_PIN_EMC(2, 18)
472#define LPC24XX_PIN_EMC_CLK_1 LPC24XX_PIN_EMC(2, 19)
473
474#define LPC24XX_PIN_EMC_CKE_0 LPC24XX_PIN_EMC(2, 24)
475#define LPC24XX_PIN_EMC_CKE_1 LPC24XX_PIN_EMC(2, 25)
476#define LPC24XX_PIN_EMC_CKE_2 LPC24XX_PIN_EMC(2, 26)
477#define LPC24XX_PIN_EMC_CKE_3 LPC24XX_PIN_EMC(2, 27)
478
479#define LPC24XX_PIN_EMC_DQM_0 LPC24XX_PIN_EMC(2, 28)
480#define LPC24XX_PIN_EMC_DQM_1 LPC24XX_PIN_EMC(2, 29)
481#define LPC24XX_PIN_EMC_DQM_2 LPC24XX_PIN_EMC(2, 30)
482#define LPC24XX_PIN_EMC_DQM_3 LPC24XX_PIN_EMC(2, 31)
483
484#define LPC24XX_PIN_EMC_BLS0 LPC24XX_PIN_EMC(4, 26)
485#define LPC24XX_PIN_EMC_BLS1 LPC24XX_PIN_EMC(4, 27)
486#define LPC24XX_PIN_EMC_BLS2 LPC24XX_PIN_EMC(4, 28)
487#define LPC24XX_PIN_EMC_BLS3 LPC24XX_PIN_EMC(4, 29)
488
489#define LPC24XX_PIN_EMC_D_0_15 LPC24XX_PIN_EMC_RANGE(3, 0, 15)
490#define LPC24XX_PIN_EMC_D_15_31 LPC24XX_PIN_EMC_RANGE(3, 15, 31)
491#define LPC24XX_PIN_EMC_D_0_31 LPC24XX_PIN_EMC_RANGE(3, 0, 31)
492
493#define LPC24XX_PIN_EMC_A_0_12 LPC24XX_PIN_EMC_RANGE(4, 0, 12)
494#define LPC24XX_PIN_EMC_A_0_13 LPC24XX_PIN_EMC_RANGE(4, 0, 13)
495#define LPC24XX_PIN_EMC_A_0_14 LPC24XX_PIN_EMC_RANGE(4, 0, 14)
496#define LPC24XX_PIN_EMC_A_0_15 LPC24XX_PIN_EMC_RANGE(4, 0, 15)
497#define LPC24XX_PIN_EMC_A_0_16 \
498 LPC24XX_PIN_EMC_A_0_15, \
499 LPC24XX_PIN_EMC(4, 16)
500#define LPC24XX_PIN_EMC_A_0_17 \
501 LPC24XX_PIN_EMC_A_0_15, \
502 LPC24XX_PIN_EMC_RANGE(4, 16, 17)
503#define LPC24XX_PIN_EMC_A_0_18 \
504 LPC24XX_PIN_EMC_A_0_15, \
505 LPC24XX_PIN_EMC_RANGE(4, 16, 18)
506#define LPC24XX_PIN_EMC_A_0_19 \
507 LPC24XX_PIN_EMC_A_0_15, \
508 LPC24XX_PIN_EMC_RANGE(4, 16, 19)
509#define LPC24XX_PIN_EMC_A_0_20 \
510 LPC24XX_PIN_EMC_A_0_15, \
511 LPC24XX_PIN_EMC_RANGE(4, 16, 20)
512#define LPC24XX_PIN_EMC_A_0_21 \
513 LPC24XX_PIN_EMC_A_0_15, \
514 LPC24XX_PIN_EMC_RANGE(4, 16, 21)
515#define LPC24XX_PIN_EMC_A_0_22 \
516 LPC24XX_PIN_EMC_A_0_15, \
517 LPC24XX_PIN_EMC_RANGE(4, 16, 22)
518#define LPC24XX_PIN_EMC_A_0_23 \
519 LPC24XX_PIN_EMC_A_0_15, \
520 LPC24XX_PIN_EMC_RANGE(4, 16, 23)
521#define LPC24XX_PIN_EMC_A_0_24 \
522 LPC24XX_PIN_EMC_A_0_23, \
523 LPC24XX_PIN_EMC(5, 24)
524#define LPC24XX_PIN_EMC_A_0_25 \
525 LPC24XX_PIN_EMC_A_0_23, \
526 LPC24XX_PIN_EMC_RANGE(5, 24, 25)
527
536#define LPC24XX_PIN_I2C_0_SDA \
537 LPC24XX_PIN_WITH_TYPE(0, 27, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
538#define LPC24XX_PIN_I2C_0_SCL \
539 LPC24XX_PIN_WITH_TYPE(0, 28, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
540
549#define LPC24XX_PIN_I2C_1_SDA_P0_0 \
550 LPC24XX_PIN_WITH_TYPE(0, 0, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
551#define LPC24XX_PIN_I2C_1_SDA_P0_19 \
552 LPC24XX_PIN_WITH_TYPE(0, 19, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
553#define LPC24XX_PIN_I2C_1_SDA_P2_14 \
554 LPC24XX_PIN_WITH_TYPE(2, 14, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
555
556#define LPC24XX_PIN_I2C_1_SCL_P0_1 \
557 LPC24XX_PIN_WITH_TYPE(0, 1, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
558#define LPC24XX_PIN_I2C_1_SCL_P0_20 \
559 LPC24XX_PIN_WITH_TYPE(0, 20, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
560#define LPC24XX_PIN_I2C_1_SCL_P2_15 \
561 LPC24XX_PIN_WITH_TYPE(2, 15, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
562
571#define LPC24XX_PIN_I2C_2_SDA_P0_10 \
572 LPC24XX_PIN_WITH_TYPE(0, 10, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
573#define LPC24XX_PIN_I2C_2_SDA_P2_30 \
574 LPC24XX_PIN_WITH_TYPE(2, 30, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
575#define LPC24XX_PIN_I2C_2_SDA_P4_20 \
576 LPC24XX_PIN_WITH_TYPE(4, 20, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
577
578#define LPC24XX_PIN_I2C_2_SCL_P0_11 \
579 LPC24XX_PIN_WITH_TYPE(0, 11, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
580#define LPC24XX_PIN_I2C_2_SCL_P2_31 \
581 LPC24XX_PIN_WITH_TYPE(2, 31, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
582#define LPC24XX_PIN_I2C_2_SCL_P4_21 \
583 LPC24XX_PIN_WITH_TYPE(4, 21, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
584
593#define LPC24XX_PIN_I2S_RX_CLK_P0_4 \
594 LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 1)
595#define LPC24XX_PIN_I2S_RX_CLK_P0_23 \
596 LPC24XX_PIN(0, 23, LPC24XX_PIN_FUNCTION_10, 2)
597
598#define LPC24XX_PIN_I2S_RX_WS_P0_5 \
599 LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 1)
600#define LPC24XX_PIN_I2S_RX_WS_P0_24 \
601 LPC24XX_PIN(0, 24, LPC24XX_PIN_FUNCTION_10, 2)
602
603#define LPC24XX_PIN_I2S_RX_SDA_P0_6 \
604 LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 1)
605#define LPC24XX_PIN_I2S_RX_SDA_P0_25 \
606 LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_10, 2)
607
608#define LPC24XX_PIN_I2S_TX_CLK_P0_7 \
609 LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 1)
610#define LPC24XX_PIN_I2S_TX_CLK_P2_11 \
611 LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_11, 3)
612
613#define LPC24XX_PIN_I2S_TX_WS_P0_8 \
614 LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 1)
615#define LPC24XX_PIN_I2S_TX_WS_P2_12 \
616 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_11, 3)
617
618#define LPC24XX_PIN_I2S_TX_SDA_P0_9 \
619 LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 1)
620#define LPC24XX_PIN_I2S_TX_SDA_P2_13 \
621 LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_11, 3)
622
631#define LPC24XX_PIN_LCD_PWR \
632 LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_11, 7)
633#define LPC24XX_PIN_LCD_LE \
634 LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_11, 7)
635#define LPC24XX_PIN_LCD_DCLK \
636 LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_11, 7)
637#define LPC24XX_PIN_LCD_FP \
638 LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_11, 7)
639#define LPC24XX_PIN_LCD_ENAB_M \
640 LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_11, 7)
641#define LPC24XX_PIN_LCD_LP \
642 LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_11, 7)
643#define LPC24XX_PIN_LCD_CLKIN \
644 LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 7)
645
646#define LPC24XX_PIN_LCD_VD_0_P0_4 \
647 LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 7)
648#define LPC24XX_PIN_LCD_VD_0_P2_6 \
649 LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 6)
650#define LPC24XX_PIN_LCD_VD_1_P0_5 \
651 LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 7)
652#define LPC24XX_PIN_LCD_VD_1_P2_7 \
653 LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 6)
654#define LPC24XX_PIN_LCD_VD_2_P2_8 \
655 LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 6)
656#define LPC24XX_PIN_LCD_VD_2_P4_28 \
657 LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 7)
658#define LPC24XX_PIN_LCD_VD_3_P2_9 \
659 LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 6)
660#define LPC24XX_PIN_LCD_VD_3_P2_12 \
661 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 5)
662#define LPC24XX_PIN_LCD_VD_3_P4_29 \
663 LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 7)
664#define LPC24XX_PIN_LCD_VD_4_P2_6 \
665 LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 7)
666#define LPC24XX_PIN_LCD_VD_4_P2_12 \
667 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 4)
668#define LPC24XX_PIN_LCD_VD_5_P2_7 \
669 LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 7)
670#define LPC24XX_PIN_LCD_VD_5_P2_13 \
671 LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 5)
672#define LPC24XX_PIN_LCD_VD_6_P1_20 \
673 LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 6)
674#define LPC24XX_PIN_LCD_VD_6_P2_8 \
675 LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 7)
676#define LPC24XX_PIN_LCD_VD_6_P4_28 \
677 LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 5)
678#define LPC24XX_PIN_LCD_VD_7_P1_21 \
679 LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 6)
680#define LPC24XX_PIN_LCD_VD_7_P2_9 \
681 LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 7)
682#define LPC24XX_PIN_LCD_VD_7_P4_29 \
683 LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 5)
684#define LPC24XX_PIN_LCD_VD_8_P0_6 \
685 LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 7)
686#define LPC24XX_PIN_LCD_VD_8_P1_22 \
687 LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 6)
688#define LPC24XX_PIN_LCD_VD_8_P2_12 \
689 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 6)
690#define LPC24XX_PIN_LCD_VD_9_P0_7 \
691 LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 7)
692#define LPC24XX_PIN_LCD_VD_9_P1_23 \
693 LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 6)
694#define LPC24XX_PIN_LCD_VD_9_P2_13 \
695 LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 6)
696#define LPC24XX_PIN_LCD_VD_10_P1_20 \
697 LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 7)
698#define LPC24XX_PIN_LCD_VD_10_P1_24 \
699 LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 6)
700#define LPC24XX_PIN_LCD_VD_10_P4_28 \
701 LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 6)
702#define LPC24XX_PIN_LCD_VD_11_P1_21 \
703 LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 7)
704#define LPC24XX_PIN_LCD_VD_11_P1_25 \
705 LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 6)
706#define LPC24XX_PIN_LCD_VD_11_P4_29 \
707 LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 6)
708#define LPC24XX_PIN_LCD_VD_12_P1_22 \
709 LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 7)
710#define LPC24XX_PIN_LCD_VD_12_P1_26 \
711 LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 6)
712#define LPC24XX_PIN_LCD_VD_13_P1_23 \
713 LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 7)
714#define LPC24XX_PIN_LCD_VD_13_P1_27 \
715 LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 6)
716#define LPC24XX_PIN_LCD_VD_14_P1_24 \
717 LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 7)
718#define LPC24XX_PIN_LCD_VD_14_P1_28 \
719 LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 6)
720#define LPC24XX_PIN_LCD_VD_15_P1_25 \
721 LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 7)
722#define LPC24XX_PIN_LCD_VD_15_P1_29 \
723 LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 6)
724#define LPC24XX_PIN_LCD_VD_16_P0_8 \
725 LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 7)
726#define LPC24XX_PIN_LCD_VD_17_P0_9 \
727 LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 7)
728#define LPC24XX_PIN_LCD_VD_18_P2_12 \
729 LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 7)
730#define LPC24XX_PIN_LCD_VD_19_P2_13 \
731 LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 7)
732#define LPC24XX_PIN_LCD_VD_20_P1_26 \
733 LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 7)
734#define LPC24XX_PIN_LCD_VD_21_P1_27 \
735 LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 7)
736#define LPC24XX_PIN_LCD_VD_22_P1_28 \
737 LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 7)
738#define LPC24XX_PIN_LCD_VD_23_P1_29 \
739 LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 7)
740
749#define LPC24XX_PIN_PWM_0_CHANNEL_1_P1_2 \
750 LPC24XX_PIN(1, 2, LPC24XX_PIN_FUNCTION_11, 3)
751#define LPC24XX_PIN_PWM_0_CHANNEL_1_P3_16 \
752 LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_10, 2)
753
754#define LPC24XX_PIN_PWM_0_CHANNEL_2_P1_3 \
755 LPC24XX_PIN(1, 3, LPC24XX_PIN_FUNCTION_11, 3)
756#define LPC24XX_PIN_PWM_0_CHANNEL_2_P3_17 \
757 LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_10, 2)
758
759#define LPC24XX_PIN_PWM_0_CHANNEL_3_P1_5 \
760 LPC24XX_PIN(1, 5, LPC24XX_PIN_FUNCTION_11, 3)
761#define LPC24XX_PIN_PWM_0_CHANNEL_3_P3_18 \
762 LPC24XX_PIN(3, 18, LPC24XX_PIN_FUNCTION_10, 2)
763
764#define LPC24XX_PIN_PWM_0_CHANNEL_4_P1_6 \
765 LPC24XX_PIN(1, 6, LPC24XX_PIN_FUNCTION_11, 3)
766#define LPC24XX_PIN_PWM_0_CHANNEL_4_P3_19 \
767 LPC24XX_PIN(3, 19, LPC24XX_PIN_FUNCTION_10, 2)
768
769#define LPC24XX_PIN_PWM_0_CHANNEL_5_P1_7 \
770 LPC24XX_PIN(1, 7, LPC24XX_PIN_FUNCTION_11, 3)
771#define LPC24XX_PIN_PWM_0_CHANNEL_5_P3_20 \
772 LPC24XX_PIN(3, 20, LPC24XX_PIN_FUNCTION_10, 2)
773
774#define LPC24XX_PIN_PWM_0_CHANNEL_6_P1_11 \
775 LPC24XX_PIN(1, 11, LPC24XX_PIN_FUNCTION_11, 3)
776#define LPC24XX_PIN_PWM_0_CHANNEL_6_P3_21 \
777 LPC24XX_PIN(3, 21, LPC24XX_PIN_FUNCTION_10, 2)
778
779#define LPC24XX_PIN_PWM_0_CAPTURE_0_P1_12 \
780 LPC24XX_PIN(1, 12, LPC24XX_PIN_FUNCTION_11, 3)
781#define LPC24XX_PIN_PWM_0_CAPTURE_0_P3_22 \
782 LPC24XX_PIN(3, 22, LPC24XX_PIN_FUNCTION_10, 2)
783
792#define LPC24XX_PIN_PWM_1_CHANNEL_1_P1_18 \
793 LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_10, 2)
794#define LPC24XX_PIN_PWM_1_CHANNEL_1_P2_0 \
795 LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_01, 1)
796#define LPC24XX_PIN_PWM_1_CHANNEL_1_P3_24 \
797 LPC24XX_PIN(3, 24, LPC24XX_PIN_FUNCTION_11, 2)
798
799#define LPC24XX_PIN_PWM_1_CHANNEL_2_P1_20 \
800 LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_10, 2)
801#define LPC24XX_PIN_PWM_1_CHANNEL_2_P2_1 \
802 LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_01, 1)
803#define LPC24XX_PIN_PWM_1_CHANNEL_2_P3_25 \
804 LPC24XX_PIN(3, 25, LPC24XX_PIN_FUNCTION_11, 2)
805
806#define LPC24XX_PIN_PWM_1_CHANNEL_3_P1_21 \
807 LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_10, 2)
808#define LPC24XX_PIN_PWM_1_CHANNEL_3_P2_2 \
809 LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_01, 1)
810#define LPC24XX_PIN_PWM_1_CHANNEL_3_P3_26 \
811 LPC24XX_PIN(3, 26, LPC24XX_PIN_FUNCTION_11, 2)
812
813#define LPC24XX_PIN_PWM_1_CHANNEL_4_P1_23 \
814 LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_10, 2)
815#define LPC24XX_PIN_PWM_1_CHANNEL_4_P2_3 \
816 LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_01, 1)
817#define LPC24XX_PIN_PWM_1_CHANNEL_4_P3_27 \
818 LPC24XX_PIN(3, 27, LPC24XX_PIN_FUNCTION_11, 2)
819
820#define LPC24XX_PIN_PWM_1_CHANNEL_5_P1_24 \
821 LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_10, 2)
822#define LPC24XX_PIN_PWM_1_CHANNEL_5_P2_4 \
823 LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_01, 1)
824#define LPC24XX_PIN_PWM_1_CHANNEL_5_P3_28 \
825 LPC24XX_PIN(3, 28, LPC24XX_PIN_FUNCTION_11, 2)
826
827#define LPC24XX_PIN_PWM_1_CHANNEL_6_P1_26 \
828 LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_10, 2)
829#define LPC24XX_PIN_PWM_1_CHANNEL_6_P2_5 \
830 LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_01, 1)
831#define LPC24XX_PIN_PWM_1_CHANNEL_6_P3_29 \
832 LPC24XX_PIN(3, 29, LPC24XX_PIN_FUNCTIO9_11, 2)
833
834#define LPC24XX_PIN_PWM_1_CAPTURE_0_P1_28 \
835 LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_10, 2)
836#define LPC24XX_PIN_PWM_1_CAPTURE_0_P2_7 \
837 LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_01, 1)
838#define LPC24XX_PIN_PWM_1_CAPTURE_0_P3_23 \
839 LPC24XX_PIN(3, 23, LPC24XX_PIN_FUNCTION_11, 2)
840
841#define LPC24XX_PIN_PWM_1_CAPTURE_1_P1_29 \
842 LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_10, 2)
843
846#ifdef ARM_MULTILIB_ARCH_V4
847
854#define LPC24XX_PIN_SPI_SCK \
855 LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_11)
856#define LPC24XX_PIN_SPI_SSEL \
857 LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_11)
858#define LPC24XX_PIN_SPI_MISO \
859 LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_11)
860#define LPC24XX_PIN_SPI_MOSI \
861 LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_11)
862
865#endif /* ARM_MULTILIB_ARCH_V4 */
866
873#define LPC24XX_PIN_SSP_0_SCK_P0_15 \
874 LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_10, 2)
875#define LPC24XX_PIN_SSP_0_SCK_P1_20 \
876 LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_11, 5)
877#define LPC24XX_PIN_SSP_0_SCK_P2_22 \
878 LPC24XX_PIN(2, 22, LPC24XX_PIN_FUNCTION_11, 2)
879
880#define LPC24XX_PIN_SSP_0_SSEL_P0_16 \
881 LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_10, 2)
882#define LPC24XX_PIN_SSP_0_SSEL_P1_21 \
883 LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_11, 3)
884#define LPC24XX_PIN_SSP_0_SSEL_P2_23 \
885 LPC24XX_PIN(2, 23, LPC24XX_PIN_FUNCTION_11, 2)
886
887#define LPC24XX_PIN_SSP_0_MISO_P0_17 \
888 LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_10, 2)
889#define LPC24XX_PIN_SSP_0_MISO_P1_23 \
890 LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_11, 5)
891#define LPC24XX_PIN_SSP_0_MISO_P2_26 \
892 LPC24XX_PIN(2, 26, LPC24XX_PIN_FUNCTION_11, 2)
893
894#define LPC24XX_PIN_SSP_0_MOSI_P0_18 \
895 LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_10, 2)
896#define LPC24XX_PIN_SSP_0_MOSI_P1_24 \
897 LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_11, 5)
898#define LPC24XX_PIN_SSP_0_MOSI_P2_27 \
899 LPC24XX_PIN(2, 27, LPC24XX_PIN_FUNCTION_11, 2)
900
909#define LPC24XX_PIN_SSP_1_SCK_P0_6 \
910 LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_10, 2)
911#define LPC24XX_PIN_SSP_1_SCK_P0_12 \
912 LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_10, 2)
913#define LPC24XX_PIN_SSP_1_SCK_P4_20 \
914 LPC24XX_PIN(4, 20, LPC24XX_PIN_FUNCTION_11, 3)
915
916#define LPC24XX_PIN_SSP_1_SSEL_P0_7 \
917 LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_10, 2)
918#define LPC24XX_PIN_SSP_1_SSEL_P0_13 \
919 LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_11, 2)
920#define LPC24XX_PIN_SSP_1_SSEL_P4_21 \
921 LPC24XX_PIN(4, 21, LPC24XX_PIN_FUNCTION_11, 3)
922
923#define LPC24XX_PIN_SSP_1_MISO_P0_8 \
924 LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_10, 2)
925#define LPC24XX_PIN_SSP_1_MISO_P0_14 \
926 LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_10, 2)
927#define LPC24XX_PIN_SSP_1_MISO_P4_22 \
928 LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_11, 3)
929
930#define LPC24XX_PIN_SSP_1_MOSI_P0_9 \
931 LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_10, 2)
932#define LPC24XX_PIN_SSP_1_MOSI_P1_31 \
933 LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_10, 2)
934#define LPC24XX_PIN_SSP_1_MOSI_P4_23 \
935 LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_11, 3)
936
939#ifdef ARM_MULTILIB_ARCH_V7M
940
947#define LPC24XX_PIN_SSP_2_SCK_P1_0 \
948 LPC24XX_PIN(1, 0, LPC24XX_PIN_FUNCTION_00, 4)
949#define LPC24XX_PIN_SSP_2_SCK_P5_2 \
950 LPC24XX_PIN(5, 2, LPC24XX_PIN_FUNCTION_00, 2)
951
952#define LPC24XX_PIN_SSP_2_SSEL_P1_8 \
953 LPC24XX_PIN(1, 8, LPC24XX_PIN_FUNCTION_00, 4)
954#define LPC24XX_PIN_SSP_2_SSEL_P5_3 \
955 LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 2)
956
957#define LPC24XX_PIN_SSP_2_MISO_P1_4 \
958 LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_00, 4)
959#define LPC24XX_PIN_SSP_2_MISO_P5_1 \
960 LPC24XX_PIN(5, 1, LPC24XX_PIN_FUNCTION_00, 2)
961
962#define LPC24XX_PIN_SSP_2_MOSI_P1_1 \
963 LPC24XX_PIN(1, 1, LPC24XX_PIN_FUNCTION_00, 4)
964#define LPC24XX_PIN_SSP_2_MOSI_P5_0 \
965 LPC24XX_PIN(5, 0, LPC24XX_PIN_FUNCTION_00, 2)
966
969#endif /* ARM_MULTILIB_ARCH_V7M */
970
977#define LPC24XX_PIN_UART_0_TXD \
978 LPC24XX_PIN(0, 2, LPC24XX_PIN_FUNCTION_01, 1)
979
980#define LPC24XX_PIN_UART_0_RXD \
981 LPC24XX_PIN(0, 3, LPC24XX_PIN_FUNCTION_01, 1)
982
991#define LPC24XX_PIN_UART_1_TXD_P0_15 \
992 LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_01, 1)
993#define LPC24XX_PIN_UART_1_TXD_P2_0 \
994 LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_10, 2)
995#define LPC24XX_PIN_UART_1_TXD_P3_16 \
996 LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_11, 3)
997
998#define LPC24XX_PIN_UART_1_RXD_P0_16 \
999 LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_01, 1)
1000#define LPC24XX_PIN_UART_1_RXD_P2_1 \
1001 LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_10, 2)
1002#define LPC24XX_PIN_UART_1_RXD_P3_17 \
1003 LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_11, 3)
1004
1013#define LPC24XX_PIN_UART_2_TXD_P0_10 \
1014 LPC24XX_PIN(0, 10, LPC24XX_PIN_FUNCTION_01, 1)
1015#define LPC24XX_PIN_UART_2_TXD_P2_8 \
1016 LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_10, 2)
1017#define LPC24XX_PIN_UART_2_TXD_P4_22 \
1018 LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_10, 2)
1019
1020#define LPC24XX_PIN_UART_2_RXD_P0_11 \
1021 LPC24XX_PIN(0, 11, LPC24XX_PIN_FUNCTION_01, 1)
1022#define LPC24XX_PIN_UART_2_RXD_P2_9 \
1023 LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_10, 2)
1024#define LPC24XX_PIN_UART_2_RXD_P4_23 \
1025 LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_10, 2)
1026
1035#define LPC24XX_PIN_UART_3_TXD_P0_0 \
1036 LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_10, 2)
1037#define LPC24XX_PIN_UART_3_TXD_P0_25 \
1038 LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_11, 3)
1039#define LPC24XX_PIN_UART_3_TXD_P4_28 \
1040 LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_11, 2)
1041
1042#define LPC24XX_PIN_UART_3_RXD_P0_1 \
1043 LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_10, 2)
1044#define LPC24XX_PIN_UART_3_RXD_P0_26 \
1045 LPC24XX_PIN(0, 26, LPC24XX_PIN_FUNCTION_11, 3)
1046#define LPC24XX_PIN_UART_3_RXD_P4_29 \
1047 LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_11, 2)
1048
1051#ifdef ARM_MULTILIB_ARCH_V7M
1052
1059#define LPC24XX_PIN_UART_4_TXD_P0_22 \
1060 LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_00, 3)
1061#define LPC24XX_PIN_UART_4_TXD_P1_29 \
1062 LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_00, 5)
1063#define LPC24XX_PIN_UART_4_TXD_P5_4 \
1064 LPC24XX_PIN(5, 4, LPC24XX_PIN_FUNCTION_00, 4)
1065
1066#define LPC24XX_PIN_UART_4_RXD_P2_9 \
1067 LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_00, 3)
1068#define LPC24XX_PIN_UART_4_RXD_P5_3 \
1069 LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 4)
1070
1071#define LPC24XX_PIN_UART_4_OE_P0_21 \
1072 LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 3)
1073
1074#define LPC24XX_PIN_UART_4_SCLK_P0_21 \
1075 LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 5)
1076
1077#endif /* ARM_MULTILIB_ARCH_V7M */
1078
1087#define LPC24XX_PIN_USB_D_PLUS_1\
1088 LPC24XX_PIN(0, 29, LPC24XX_PIN_FUNCTION_01, 1)
1089#define LPC24XX_PIN_USB_D_MINUS_1\
1090 LPC24XX_PIN(0, 30, LPC24XX_PIN_FUNCTION_01, 1)
1091#define LPC24XX_PIN_USB_UP_LED_1\
1092 LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_01, 1)
1093#define LPC24XX_PIN_USB_TX_E_1\
1094 LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_01, 1)
1095#define LPC24XX_PIN_USB_PPWR_1\
1096 LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_10, 2)
1097#define LPC24XX_PIN_USB_TX_DP_1\
1098 LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 1)
1099#define LPC24XX_PIN_USB_TX_DM_1\
1100 LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 1)
1101#define LPC24XX_PIN_USB_RCV_1\
1102 LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 1)
1103#define LPC24XX_PIN_USB_PWRD_1\
1104 LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_10, 2)
1105#define LPC24XX_PIN_USB_RX_DP_1\
1106 LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 1)
1107#define LPC24XX_PIN_USB_RX_DM_1\
1108 LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 1)
1109#define LPC24XX_PIN_USB_LS_1\
1110 LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 1)
1111#define LPC24XX_PIN_USB_HSTEN_1\
1112 LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_10, 2)
1113#define LPC24XX_PIN_USB_SSPND_1\
1114 LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 1)
1115#define LPC24XX_PIN_USB_INT_1\
1116 LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 1)
1117#define LPC24XX_PIN_USB_OVRCR_1\
1118 LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
1119#define LPC24XX_PIN_USB_SCL_1\
1120 LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
1121#define LPC24XX_PIN_USB_SDA_1 \
1122 LPC24XX_PIN_WITH_TYPE( \
1123 1, 29, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_OPEN_DRAIN \
1124 )
1125#define LPC24XX_PIN_USB_CONNECT_1\
1126 LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
1127
1136#define LPC24XX_PIN_USB_PPWR_2\
1137 LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_01, 1)
1138#define LPC24XX_PIN_USB_UP_LED_2\
1139 LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_01, 1)
1140#define LPC24XX_PIN_USB_HSTEN_2\
1141 LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 1)
1142#define LPC24XX_PIN_USB_CONNECT_2\
1143 LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 3)
1144#define LPC24XX_PIN_USB_D_PLUS_2\
1145 LPC24XX_PIN(0, 31, LPC24XX_PIN_FUNCTION_01, 1)
1146#define LPC24XX_PIN_USB_PWRD_2\
1147 LPC24XX_PIN(1, 30, LPC24XX_PIN_FUNCTION_01, 1)
1148#define LPC24XX_PIN_USB_OVRCR_2\
1149 LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_01, 1)
1150
1155#ifdef __cplusplus
1156}
1157#endif /* __cplusplus */
1158
1159#endif /* LIBBSP_ARM_LPC24XX_IO_H */
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:85
lpc24xx_pin_action
Definition: io.h:215
rtems_status_code lpc24xx_pin_config(const lpc24xx_pin_range *pins, lpc24xx_pin_action action)
Performs the action with the pins.
Definition: io.c:530
@ LPC24XX_PIN_SET_INPUT
Configures the pins as input.
Definition: io.h:229
@ LPC24XX_PIN_CHECK_INPUT
Checks if all pins are configured as input.
Definition: io.h:234
@ LPC24XX_PIN_SET_FUNCTION
Sets the pin function.
Definition: io.h:219
@ LPC24XX_PIN_CHECK_FUNCTION
Checks if all pins are configured with the specified function.
Definition: io.h:224
Register definitions.
This header file defines the RTEMS Classic API.
Definition: io.h:237