RTEMS  5.1
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
io.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2009-2012 embedded brains GmbH. All rights reserved.
11  *
12  * embedded brains GmbH
13  * Obere Lagerstr. 30
14  * 82178 Puchheim
15  * Germany
16  * <rtems@embedded-brains.de>
17  *
18  * The license and distribution terms for this file may be
19  * found in the file LICENSE in this distribution or at
20  * http://www.rtems.org/license/LICENSE.
21  */
22 
23 #ifndef LIBBSP_ARM_LPC24XX_IO_H
24 #define LIBBSP_ARM_LPC24XX_IO_H
25 
26 #include <rtems.h>
27 
28 #include <bsp/lpc24xx.h>
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif /* __cplusplus */
33 
44 #ifdef ARM_MULTILIB_ARCH_V7M
45  #define LPC24XX_IO_PORT_COUNT 6U
46 #else
47  #define LPC24XX_IO_PORT_COUNT 5U
48 #endif
49 
50 #define LPC24XX_IO_INDEX_MAX (LPC24XX_IO_PORT_COUNT * 32U)
51 
52 #define LPC24XX_IO_INDEX_BY_PORT(port, bit) (((port) << 5U) + (bit))
53 
54 #define LPC24XX_IO_PORT(index) ((index) >> 5U)
55 
56 #define LPC24XX_IO_PORT_BIT(index) ((index) & 0x1fU)
57 
58 typedef enum {
59  #ifdef ARM_MULTILIB_ARCH_V4
60  LPC24XX_MODULE_ACF,
61  #endif
62  LPC24XX_MODULE_ADC,
63  #ifdef ARM_MULTILIB_ARCH_V4
64  LPC24XX_MODULE_BAT_RAM,
65  #endif
66  LPC24XX_MODULE_CAN_0,
67  LPC24XX_MODULE_CAN_1,
68  LPC24XX_MODULE_DAC,
69  LPC24XX_MODULE_EMC,
70  LPC24XX_MODULE_ETHERNET,
71  LPC24XX_MODULE_GPDMA,
72  LPC24XX_MODULE_GPIO,
73  LPC24XX_MODULE_I2C_0,
74  LPC24XX_MODULE_I2C_1,
75  LPC24XX_MODULE_I2C_2,
76  LPC24XX_MODULE_I2S,
77  LPC24XX_MODULE_LCD,
78  LPC24XX_MODULE_MCI,
79  #ifdef ARM_MULTILIB_ARCH_V7M
80  LPC24XX_MODULE_MCPWM,
81  #endif
82  LPC24XX_MODULE_PCB,
83  LPC24XX_MODULE_PWM_0,
84  LPC24XX_MODULE_PWM_1,
85  #ifdef ARM_MULTILIB_ARCH_V7M
86  LPC24XX_MODULE_QEI,
87  #endif
88  LPC24XX_MODULE_RTC,
89  #ifdef ARM_MULTILIB_ARCH_V4
90  LPC24XX_MODULE_SPI,
91  #endif
92  LPC24XX_MODULE_SSP_0,
93  LPC24XX_MODULE_SSP_1,
94  #ifdef ARM_MULTILIB_ARCH_V7M
95  LPC24XX_MODULE_SSP_2,
96  #endif
97  LPC24XX_MODULE_SYSCON,
98  LPC24XX_MODULE_TIMER_0,
99  LPC24XX_MODULE_TIMER_1,
100  LPC24XX_MODULE_TIMER_2,
101  LPC24XX_MODULE_TIMER_3,
102  LPC24XX_MODULE_UART_0,
103  LPC24XX_MODULE_UART_1,
104  LPC24XX_MODULE_UART_2,
105  LPC24XX_MODULE_UART_3,
106  #ifdef ARM_MULTILIB_ARCH_V7M
107  LPC24XX_MODULE_UART_4,
108  #endif
109  #ifdef ARM_MULTILIB_ARCH_V4
110  LPC24XX_MODULE_WDT,
111  #endif
112  LPC24XX_MODULE_USB
113 } lpc24xx_module;
114 
115 #define LPC24XX_MODULE_COUNT (LPC24XX_MODULE_USB + 1)
116 
117 typedef enum {
118  LPC24XX_MODULE_PCLK_DEFAULT = 0x4U,
119  LPC24XX_MODULE_CCLK = 0x1U,
120  LPC24XX_MODULE_CCLK_2 = 0x2U,
121  LPC24XX_MODULE_CCLK_4 = 0x0U,
122  LPC24XX_MODULE_CCLK_6 = 0x3U,
123  LPC24XX_MODULE_CCLK_8 = 0x3U
124 } lpc24xx_module_clock;
125 
126 #define LPC24XX_MODULE_CLOCK_MASK 0x3U
127 
128 typedef enum {
129  LPC24XX_GPIO_DEFAULT = 0x0U,
130  LPC24XX_GPIO_RESISTOR_PULL_UP = 0x0U,
131  LPC24XX_GPIO_RESISTOR_NONE = 0x1U,
132  LPC24XX_GPIO_RESISTOR_PULL_DOWN = 0x2U,
133  LPC24XX_GPIO_INPUT = 0x0U,
134  #ifdef ARM_MULTILIB_ARCH_V7M
135  LPC17XX_GPIO_REPEATER = 0x3U,
136  LPC17XX_GPIO_HYSTERESIS = IOCON_HYS,
137  LPC17XX_GPIO_INPUT_INVERT = IOCON_INV,
138  LPC17XX_GPIO_FAST_MODE = IOCON_SLEW,
139  LPC17XX_GPIO_OPEN_DRAIN = IOCON_OD,
140  LPC17XX_GPIO_INPUT_FILTER = IOCON_FILTER,
141  #endif
142  LPC24XX_GPIO_OUTPUT = 0x8000U
143 } lpc24xx_gpio_settings;
144 
145 rtems_status_code lpc24xx_module_enable(
146  lpc24xx_module module,
147  lpc24xx_module_clock clock
148 );
149 
150 rtems_status_code lpc24xx_module_disable(
151  lpc24xx_module module
152 );
153 
154 bool lpc24xx_module_is_enabled(lpc24xx_module module);
155 
156 rtems_status_code lpc24xx_gpio_config(
157  unsigned index,
158  lpc24xx_gpio_settings settings
159 );
160 
161 static inline void lpc24xx_gpio_set(unsigned index)
162 {
163  if (index <= LPC24XX_IO_INDEX_MAX) {
164  unsigned port = LPC24XX_IO_PORT(index);
165  unsigned bit = LPC24XX_IO_PORT_BIT(index);
166 
167  LPC24XX_FIO [port].set = 1U << bit;
168  }
169 }
170 
171 static inline void lpc24xx_gpio_clear(unsigned index)
172 {
173  if (index <= LPC24XX_IO_INDEX_MAX) {
174  unsigned port = LPC24XX_IO_PORT(index);
175  unsigned bit = LPC24XX_IO_PORT_BIT(index);
176 
177  LPC24XX_FIO [port].clr = 1U << bit;
178  }
179 }
180 
181 static inline void lpc24xx_gpio_write(unsigned index, bool value)
182 {
183  if (value) {
184  lpc24xx_gpio_set(index);
185  } else {
186  lpc24xx_gpio_clear(index);
187  }
188 }
189 
190 static inline bool lpc24xx_gpio_get(unsigned index)
191 {
192  if (index <= LPC24XX_IO_INDEX_MAX) {
193  unsigned port = LPC24XX_IO_PORT(index);
194  unsigned bit = LPC24XX_IO_PORT_BIT(index);
195 
196  return (LPC24XX_FIO [port].pin & (1U << bit)) != 0;
197  } else {
198  return false;
199  }
200 }
201 
202 typedef enum {
207 
212 
217 
223 
224 typedef union {
225  struct {
226  uint16_t port : 3;
227  uint16_t port_bit : 5;
228  uint16_t function : 3;
229  uint16_t type : 4;
230  uint16_t range : 1;
231  } fields;
232  uint16_t value;
234 
235 typedef enum {
236  LPC24XX_PIN_FUNCTION_00,
237  LPC24XX_PIN_FUNCTION_01,
238  LPC24XX_PIN_FUNCTION_10,
239  LPC24XX_PIN_FUNCTION_11
240 } lpc24xx_pin_function;
241 
242 typedef enum {
243  LPC17XX_PIN_TYPE_DEFAULT,
244  LPC17XX_PIN_TYPE_ADC,
245  LPC17XX_PIN_TYPE_DAC,
246  LPC17XX_PIN_TYPE_I2C,
247  LPC17XX_PIN_TYPE_I2C_FAST_PLUS,
248  LPC17XX_PIN_TYPE_OPEN_DRAIN,
249  LPC17XX_PIN_TYPE_FAST_SLEW_RATE
250 } lpc17xx_pin_type;
251 
252 #ifdef ARM_MULTILIB_ARCH_V4
253  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f0, 0, 0 } }
254  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f0, t, 0 } }
255  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
256  { { p, i, f0, 0, 0 } }, { { p, j, f0, 0, 1 } }
257  #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
258  { { p, i, f0, t, 0 } }, { { p, j, f0, t, 1 } }
259 #else
260  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f1, 0, 0 } }
261  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f1, t, 0 } }
262  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
263  { { p, i, f1, 0, 0 } }, { { p, j, f1, 0, 1 } }
264  #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
265  { { p, i, f1, t, 0 } }, { { p, j, f1, t, 1 } }
266 #endif
267 
268 #define LPC24XX_PIN_TERMINAL { { 0x7, 0x1f, 0x7, 0xf, 0x1 } }
269 
302  const lpc24xx_pin_range *pins,
303  lpc24xx_pin_action action
304 );
305 
309 static inline unsigned lpc24xx_pin_get_first_index(
310  const lpc24xx_pin_range *range
311 )
312 {
313  return LPC24XX_IO_INDEX_BY_PORT(range->fields.port, range->fields.port_bit);
314 }
315 
322 #define LPC24XX_PIN_ADC_CHANNEL_0 \
323  LPC24XX_PIN_WITH_TYPE(0, 23, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
324 #define LPC24XX_PIN_ADC_CHANNEL_1 \
325  LPC24XX_PIN_WITH_TYPE(0, 24, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
326 #define LPC24XX_PIN_ADC_CHANNEL_2 \
327  LPC24XX_PIN_WITH_TYPE(0, 25, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
328 #define LPC24XX_PIN_ADC_CHANNEL_3 \
329  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
330 #define LPC24XX_PIN_ADC_CHANNEL_4 \
331  LPC24XX_PIN_WITH_TYPE(1, 30, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
332 #define LPC24XX_PIN_ADC_CHANNEL_5 \
333  LPC24XX_PIN_WITH_TYPE(1, 31, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
334 #define LPC24XX_PIN_ADC_CHANNEL_6 \
335  LPC24XX_PIN_WITH_TYPE(0, 12, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
336 #define LPC24XX_PIN_ADC_CHANNEL_7 \
337  LPC24XX_PIN_WITH_TYPE(0, 13, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
338 
347 #define LPC24XX_PIN_CAN_0_RD_P0_0 \
348  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_01, 1)
349 
350 #define LPC24XX_PIN_CAN_0_RD_P0_21 \
351  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_11, 4)
352 
353 #define LPC24XX_PIN_CAN_0_TD_P0_1 \
354  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_01, 1)
355 
356 #define LPC24XX_PIN_CAN_0_TD_P0_22 \
357  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_11, 4)
358 
367 #define LPC24XX_PIN_CAN_1_RD_P0_4 \
368  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_10, 2)
369 
370 #define LPC24XX_PIN_CAN_1_RD_P2_7 \
371  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_01, 1)
372 
373 #define LPC24XX_PIN_CAN_1_TD_P0_5 \
374  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_10, 2)
375 
376 #define LPC24XX_PIN_CAN_1_TD_P2_8 \
377  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_01, 1)
378 
387 #define LPC24XX_PIN_DAC \
388  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_DAC)
389 
398 #define LPC24XX_PIN_ETHERNET_MII \
399  LPC24XX_PIN_RANGE(1, 0, 17, LPC24XX_PIN_FUNCTION_01, 1)
400 
401 #define LPC24XX_PIN_ETHERNET_RMII_0 \
402  LPC24XX_PIN_RANGE(1, 0, 1, LPC24XX_PIN_FUNCTION_01, 1)
403 #define LPC24XX_PIN_ETHERNET_RMII_1 \
404  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_01, 1)
405 #define LPC24XX_PIN_ETHERNET_RMII_2 \
406  LPC24XX_PIN_RANGE(1, 8, 10, LPC24XX_PIN_FUNCTION_01, 1)
407 #define LPC24XX_PIN_ETHERNET_RMII_3 \
408  LPC24XX_PIN_RANGE(1, 14, 17, LPC24XX_PIN_FUNCTION_01, 1)
409 
418 #define LPC24XX_PIN_EINT_0 \
419  LPC24XX_PIN(2, 10, LPC24XX_PIN_FUNCTION_01, 1)
420 #define LPC24XX_PIN_EINT_1 \
421  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 1)
422 #define LPC24XX_PIN_EINT_2 \
423  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 1)
424 #define LPC24XX_PIN_EINT_3 \
425  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 1)
426 
435 #define LPC24XX_PIN_EMC(p, i) \
436  LPC24XX_PIN_WITH_TYPE(p, i, LPC24XX_PIN_FUNCTION_01, 1, \
437  LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
438 
439 #define LPC24XX_PIN_EMC_RANGE(p, i, j) \
440  LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, LPC24XX_PIN_FUNCTION_01, 1, \
441  LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
442 
443 #define LPC24XX_PIN_EMC_CS_0 LPC24XX_PIN_EMC(4, 30)
444 #define LPC24XX_PIN_EMC_CS_1 LPC24XX_PIN_EMC(4, 31)
445 #define LPC24XX_PIN_EMC_CS_2 LPC24XX_PIN_EMC(2, 14)
446 #define LPC24XX_PIN_EMC_CS_3 LPC24XX_PIN_EMC(2, 15)
447 
448 #define LPC24XX_PIN_EMC_DYCS_0 LPC24XX_PIN_EMC(2, 20)
449 #define LPC24XX_PIN_EMC_DYCS_1 LPC24XX_PIN_EMC(2, 21)
450 #define LPC24XX_PIN_EMC_DYCS_2 LPC24XX_PIN_EMC(2, 22)
451 #define LPC24XX_PIN_EMC_DYCS_3 LPC24XX_PIN_EMC(2, 23)
452 
453 #define LPC24XX_PIN_EMC_OE LPC24XX_PIN_EMC(4, 24)
454 #define LPC24XX_PIN_EMC_WE LPC24XX_PIN_EMC(4, 25)
455 #define LPC24XX_PIN_EMC_CAS LPC24XX_PIN_EMC(2, 16)
456 #define LPC24XX_PIN_EMC_RAS LPC24XX_PIN_EMC(2, 17)
457 
458 #define LPC24XX_PIN_EMC_CLK_0 LPC24XX_PIN_EMC(2, 18)
459 #define LPC24XX_PIN_EMC_CLK_1 LPC24XX_PIN_EMC(2, 19)
460 
461 #define LPC24XX_PIN_EMC_CKE_0 LPC24XX_PIN_EMC(2, 24)
462 #define LPC24XX_PIN_EMC_CKE_1 LPC24XX_PIN_EMC(2, 25)
463 #define LPC24XX_PIN_EMC_CKE_2 LPC24XX_PIN_EMC(2, 26)
464 #define LPC24XX_PIN_EMC_CKE_3 LPC24XX_PIN_EMC(2, 27)
465 
466 #define LPC24XX_PIN_EMC_DQM_0 LPC24XX_PIN_EMC(2, 28)
467 #define LPC24XX_PIN_EMC_DQM_1 LPC24XX_PIN_EMC(2, 29)
468 #define LPC24XX_PIN_EMC_DQM_2 LPC24XX_PIN_EMC(2, 30)
469 #define LPC24XX_PIN_EMC_DQM_3 LPC24XX_PIN_EMC(2, 31)
470 
471 #define LPC24XX_PIN_EMC_BLS0 LPC24XX_PIN_EMC(4, 26)
472 #define LPC24XX_PIN_EMC_BLS1 LPC24XX_PIN_EMC(4, 27)
473 #define LPC24XX_PIN_EMC_BLS2 LPC24XX_PIN_EMC(4, 28)
474 #define LPC24XX_PIN_EMC_BLS3 LPC24XX_PIN_EMC(4, 29)
475 
476 #define LPC24XX_PIN_EMC_D_0_15 LPC24XX_PIN_EMC_RANGE(3, 0, 15)
477 #define LPC24XX_PIN_EMC_D_15_31 LPC24XX_PIN_EMC_RANGE(3, 15, 31)
478 #define LPC24XX_PIN_EMC_D_0_31 LPC24XX_PIN_EMC_RANGE(3, 0, 31)
479 
480 #define LPC24XX_PIN_EMC_A_0_12 LPC24XX_PIN_EMC_RANGE(4, 0, 12)
481 #define LPC24XX_PIN_EMC_A_0_13 LPC24XX_PIN_EMC_RANGE(4, 0, 13)
482 #define LPC24XX_PIN_EMC_A_0_14 LPC24XX_PIN_EMC_RANGE(4, 0, 14)
483 #define LPC24XX_PIN_EMC_A_0_15 LPC24XX_PIN_EMC_RANGE(4, 0, 15)
484 #define LPC24XX_PIN_EMC_A_0_16 \
485  LPC24XX_PIN_EMC_A_0_15, \
486  LPC24XX_PIN_EMC(4, 16)
487 #define LPC24XX_PIN_EMC_A_0_17 \
488  LPC24XX_PIN_EMC_A_0_15, \
489  LPC24XX_PIN_EMC_RANGE(4, 16, 17)
490 #define LPC24XX_PIN_EMC_A_0_18 \
491  LPC24XX_PIN_EMC_A_0_15, \
492  LPC24XX_PIN_EMC_RANGE(4, 16, 18)
493 #define LPC24XX_PIN_EMC_A_0_19 \
494  LPC24XX_PIN_EMC_A_0_15, \
495  LPC24XX_PIN_EMC_RANGE(4, 16, 19)
496 #define LPC24XX_PIN_EMC_A_0_20 \
497  LPC24XX_PIN_EMC_A_0_15, \
498  LPC24XX_PIN_EMC_RANGE(4, 16, 20)
499 #define LPC24XX_PIN_EMC_A_0_21 \
500  LPC24XX_PIN_EMC_A_0_15, \
501  LPC24XX_PIN_EMC_RANGE(4, 16, 21)
502 #define LPC24XX_PIN_EMC_A_0_22 \
503  LPC24XX_PIN_EMC_A_0_15, \
504  LPC24XX_PIN_EMC_RANGE(4, 16, 22)
505 #define LPC24XX_PIN_EMC_A_0_23 \
506  LPC24XX_PIN_EMC_A_0_15, \
507  LPC24XX_PIN_EMC_RANGE(4, 16, 23)
508 #define LPC24XX_PIN_EMC_A_0_24 \
509  LPC24XX_PIN_EMC_A_0_23, \
510  LPC24XX_PIN_EMC(5, 24)
511 #define LPC24XX_PIN_EMC_A_0_25 \
512  LPC24XX_PIN_EMC_A_0_23, \
513  LPC24XX_PIN_EMC_RANGE(5, 24, 25)
514 
523 #define LPC24XX_PIN_I2C_0_SDA \
524  LPC24XX_PIN_WITH_TYPE(0, 27, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
525 #define LPC24XX_PIN_I2C_0_SCL \
526  LPC24XX_PIN_WITH_TYPE(0, 28, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
527 
536 #define LPC24XX_PIN_I2C_1_SDA_P0_0 \
537  LPC24XX_PIN_WITH_TYPE(0, 0, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
538 #define LPC24XX_PIN_I2C_1_SDA_P0_19 \
539  LPC24XX_PIN_WITH_TYPE(0, 19, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
540 #define LPC24XX_PIN_I2C_1_SDA_P2_14 \
541  LPC24XX_PIN_WITH_TYPE(2, 14, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
542 
543 #define LPC24XX_PIN_I2C_1_SCL_P0_1 \
544  LPC24XX_PIN_WITH_TYPE(0, 1, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
545 #define LPC24XX_PIN_I2C_1_SCL_P0_20 \
546  LPC24XX_PIN_WITH_TYPE(0, 20, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
547 #define LPC24XX_PIN_I2C_1_SCL_P2_15 \
548  LPC24XX_PIN_WITH_TYPE(2, 15, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
549 
558 #define LPC24XX_PIN_I2C_2_SDA_P0_10 \
559  LPC24XX_PIN_WITH_TYPE(0, 10, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
560 #define LPC24XX_PIN_I2C_2_SDA_P2_30 \
561  LPC24XX_PIN_WITH_TYPE(2, 30, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
562 #define LPC24XX_PIN_I2C_2_SDA_P4_20 \
563  LPC24XX_PIN_WITH_TYPE(4, 20, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
564 
565 #define LPC24XX_PIN_I2C_2_SCL_P0_11 \
566  LPC24XX_PIN_WITH_TYPE(0, 11, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
567 #define LPC24XX_PIN_I2C_2_SCL_P2_31 \
568  LPC24XX_PIN_WITH_TYPE(2, 31, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
569 #define LPC24XX_PIN_I2C_2_SCL_P4_21 \
570  LPC24XX_PIN_WITH_TYPE(4, 21, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
571 
580 #define LPC24XX_PIN_I2S_RX_CLK_P0_4 \
581  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 1)
582 #define LPC24XX_PIN_I2S_RX_CLK_P0_23 \
583  LPC24XX_PIN(0, 23, LPC24XX_PIN_FUNCTION_10, 2)
584 
585 #define LPC24XX_PIN_I2S_RX_WS_P0_5 \
586  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 1)
587 #define LPC24XX_PIN_I2S_RX_WS_P0_24 \
588  LPC24XX_PIN(0, 24, LPC24XX_PIN_FUNCTION_10, 2)
589 
590 #define LPC24XX_PIN_I2S_RX_SDA_P0_6 \
591  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 1)
592 #define LPC24XX_PIN_I2S_RX_SDA_P0_25 \
593  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_10, 2)
594 
595 #define LPC24XX_PIN_I2S_TX_CLK_P0_7 \
596  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 1)
597 #define LPC24XX_PIN_I2S_TX_CLK_P2_11 \
598  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_11, 3)
599 
600 #define LPC24XX_PIN_I2S_TX_WS_P0_8 \
601  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 1)
602 #define LPC24XX_PIN_I2S_TX_WS_P2_12 \
603  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_11, 3)
604 
605 #define LPC24XX_PIN_I2S_TX_SDA_P0_9 \
606  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 1)
607 #define LPC24XX_PIN_I2S_TX_SDA_P2_13 \
608  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_11, 3)
609 
618 #define LPC24XX_PIN_LCD_PWR \
619  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_11, 7)
620 #define LPC24XX_PIN_LCD_LE \
621  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_11, 7)
622 #define LPC24XX_PIN_LCD_DCLK \
623  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_11, 7)
624 #define LPC24XX_PIN_LCD_FP \
625  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_11, 7)
626 #define LPC24XX_PIN_LCD_ENAB_M \
627  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_11, 7)
628 #define LPC24XX_PIN_LCD_LP \
629  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_11, 7)
630 #define LPC24XX_PIN_LCD_CLKIN \
631  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 7)
632 
633 #define LPC24XX_PIN_LCD_VD_0_P0_4 \
634  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 7)
635 #define LPC24XX_PIN_LCD_VD_0_P2_6 \
636  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 6)
637 #define LPC24XX_PIN_LCD_VD_1_P0_5 \
638  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 7)
639 #define LPC24XX_PIN_LCD_VD_1_P2_7 \
640  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 6)
641 #define LPC24XX_PIN_LCD_VD_2_P2_8 \
642  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 6)
643 #define LPC24XX_PIN_LCD_VD_2_P4_28 \
644  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 7)
645 #define LPC24XX_PIN_LCD_VD_3_P2_9 \
646  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 6)
647 #define LPC24XX_PIN_LCD_VD_3_P2_12 \
648  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 5)
649 #define LPC24XX_PIN_LCD_VD_3_P4_29 \
650  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 7)
651 #define LPC24XX_PIN_LCD_VD_4_P2_6 \
652  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 7)
653 #define LPC24XX_PIN_LCD_VD_4_P2_12 \
654  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 4)
655 #define LPC24XX_PIN_LCD_VD_5_P2_7 \
656  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 7)
657 #define LPC24XX_PIN_LCD_VD_5_P2_13 \
658  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 5)
659 #define LPC24XX_PIN_LCD_VD_6_P1_20 \
660  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 6)
661 #define LPC24XX_PIN_LCD_VD_6_P2_8 \
662  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 7)
663 #define LPC24XX_PIN_LCD_VD_6_P4_28 \
664  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 5)
665 #define LPC24XX_PIN_LCD_VD_7_P1_21 \
666  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 6)
667 #define LPC24XX_PIN_LCD_VD_7_P2_9 \
668  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 7)
669 #define LPC24XX_PIN_LCD_VD_7_P4_29 \
670  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 5)
671 #define LPC24XX_PIN_LCD_VD_8_P0_6 \
672  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 7)
673 #define LPC24XX_PIN_LCD_VD_8_P1_22 \
674  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 6)
675 #define LPC24XX_PIN_LCD_VD_8_P2_12 \
676  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 6)
677 #define LPC24XX_PIN_LCD_VD_9_P0_7 \
678  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 7)
679 #define LPC24XX_PIN_LCD_VD_9_P1_23 \
680  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 6)
681 #define LPC24XX_PIN_LCD_VD_9_P2_13 \
682  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 6)
683 #define LPC24XX_PIN_LCD_VD_10_P1_20 \
684  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 7)
685 #define LPC24XX_PIN_LCD_VD_10_P1_24 \
686  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 6)
687 #define LPC24XX_PIN_LCD_VD_10_P4_28 \
688  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 6)
689 #define LPC24XX_PIN_LCD_VD_11_P1_21 \
690  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 7)
691 #define LPC24XX_PIN_LCD_VD_11_P1_25 \
692  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 6)
693 #define LPC24XX_PIN_LCD_VD_11_P4_29 \
694  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 6)
695 #define LPC24XX_PIN_LCD_VD_12_P1_22 \
696  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 7)
697 #define LPC24XX_PIN_LCD_VD_12_P1_26 \
698  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 6)
699 #define LPC24XX_PIN_LCD_VD_13_P1_23 \
700  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 7)
701 #define LPC24XX_PIN_LCD_VD_13_P1_27 \
702  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 6)
703 #define LPC24XX_PIN_LCD_VD_14_P1_24 \
704  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 7)
705 #define LPC24XX_PIN_LCD_VD_14_P1_28 \
706  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 6)
707 #define LPC24XX_PIN_LCD_VD_15_P1_25 \
708  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 7)
709 #define LPC24XX_PIN_LCD_VD_15_P1_29 \
710  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 6)
711 #define LPC24XX_PIN_LCD_VD_16_P0_8 \
712  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 7)
713 #define LPC24XX_PIN_LCD_VD_17_P0_9 \
714  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 7)
715 #define LPC24XX_PIN_LCD_VD_18_P2_12 \
716  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 7)
717 #define LPC24XX_PIN_LCD_VD_19_P2_13 \
718  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 7)
719 #define LPC24XX_PIN_LCD_VD_20_P1_26 \
720  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 7)
721 #define LPC24XX_PIN_LCD_VD_21_P1_27 \
722  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 7)
723 #define LPC24XX_PIN_LCD_VD_22_P1_28 \
724  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 7)
725 #define LPC24XX_PIN_LCD_VD_23_P1_29 \
726  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 7)
727 
736 #define LPC24XX_PIN_PWM_0_CHANNEL_1_P1_2 \
737  LPC24XX_PIN(1, 2, LPC24XX_PIN_FUNCTION_11, 3)
738 #define LPC24XX_PIN_PWM_0_CHANNEL_1_P3_16 \
739  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_10, 2)
740 
741 #define LPC24XX_PIN_PWM_0_CHANNEL_2_P1_3 \
742  LPC24XX_PIN(1, 3, LPC24XX_PIN_FUNCTION_11, 3)
743 #define LPC24XX_PIN_PWM_0_CHANNEL_2_P3_17 \
744  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_10, 2)
745 
746 #define LPC24XX_PIN_PWM_0_CHANNEL_3_P1_5 \
747  LPC24XX_PIN(1, 5, LPC24XX_PIN_FUNCTION_11, 3)
748 #define LPC24XX_PIN_PWM_0_CHANNEL_3_P3_18 \
749  LPC24XX_PIN(3, 18, LPC24XX_PIN_FUNCTION_10, 2)
750 
751 #define LPC24XX_PIN_PWM_0_CHANNEL_4_P1_6 \
752  LPC24XX_PIN(1, 6, LPC24XX_PIN_FUNCTION_11, 3)
753 #define LPC24XX_PIN_PWM_0_CHANNEL_4_P3_19 \
754  LPC24XX_PIN(3, 19, LPC24XX_PIN_FUNCTION_10, 2)
755 
756 #define LPC24XX_PIN_PWM_0_CHANNEL_5_P1_7 \
757  LPC24XX_PIN(1, 7, LPC24XX_PIN_FUNCTION_11, 3)
758 #define LPC24XX_PIN_PWM_0_CHANNEL_5_P3_20 \
759  LPC24XX_PIN(3, 20, LPC24XX_PIN_FUNCTION_10, 2)
760 
761 #define LPC24XX_PIN_PWM_0_CHANNEL_6_P1_11 \
762  LPC24XX_PIN(1, 11, LPC24XX_PIN_FUNCTION_11, 3)
763 #define LPC24XX_PIN_PWM_0_CHANNEL_6_P3_21 \
764  LPC24XX_PIN(3, 21, LPC24XX_PIN_FUNCTION_10, 2)
765 
766 #define LPC24XX_PIN_PWM_0_CAPTURE_0_P1_12 \
767  LPC24XX_PIN(1, 12, LPC24XX_PIN_FUNCTION_11, 3)
768 #define LPC24XX_PIN_PWM_0_CAPTURE_0_P3_22 \
769  LPC24XX_PIN(3, 22, LPC24XX_PIN_FUNCTION_10, 2)
770 
779 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P1_18 \
780  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_10, 2)
781 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P2_0 \
782  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_01, 1)
783 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P3_24 \
784  LPC24XX_PIN(3, 24, LPC24XX_PIN_FUNCTION_11, 2)
785 
786 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P1_20 \
787  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_10, 2)
788 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P2_1 \
789  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_01, 1)
790 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P3_25 \
791  LPC24XX_PIN(3, 25, LPC24XX_PIN_FUNCTION_11, 2)
792 
793 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P1_21 \
794  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_10, 2)
795 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P2_2 \
796  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_01, 1)
797 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P3_26 \
798  LPC24XX_PIN(3, 26, LPC24XX_PIN_FUNCTION_11, 2)
799 
800 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P1_23 \
801  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_10, 2)
802 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P2_3 \
803  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_01, 1)
804 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P3_27 \
805  LPC24XX_PIN(3, 27, LPC24XX_PIN_FUNCTION_11, 2)
806 
807 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P1_24 \
808  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_10, 2)
809 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P2_4 \
810  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_01, 1)
811 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P3_28 \
812  LPC24XX_PIN(3, 28, LPC24XX_PIN_FUNCTION_11, 2)
813 
814 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P1_26 \
815  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_10, 2)
816 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P2_5 \
817  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_01, 1)
818 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P3_29 \
819  LPC24XX_PIN(3, 29, LPC24XX_PIN_FUNCTIO9_11, 2)
820 
821 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P1_28 \
822  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_10, 2)
823 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P2_7 \
824  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_01, 1)
825 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P3_23 \
826  LPC24XX_PIN(3, 23, LPC24XX_PIN_FUNCTION_11, 2)
827 
828 #define LPC24XX_PIN_PWM_1_CAPTURE_1_P1_29 \
829  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_10, 2)
830 
833 #ifdef ARM_MULTILIB_ARCH_V4
834 
841 #define LPC24XX_PIN_SPI_SCK \
842  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_11)
843 #define LPC24XX_PIN_SPI_SSEL \
844  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_11)
845 #define LPC24XX_PIN_SPI_MISO \
846  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_11)
847 #define LPC24XX_PIN_SPI_MOSI \
848  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_11)
849 
852 #endif /* ARM_MULTILIB_ARCH_V4 */
853 
860 #define LPC24XX_PIN_SSP_0_SCK_P0_15 \
861  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_10, 2)
862 #define LPC24XX_PIN_SSP_0_SCK_P1_20 \
863  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_11, 5)
864 #define LPC24XX_PIN_SSP_0_SCK_P2_22 \
865  LPC24XX_PIN(2, 22, LPC24XX_PIN_FUNCTION_11, 2)
866 
867 #define LPC24XX_PIN_SSP_0_SSEL_P0_16 \
868  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_10, 2)
869 #define LPC24XX_PIN_SSP_0_SSEL_P1_21 \
870  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_11, 3)
871 #define LPC24XX_PIN_SSP_0_SSEL_P2_23 \
872  LPC24XX_PIN(2, 23, LPC24XX_PIN_FUNCTION_11, 2)
873 
874 #define LPC24XX_PIN_SSP_0_MISO_P0_17 \
875  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_10, 2)
876 #define LPC24XX_PIN_SSP_0_MISO_P1_23 \
877  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_11, 5)
878 #define LPC24XX_PIN_SSP_0_MISO_P2_26 \
879  LPC24XX_PIN(2, 26, LPC24XX_PIN_FUNCTION_11, 2)
880 
881 #define LPC24XX_PIN_SSP_0_MOSI_P0_18 \
882  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_10, 2)
883 #define LPC24XX_PIN_SSP_0_MOSI_P1_24 \
884  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_11, 5)
885 #define LPC24XX_PIN_SSP_0_MOSI_P2_27 \
886  LPC24XX_PIN(2, 27, LPC24XX_PIN_FUNCTION_11, 2)
887 
896 #define LPC24XX_PIN_SSP_1_SCK_P0_6 \
897  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_10, 2)
898 #define LPC24XX_PIN_SSP_1_SCK_P0_12 \
899  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_10, 2)
900 #define LPC24XX_PIN_SSP_1_SCK_P4_20 \
901  LPC24XX_PIN(4, 20, LPC24XX_PIN_FUNCTION_11, 3)
902 
903 #define LPC24XX_PIN_SSP_1_SSEL_P0_7 \
904  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_10, 2)
905 #define LPC24XX_PIN_SSP_1_SSEL_P0_13 \
906  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_11, 2)
907 #define LPC24XX_PIN_SSP_1_SSEL_P4_21 \
908  LPC24XX_PIN(4, 21, LPC24XX_PIN_FUNCTION_11, 3)
909 
910 #define LPC24XX_PIN_SSP_1_MISO_P0_8 \
911  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_10, 2)
912 #define LPC24XX_PIN_SSP_1_MISO_P0_14 \
913  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_10, 2)
914 #define LPC24XX_PIN_SSP_1_MISO_P4_22 \
915  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_11, 3)
916 
917 #define LPC24XX_PIN_SSP_1_MOSI_P0_9 \
918  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_10, 2)
919 #define LPC24XX_PIN_SSP_1_MOSI_P1_31 \
920  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_10, 2)
921 #define LPC24XX_PIN_SSP_1_MOSI_P4_23 \
922  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_11, 3)
923 
926 #ifdef ARM_MULTILIB_ARCH_V7M
927 
934 #define LPC24XX_PIN_SSP_2_SCK_P1_0 \
935  LPC24XX_PIN(1, 0, LPC24XX_PIN_FUNCTION_00, 4)
936 #define LPC24XX_PIN_SSP_2_SCK_P5_2 \
937  LPC24XX_PIN(5, 2, LPC24XX_PIN_FUNCTION_00, 2)
938 
939 #define LPC24XX_PIN_SSP_2_SSEL_P1_8 \
940  LPC24XX_PIN(1, 8, LPC24XX_PIN_FUNCTION_00, 4)
941 #define LPC24XX_PIN_SSP_2_SSEL_P5_3 \
942  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 2)
943 
944 #define LPC24XX_PIN_SSP_2_MISO_P1_4 \
945  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_00, 4)
946 #define LPC24XX_PIN_SSP_2_MISO_P5_1 \
947  LPC24XX_PIN(5, 1, LPC24XX_PIN_FUNCTION_00, 2)
948 
949 #define LPC24XX_PIN_SSP_2_MOSI_P1_1 \
950  LPC24XX_PIN(1, 1, LPC24XX_PIN_FUNCTION_00, 4)
951 #define LPC24XX_PIN_SSP_2_MOSI_P5_0 \
952  LPC24XX_PIN(5, 0, LPC24XX_PIN_FUNCTION_00, 2)
953 
956 #endif /* ARM_MULTILIB_ARCH_V7M */
957 
964 #define LPC24XX_PIN_UART_0_TXD \
965  LPC24XX_PIN(0, 2, LPC24XX_PIN_FUNCTION_01, 1)
966 
967 #define LPC24XX_PIN_UART_0_RXD \
968  LPC24XX_PIN(0, 3, LPC24XX_PIN_FUNCTION_01, 1)
969 
978 #define LPC24XX_PIN_UART_1_TXD_P0_15 \
979  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_01, 1)
980 #define LPC24XX_PIN_UART_1_TXD_P2_0 \
981  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_10, 2)
982 #define LPC24XX_PIN_UART_1_TXD_P3_16 \
983  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_11, 3)
984 
985 #define LPC24XX_PIN_UART_1_RXD_P0_16 \
986  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_01, 1)
987 #define LPC24XX_PIN_UART_1_RXD_P2_1 \
988  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_10, 2)
989 #define LPC24XX_PIN_UART_1_RXD_P3_17 \
990  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_11, 3)
991 
1000 #define LPC24XX_PIN_UART_2_TXD_P0_10 \
1001  LPC24XX_PIN(0, 10, LPC24XX_PIN_FUNCTION_01, 1)
1002 #define LPC24XX_PIN_UART_2_TXD_P2_8 \
1003  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_10, 2)
1004 #define LPC24XX_PIN_UART_2_TXD_P4_22 \
1005  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_10, 2)
1006 
1007 #define LPC24XX_PIN_UART_2_RXD_P0_11 \
1008  LPC24XX_PIN(0, 11, LPC24XX_PIN_FUNCTION_01, 1)
1009 #define LPC24XX_PIN_UART_2_RXD_P2_9 \
1010  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_10, 2)
1011 #define LPC24XX_PIN_UART_2_RXD_P4_23 \
1012  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_10, 2)
1013 
1022 #define LPC24XX_PIN_UART_3_TXD_P0_0 \
1023  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_10, 2)
1024 #define LPC24XX_PIN_UART_3_TXD_P0_25 \
1025  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_11, 3)
1026 #define LPC24XX_PIN_UART_3_TXD_P4_28 \
1027  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_11, 2)
1028 
1029 #define LPC24XX_PIN_UART_3_RXD_P0_1 \
1030  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_10, 2)
1031 #define LPC24XX_PIN_UART_3_RXD_P0_26 \
1032  LPC24XX_PIN(0, 26, LPC24XX_PIN_FUNCTION_11, 3)
1033 #define LPC24XX_PIN_UART_3_RXD_P4_29 \
1034  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_11, 2)
1035 
1038 #ifdef ARM_MULTILIB_ARCH_V7M
1039 
1046 #define LPC24XX_PIN_UART_4_TXD_P0_22 \
1047  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_00, 3)
1048 #define LPC24XX_PIN_UART_4_TXD_P1_29 \
1049  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_00, 5)
1050 #define LPC24XX_PIN_UART_4_TXD_P5_4 \
1051  LPC24XX_PIN(5, 4, LPC24XX_PIN_FUNCTION_00, 4)
1052 
1053 #define LPC24XX_PIN_UART_4_RXD_P2_9 \
1054  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_00, 3)
1055 #define LPC24XX_PIN_UART_4_RXD_P5_3 \
1056  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 4)
1057 
1058 #define LPC24XX_PIN_UART_4_OE_P0_21 \
1059  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 3)
1060 
1061 #define LPC24XX_PIN_UART_4_SCLK_P0_21 \
1062  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 5)
1063 
1064 #endif /* ARM_MULTILIB_ARCH_V7M */
1065 
1074 #define LPC24XX_PIN_USB_D_PLUS_1\
1075  LPC24XX_PIN(0, 29, LPC24XX_PIN_FUNCTION_01, 1)
1076 #define LPC24XX_PIN_USB_D_MINUS_1\
1077  LPC24XX_PIN(0, 30, LPC24XX_PIN_FUNCTION_01, 1)
1078 #define LPC24XX_PIN_USB_UP_LED_1\
1079  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_01, 1)
1080 #define LPC24XX_PIN_USB_TX_E_1\
1081  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_01, 1)
1082 #define LPC24XX_PIN_USB_PPWR_1\
1083  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_10, 2)
1084 #define LPC24XX_PIN_USB_TX_DP_1\
1085  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 1)
1086 #define LPC24XX_PIN_USB_TX_DM_1\
1087  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 1)
1088 #define LPC24XX_PIN_USB_RCV_1\
1089  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 1)
1090 #define LPC24XX_PIN_USB_PWRD_1\
1091  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_10, 2)
1092 #define LPC24XX_PIN_USB_RX_DP_1\
1093  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 1)
1094 #define LPC24XX_PIN_USB_RX_DM_1\
1095  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 1)
1096 #define LPC24XX_PIN_USB_LS_1\
1097  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 1)
1098 #define LPC24XX_PIN_USB_HSTEN_1\
1099  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_10, 2)
1100 #define LPC24XX_PIN_USB_SSPND_1\
1101  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 1)
1102 #define LPC24XX_PIN_USB_INT_1\
1103  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 1)
1104 #define LPC24XX_PIN_USB_OVRCR_1\
1105  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
1106 #define LPC24XX_PIN_USB_SCL_1\
1107  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
1108 #define LPC24XX_PIN_USB_SDA_1 \
1109  LPC24XX_PIN_WITH_TYPE( \
1110  1, 29, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_OPEN_DRAIN \
1111  )
1112 #define LPC24XX_PIN_USB_CONNECT_1\
1113  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
1114 
1123 #define LPC24XX_PIN_USB_PPWR_2\
1124  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_01, 1)
1125 #define LPC24XX_PIN_USB_UP_LED_2\
1126  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_01, 1)
1127 #define LPC24XX_PIN_USB_HSTEN_2\
1128  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 1)
1129 #define LPC24XX_PIN_USB_CONNECT_2\
1130  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 3)
1131 #define LPC24XX_PIN_USB_D_PLUS_2\
1132  LPC24XX_PIN(0, 31, LPC24XX_PIN_FUNCTION_01, 1)
1133 #define LPC24XX_PIN_USB_PWRD_2\
1134  LPC24XX_PIN(1, 30, LPC24XX_PIN_FUNCTION_01, 1)
1135 #define LPC24XX_PIN_USB_OVRCR_2\
1136  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_01, 1)
1137 
1142 #ifdef __cplusplus
1143 }
1144 #endif /* __cplusplus */
1145 
1146 #endif /* LIBBSP_ARM_LPC24XX_IO_H */
Register definitions.
Definition: io.h:224
Sets the pin function.
Definition: io.h:206
rtems_status_code
Classic API Status.
Definition: status.h:43
lpc24xx_pin_action
Definition: io.h:202
Checks if all pins are configured as input.
Definition: io.h:221
rtems_status_code lpc24xx_pin_config(const lpc24xx_pin_range *pins, lpc24xx_pin_action action)
Performs the action with the pins.
Definition: io.c:517
Checks if all pins are configured with the specified function.
Definition: io.h:211
Configures the pins as input.
Definition: io.h:216