RTEMS  5.0.0
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 #define LPC24XX_IO_PORT_COUNT 5U
45 
46 #define LPC24XX_IO_INDEX_MAX (LPC24XX_IO_PORT_COUNT * 32U)
47 
48 #define LPC24XX_IO_INDEX_BY_PORT(port, bit) (((port) << 5U) + (bit))
49 
50 #define LPC24XX_IO_PORT(index) ((index) >> 5U)
51 
52 #define LPC24XX_IO_PORT_BIT(index) ((index) & 0x1fU)
53 
54 typedef enum {
55  #ifdef ARM_MULTILIB_ARCH_V4
56  LPC24XX_MODULE_ACF,
57  #endif
58  LPC24XX_MODULE_ADC,
59  #ifdef ARM_MULTILIB_ARCH_V4
60  LPC24XX_MODULE_BAT_RAM,
61  #endif
62  LPC24XX_MODULE_CAN_0,
63  LPC24XX_MODULE_CAN_1,
64  LPC24XX_MODULE_DAC,
65  LPC24XX_MODULE_EMC,
66  LPC24XX_MODULE_ETHERNET,
67  LPC24XX_MODULE_GPDMA,
68  LPC24XX_MODULE_GPIO,
69  LPC24XX_MODULE_I2C_0,
70  LPC24XX_MODULE_I2C_1,
71  LPC24XX_MODULE_I2C_2,
72  LPC24XX_MODULE_I2S,
73  LPC24XX_MODULE_LCD,
74  LPC24XX_MODULE_MCI,
75  #ifdef ARM_MULTILIB_ARCH_V7M
76  LPC24XX_MODULE_MCPWM,
77  #endif
78  LPC24XX_MODULE_PCB,
79  LPC24XX_MODULE_PWM_0,
80  LPC24XX_MODULE_PWM_1,
81  #ifdef ARM_MULTILIB_ARCH_V7M
82  LPC24XX_MODULE_QEI,
83  #endif
84  LPC24XX_MODULE_RTC,
85  #ifdef ARM_MULTILIB_ARCH_V4
86  LPC24XX_MODULE_SPI,
87  #endif
88  LPC24XX_MODULE_SSP_0,
89  LPC24XX_MODULE_SSP_1,
90  #ifdef ARM_MULTILIB_ARCH_V7M
91  LPC24XX_MODULE_SSP_2,
92  #endif
93  LPC24XX_MODULE_SYSCON,
94  LPC24XX_MODULE_TIMER_0,
95  LPC24XX_MODULE_TIMER_1,
96  LPC24XX_MODULE_TIMER_2,
97  LPC24XX_MODULE_TIMER_3,
98  LPC24XX_MODULE_UART_0,
99  LPC24XX_MODULE_UART_1,
100  LPC24XX_MODULE_UART_2,
101  LPC24XX_MODULE_UART_3,
102  #ifdef ARM_MULTILIB_ARCH_V7M
103  LPC24XX_MODULE_UART_4,
104  #endif
105  #ifdef ARM_MULTILIB_ARCH_V4
106  LPC24XX_MODULE_WDT,
107  #endif
108  LPC24XX_MODULE_USB
109 } lpc24xx_module;
110 
111 #define LPC24XX_MODULE_COUNT (LPC24XX_MODULE_USB + 1)
112 
113 typedef enum {
114  LPC24XX_MODULE_PCLK_DEFAULT = 0x4U,
115  LPC24XX_MODULE_CCLK = 0x1U,
116  LPC24XX_MODULE_CCLK_2 = 0x2U,
117  LPC24XX_MODULE_CCLK_4 = 0x0U,
118  LPC24XX_MODULE_CCLK_6 = 0x3U,
119  LPC24XX_MODULE_CCLK_8 = 0x3U
120 } lpc24xx_module_clock;
121 
122 #define LPC24XX_MODULE_CLOCK_MASK 0x3U
123 
124 typedef enum {
125  LPC24XX_GPIO_DEFAULT = 0x0U,
126  LPC24XX_GPIO_RESISTOR_PULL_UP = 0x0U,
127  LPC24XX_GPIO_RESISTOR_NONE = 0x1U,
128  LPC24XX_GPIO_RESISTOR_PULL_DOWN = 0x2U,
129  LPC24XX_GPIO_INPUT = 0x0U,
130  #ifdef ARM_MULTILIB_ARCH_V7M
131  LPC17XX_GPIO_REPEATER = 0x3U,
132  LPC17XX_GPIO_HYSTERESIS = IOCON_HYS,
133  LPC17XX_GPIO_INPUT_INVERT = IOCON_INV,
134  LPC17XX_GPIO_FAST_MODE = IOCON_SLEW,
135  LPC17XX_GPIO_OPEN_DRAIN = IOCON_OD,
136  LPC17XX_GPIO_INPUT_FILTER = IOCON_FILTER,
137  #endif
138  LPC24XX_GPIO_OUTPUT = 0x8000U
139 } lpc24xx_gpio_settings;
140 
141 rtems_status_code lpc24xx_module_enable(
142  lpc24xx_module module,
143  lpc24xx_module_clock clock
144 );
145 
146 rtems_status_code lpc24xx_module_disable(
147  lpc24xx_module module
148 );
149 
150 bool lpc24xx_module_is_enabled(lpc24xx_module module);
151 
152 rtems_status_code lpc24xx_gpio_config(
153  unsigned index,
154  lpc24xx_gpio_settings settings
155 );
156 
157 static inline void lpc24xx_gpio_set(unsigned index)
158 {
159  if (index <= LPC24XX_IO_INDEX_MAX) {
160  unsigned port = LPC24XX_IO_PORT(index);
161  unsigned bit = LPC24XX_IO_PORT_BIT(index);
162 
163  LPC24XX_FIO [port].set = 1U << bit;
164  }
165 }
166 
167 static inline void lpc24xx_gpio_clear(unsigned index)
168 {
169  if (index <= LPC24XX_IO_INDEX_MAX) {
170  unsigned port = LPC24XX_IO_PORT(index);
171  unsigned bit = LPC24XX_IO_PORT_BIT(index);
172 
173  LPC24XX_FIO [port].clr = 1U << bit;
174  }
175 }
176 
177 static inline void lpc24xx_gpio_write(unsigned index, bool value)
178 {
179  if (value) {
180  lpc24xx_gpio_set(index);
181  } else {
182  lpc24xx_gpio_clear(index);
183  }
184 }
185 
186 static inline bool lpc24xx_gpio_get(unsigned index)
187 {
188  if (index <= LPC24XX_IO_INDEX_MAX) {
189  unsigned port = LPC24XX_IO_PORT(index);
190  unsigned bit = LPC24XX_IO_PORT_BIT(index);
191 
192  return (LPC24XX_FIO [port].pin & (1U << bit)) != 0;
193  } else {
194  return false;
195  }
196 }
197 
198 typedef enum {
203 
208 
213 
219 
220 typedef union {
221  struct {
222  uint16_t port : 3;
223  uint16_t port_bit : 5;
224  uint16_t function : 3;
225  uint16_t type : 4;
226  uint16_t range : 1;
227  } fields;
228  uint16_t value;
230 
231 typedef enum {
232  LPC24XX_PIN_FUNCTION_00,
233  LPC24XX_PIN_FUNCTION_01,
234  LPC24XX_PIN_FUNCTION_10,
235  LPC24XX_PIN_FUNCTION_11
236 } lpc24xx_pin_function;
237 
238 typedef enum {
239  LPC17XX_PIN_TYPE_DEFAULT,
240  LPC17XX_PIN_TYPE_ADC,
241  LPC17XX_PIN_TYPE_DAC,
242  LPC17XX_PIN_TYPE_I2C,
243  LPC17XX_PIN_TYPE_I2C_FAST_PLUS,
244  LPC17XX_PIN_TYPE_OPEN_DRAIN
245 } lpc17xx_pin_type;
246 
247 #ifdef ARM_MULTILIB_ARCH_V4
248  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f0, 0, 0 } }
249  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f0, t, 0 } }
250  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
251  { { p, i, f0, 0, 0 } }, { { p, j, f0, 0, 1 } }
252 #else
253  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f1, 0, 0 } }
254  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f1, t, 0 } }
255  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
256  { { p, i, f1, 0, 0 } }, { { p, j, f1, 0, 1 } }
257 #endif
258 
259 #define LPC24XX_PIN_TERMINAL { { 0x7, 0x1f, 0x7, 0xf, 0x1 } }
260 
293  const lpc24xx_pin_range *pins,
294  lpc24xx_pin_action action
295 );
296 
300 static inline unsigned lpc24xx_pin_get_first_index(
301  const lpc24xx_pin_range *range
302 )
303 {
304  return LPC24XX_IO_INDEX_BY_PORT(range->fields.port, range->fields.port_bit);
305 }
306 
313 #define LPC24XX_PIN_ADC_CHANNEL_0 \
314  LPC24XX_PIN_WITH_TYPE(0, 23, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
315 #define LPC24XX_PIN_ADC_CHANNEL_1 \
316  LPC24XX_PIN_WITH_TYPE(0, 24, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
317 #define LPC24XX_PIN_ADC_CHANNEL_2 \
318  LPC24XX_PIN_WITH_TYPE(0, 25, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
319 #define LPC24XX_PIN_ADC_CHANNEL_3 \
320  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
321 #define LPC24XX_PIN_ADC_CHANNEL_4 \
322  LPC24XX_PIN_WITH_TYPE(1, 30, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
323 #define LPC24XX_PIN_ADC_CHANNEL_5 \
324  LPC24XX_PIN_WITH_TYPE(1, 31, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
325 #define LPC24XX_PIN_ADC_CHANNEL_6 \
326  LPC24XX_PIN_WITH_TYPE(0, 12, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
327 #define LPC24XX_PIN_ADC_CHANNEL_7 \
328  LPC24XX_PIN_WITH_TYPE(0, 13, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
329 
338 #define LPC24XX_PIN_CAN_0_RD_P0_0 \
339  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_01, 1)
340 
341 #define LPC24XX_PIN_CAN_0_RD_P0_21 \
342  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_11, 4)
343 
344 #define LPC24XX_PIN_CAN_0_TD_P0_1 \
345  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_01, 1)
346 
347 #define LPC24XX_PIN_CAN_0_TD_P0_22 \
348  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_11, 4)
349 
358 #define LPC24XX_PIN_CAN_1_RD_P0_4 \
359  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_10, 2)
360 
361 #define LPC24XX_PIN_CAN_1_RD_P2_7 \
362  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_01, 1)
363 
364 #define LPC24XX_PIN_CAN_1_TD_P0_5 \
365  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_10, 2)
366 
367 #define LPC24XX_PIN_CAN_1_TD_P2_8 \
368  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_01, 1)
369 
378 #define LPC24XX_PIN_DAC \
379  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_DAC)
380 
389 #define LPC24XX_PIN_ETHERNET_MII \
390  LPC24XX_PIN_RANGE(1, 0, 17, LPC24XX_PIN_FUNCTION_01, 1)
391 
392 #define LPC24XX_PIN_ETHERNET_RMII_0 \
393  LPC24XX_PIN_RANGE(1, 0, 1, LPC24XX_PIN_FUNCTION_01, 1)
394 #define LPC24XX_PIN_ETHERNET_RMII_1 \
395  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_01, 1)
396 #define LPC24XX_PIN_ETHERNET_RMII_2 \
397  LPC24XX_PIN_RANGE(1, 8, 10, LPC24XX_PIN_FUNCTION_01, 1)
398 #define LPC24XX_PIN_ETHERNET_RMII_3 \
399  LPC24XX_PIN_RANGE(1, 14, 17, LPC24XX_PIN_FUNCTION_01, 1)
400 
409 #define LPC24XX_PIN_EINT_0 \
410  LPC24XX_PIN(2, 10, LPC24XX_PIN_FUNCTION_01, 1)
411 #define LPC24XX_PIN_EINT_1 \
412  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 1)
413 #define LPC24XX_PIN_EINT_2 \
414  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 1)
415 #define LPC24XX_PIN_EINT_3 \
416  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 1)
417 
426 #define LPC24XX_PIN_EMC_CS_0 \
427  LPC24XX_PIN(4, 30, LPC24XX_PIN_FUNCTION_01, 1)
428 #define LPC24XX_PIN_EMC_CS_1 \
429  LPC24XX_PIN(4, 31, LPC24XX_PIN_FUNCTION_01, 1)
430 #define LPC24XX_PIN_EMC_CS_2 \
431  LPC24XX_PIN(2, 14, LPC24XX_PIN_FUNCTION_01, 1)
432 #define LPC24XX_PIN_EMC_CS_3 \
433  LPC24XX_PIN(2, 15, LPC24XX_PIN_FUNCTION_01, 1)
434 
435 #define LPC24XX_PIN_EMC_DYCS_0 \
436  LPC24XX_PIN(2, 20, LPC24XX_PIN_FUNCTION_01, 1)
437 #define LPC24XX_PIN_EMC_DYCS_1 \
438  LPC24XX_PIN(2, 21, LPC24XX_PIN_FUNCTION_01, 1)
439 #define LPC24XX_PIN_EMC_DYCS_2 \
440  LPC24XX_PIN(2, 22, LPC24XX_PIN_FUNCTION_01, 1)
441 #define LPC24XX_PIN_EMC_DYCS_3 \
442  LPC24XX_PIN(2, 23, LPC24XX_PIN_FUNCTION_01, 1)
443 
444 #define LPC24XX_PIN_EMC_OE \
445  LPC24XX_PIN(4, 24, LPC24XX_PIN_FUNCTION_01, 1)
446 #define LPC24XX_PIN_EMC_WE \
447  LPC24XX_PIN(4, 25, LPC24XX_PIN_FUNCTION_01, 1)
448 #define LPC24XX_PIN_EMC_CAS \
449  LPC24XX_PIN(2, 16, LPC24XX_PIN_FUNCTION_01, 1)
450 #define LPC24XX_PIN_EMC_RAS \
451  LPC24XX_PIN(2, 17, LPC24XX_PIN_FUNCTION_01, 1)
452 
453 #define LPC24XX_PIN_EMC_CLK_0 \
454  LPC24XX_PIN(2, 18, LPC24XX_PIN_FUNCTION_01, 1)
455 #define LPC24XX_PIN_EMC_CLK_1 \
456  LPC24XX_PIN(2, 19, LPC24XX_PIN_FUNCTION_01, 1)
457 
458 #define LPC24XX_PIN_EMC_CKE_0 \
459  LPC24XX_PIN(2, 24, LPC24XX_PIN_FUNCTION_01, 1)
460 #define LPC24XX_PIN_EMC_CKE_1 \
461  LPC24XX_PIN(2, 25, LPC24XX_PIN_FUNCTION_01, 1)
462 #define LPC24XX_PIN_EMC_CKE_2 \
463  LPC24XX_PIN(2, 26, LPC24XX_PIN_FUNCTION_01, 1)
464 #define LPC24XX_PIN_EMC_CKE_3 \
465  LPC24XX_PIN(2, 27, LPC24XX_PIN_FUNCTION_01, 1)
466 
467 #define LPC24XX_PIN_EMC_DQM_0 \
468  LPC24XX_PIN(2, 28, LPC24XX_PIN_FUNCTION_01, 1)
469 #define LPC24XX_PIN_EMC_DQM_1 \
470  LPC24XX_PIN(2, 29, LPC24XX_PIN_FUNCTION_01, 1)
471 #define LPC24XX_PIN_EMC_DQM_2 \
472  LPC24XX_PIN(2, 30, LPC24XX_PIN_FUNCTION_01, 1)
473 #define LPC24XX_PIN_EMC_DQM_3 \
474  LPC24XX_PIN(2, 31, LPC24XX_PIN_FUNCTION_01, 1)
475 
476 #define LPC24XX_PIN_EMC_BLS0 \
477  LPC24XX_PIN(4, 26, LPC24XX_PIN_FUNCTION_01, 1)
478 #define LPC24XX_PIN_EMC_BLS1 \
479  LPC24XX_PIN(4, 27, LPC24XX_PIN_FUNCTION_01, 1)
480 #define LPC24XX_PIN_EMC_BLS2 \
481  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_01, 1)
482 #define LPC24XX_PIN_EMC_BLS3 \
483  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_01, 1)
484 
485 #define LPC24XX_PIN_EMC_D_0_15 \
486  LPC24XX_PIN_RANGE(3, 0, 15, LPC24XX_PIN_FUNCTION_01, 1)
487 #define LPC24XX_PIN_EMC_D_15_31 \
488  LPC24XX_PIN_RANGE(3, 15, 31, LPC24XX_PIN_FUNCTION_01, 1)
489 #define LPC24XX_PIN_EMC_D_0_31 \
490  LPC24XX_PIN_RANGE(3, 0, 31, LPC24XX_PIN_FUNCTION_01, 1)
491 
492 #define LPC24XX_PIN_EMC_A_0_12 \
493  LPC24XX_PIN_RANGE(4, 0, 12, LPC24XX_PIN_FUNCTION_01, 1)
494 #define LPC24XX_PIN_EMC_A_0_13 \
495  LPC24XX_PIN_RANGE(4, 0, 13, LPC24XX_PIN_FUNCTION_01, 1)
496 #define LPC24XX_PIN_EMC_A_0_14 \
497  LPC24XX_PIN_RANGE(4, 0, 14, LPC24XX_PIN_FUNCTION_01, 1)
498 #define LPC24XX_PIN_EMC_A_0_15 \
499  LPC24XX_PIN_RANGE(4, 0, 15, LPC24XX_PIN_FUNCTION_01, 1)
500 #define LPC24XX_PIN_EMC_A_0_16 \
501  LPC24XX_PIN_EMC_A_0_15, \
502  LPC24XX_PIN(4, 16, LPC24XX_PIN_FUNCTION_01, 1)
503 #define LPC24XX_PIN_EMC_A_0_17 \
504  LPC24XX_PIN_EMC_A_0_15, \
505  LPC24XX_PIN_RANGE(4, 16, 17, LPC24XX_PIN_FUNCTION_01, 1)
506 #define LPC24XX_PIN_EMC_A_0_18 \
507  LPC24XX_PIN_EMC_A_0_15, \
508  LPC24XX_PIN_RANGE(4, 16, 18, LPC24XX_PIN_FUNCTION_01, 1)
509 #define LPC24XX_PIN_EMC_A_0_19 \
510  LPC24XX_PIN_EMC_A_0_15, \
511  LPC24XX_PIN_RANGE(4, 16, 19, LPC24XX_PIN_FUNCTION_01, 1)
512 #define LPC24XX_PIN_EMC_A_0_20 \
513  LPC24XX_PIN_EMC_A_0_15, \
514  LPC24XX_PIN_RANGE(4, 16, 20, LPC24XX_PIN_FUNCTION_01, 1)
515 #define LPC24XX_PIN_EMC_A_0_21 \
516  LPC24XX_PIN_EMC_A_0_15, \
517  LPC24XX_PIN_RANGE(4, 16, 21, LPC24XX_PIN_FUNCTION_01, 1)
518 #define LPC24XX_PIN_EMC_A_0_22 \
519  LPC24XX_PIN_EMC_A_0_15, \
520  LPC24XX_PIN_RANGE(4, 16, 22, LPC24XX_PIN_FUNCTION_01, 1)
521 #define LPC24XX_PIN_EMC_A_0_23 \
522  LPC24XX_PIN_EMC_A_0_15, \
523  LPC24XX_PIN_RANGE(4, 16, 23, LPC24XX_PIN_FUNCTION_01, 1)
524 #define LPC24XX_PIN_EMC_A_0_24 \
525  LPC24XX_PIN_EMC_A_0_23, \
526  LPC24XX_PIN(5, 24, LPC24XX_PIN_FUNCTION_01, 1)
527 #define LPC24XX_PIN_EMC_A_0_25 \
528  LPC24XX_PIN_EMC_A_0_23, \
529  LPC24XX_PIN_RANGE(5, 24, 25, LPC24XX_PIN_FUNCTION_01, 1)
530 
539 #define LPC24XX_PIN_I2C_0_SDA \
540  LPC24XX_PIN_WITH_TYPE(0, 27, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
541 #define LPC24XX_PIN_I2C_0_SCL \
542  LPC24XX_PIN_WITH_TYPE(0, 28, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
543 
552 #define LPC24XX_PIN_I2C_1_SDA_P0_0 \
553  LPC24XX_PIN_WITH_TYPE(0, 0, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
554 #define LPC24XX_PIN_I2C_1_SDA_P0_19 \
555  LPC24XX_PIN_WITH_TYPE(0, 19, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
556 #define LPC24XX_PIN_I2C_1_SDA_P2_14 \
557  LPC24XX_PIN_WITH_TYPE(2, 14, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
558 
559 #define LPC24XX_PIN_I2C_1_SCL_P0_1 \
560  LPC24XX_PIN_WITH_TYPE(0, 1, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
561 #define LPC24XX_PIN_I2C_1_SCL_P0_20 \
562  LPC24XX_PIN_WITH_TYPE(0, 20, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
563 #define LPC24XX_PIN_I2C_1_SCL_P2_15 \
564  LPC24XX_PIN_WITH_TYPE(2, 15, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
565 
574 #define LPC24XX_PIN_I2C_2_SDA_P0_10 \
575  LPC24XX_PIN_WITH_TYPE(0, 10, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
576 #define LPC24XX_PIN_I2C_2_SDA_P2_30 \
577  LPC24XX_PIN_WITH_TYPE(2, 30, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
578 #define LPC24XX_PIN_I2C_2_SDA_P4_20 \
579  LPC24XX_PIN_WITH_TYPE(4, 20, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
580 
581 #define LPC24XX_PIN_I2C_2_SCL_P0_11 \
582  LPC24XX_PIN_WITH_TYPE(0, 11, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
583 #define LPC24XX_PIN_I2C_2_SCL_P2_31 \
584  LPC24XX_PIN_WITH_TYPE(2, 31, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
585 #define LPC24XX_PIN_I2C_2_SCL_P4_21 \
586  LPC24XX_PIN_WITH_TYPE(4, 21, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
587 
596 #define LPC24XX_PIN_I2S_RX_CLK_P0_4 \
597  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 1)
598 #define LPC24XX_PIN_I2S_RX_CLK_P0_23 \
599  LPC24XX_PIN(0, 23, LPC24XX_PIN_FUNCTION_10, 2)
600 
601 #define LPC24XX_PIN_I2S_RX_WS_P0_5 \
602  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 1)
603 #define LPC24XX_PIN_I2S_RX_WS_P0_24 \
604  LPC24XX_PIN(0, 24, LPC24XX_PIN_FUNCTION_10, 2)
605 
606 #define LPC24XX_PIN_I2S_RX_SDA_P0_6 \
607  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 1)
608 #define LPC24XX_PIN_I2S_RX_SDA_P0_25 \
609  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_10, 2)
610 
611 #define LPC24XX_PIN_I2S_TX_CLK_P0_7 \
612  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 1)
613 #define LPC24XX_PIN_I2S_TX_CLK_P2_11 \
614  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_11, 3)
615 
616 #define LPC24XX_PIN_I2S_TX_WS_P0_8 \
617  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 1)
618 #define LPC24XX_PIN_I2S_TX_WS_P2_12 \
619  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_11, 3)
620 
621 #define LPC24XX_PIN_I2S_TX_SDA_P0_9 \
622  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 1)
623 #define LPC24XX_PIN_I2S_TX_SDA_P2_13 \
624  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_11, 3)
625 
634 #define LPC24XX_PIN_LCD_PWR \
635  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_11, 7)
636 #define LPC24XX_PIN_LCD_LE \
637  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_11, 7)
638 #define LPC24XX_PIN_LCD_DCLK \
639  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_11, 7)
640 #define LPC24XX_PIN_LCD_FP \
641  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_11, 7)
642 #define LPC24XX_PIN_LCD_ENAB_M \
643  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_11, 7)
644 #define LPC24XX_PIN_LCD_LP \
645  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_11, 7)
646 #define LPC24XX_PIN_LCD_CLKIN \
647  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 7)
648 
649 #define LPC24XX_PIN_LCD_VD_0_P0_4 \
650  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 7)
651 #define LPC24XX_PIN_LCD_VD_0_P2_6 \
652  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 6)
653 #define LPC24XX_PIN_LCD_VD_1_P0_5 \
654  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 7)
655 #define LPC24XX_PIN_LCD_VD_1_P2_7 \
656  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 6)
657 #define LPC24XX_PIN_LCD_VD_2_P2_8 \
658  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 6)
659 #define LPC24XX_PIN_LCD_VD_2_P4_28 \
660  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 7)
661 #define LPC24XX_PIN_LCD_VD_3_P2_9 \
662  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 6)
663 #define LPC24XX_PIN_LCD_VD_3_P2_12 \
664  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 5)
665 #define LPC24XX_PIN_LCD_VD_3_P4_29 \
666  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 7)
667 #define LPC24XX_PIN_LCD_VD_4_P2_6 \
668  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 7)
669 #define LPC24XX_PIN_LCD_VD_4_P2_12 \
670  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 4)
671 #define LPC24XX_PIN_LCD_VD_5_P2_7 \
672  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 7)
673 #define LPC24XX_PIN_LCD_VD_5_P2_13 \
674  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 5)
675 #define LPC24XX_PIN_LCD_VD_6_P1_20 \
676  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 6)
677 #define LPC24XX_PIN_LCD_VD_6_P2_8 \
678  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 7)
679 #define LPC24XX_PIN_LCD_VD_6_P4_28 \
680  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 5)
681 #define LPC24XX_PIN_LCD_VD_7_P1_21 \
682  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 6)
683 #define LPC24XX_PIN_LCD_VD_7_P2_9 \
684  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 7)
685 #define LPC24XX_PIN_LCD_VD_7_P4_29 \
686  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 5)
687 #define LPC24XX_PIN_LCD_VD_8_P0_6 \
688  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 7)
689 #define LPC24XX_PIN_LCD_VD_8_P1_22 \
690  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 6)
691 #define LPC24XX_PIN_LCD_VD_8_P2_12 \
692  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 6)
693 #define LPC24XX_PIN_LCD_VD_9_P0_7 \
694  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 7)
695 #define LPC24XX_PIN_LCD_VD_9_P1_23 \
696  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 6)
697 #define LPC24XX_PIN_LCD_VD_9_P2_13 \
698  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 6)
699 #define LPC24XX_PIN_LCD_VD_10_P1_20 \
700  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 7)
701 #define LPC24XX_PIN_LCD_VD_10_P1_24 \
702  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 6)
703 #define LPC24XX_PIN_LCD_VD_10_P4_28 \
704  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 6)
705 #define LPC24XX_PIN_LCD_VD_11_P1_21 \
706  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 7)
707 #define LPC24XX_PIN_LCD_VD_11_P1_25 \
708  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 6)
709 #define LPC24XX_PIN_LCD_VD_11_P4_29 \
710  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 6)
711 #define LPC24XX_PIN_LCD_VD_12_P1_22 \
712  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 7)
713 #define LPC24XX_PIN_LCD_VD_12_P1_26 \
714  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 6)
715 #define LPC24XX_PIN_LCD_VD_13_P1_23 \
716  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 7)
717 #define LPC24XX_PIN_LCD_VD_13_P1_27 \
718  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 6)
719 #define LPC24XX_PIN_LCD_VD_14_P1_24 \
720  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 7)
721 #define LPC24XX_PIN_LCD_VD_14_P1_28 \
722  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 6)
723 #define LPC24XX_PIN_LCD_VD_15_P1_25 \
724  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 7)
725 #define LPC24XX_PIN_LCD_VD_15_P1_29 \
726  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 6)
727 #define LPC24XX_PIN_LCD_VD_16_P0_8 \
728  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 7)
729 #define LPC24XX_PIN_LCD_VD_17_P0_9 \
730  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 7)
731 #define LPC24XX_PIN_LCD_VD_18_P2_12 \
732  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 7)
733 #define LPC24XX_PIN_LCD_VD_19_P2_13 \
734  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 7)
735 #define LPC24XX_PIN_LCD_VD_20_P1_26 \
736  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 7)
737 #define LPC24XX_PIN_LCD_VD_21_P1_27 \
738  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 7)
739 #define LPC24XX_PIN_LCD_VD_22_P1_28 \
740  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 7)
741 #define LPC24XX_PIN_LCD_VD_23_P1_29 \
742  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 7)
743 
752 #define LPC24XX_PIN_PWM_0_CHANNEL_1_P1_2 \
753  LPC24XX_PIN(1, 2, LPC24XX_PIN_FUNCTION_11, 3)
754 #define LPC24XX_PIN_PWM_0_CHANNEL_1_P3_16 \
755  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_10, 2)
756 
757 #define LPC24XX_PIN_PWM_0_CHANNEL_2_P1_3 \
758  LPC24XX_PIN(1, 3, LPC24XX_PIN_FUNCTION_11, 3)
759 #define LPC24XX_PIN_PWM_0_CHANNEL_2_P3_17 \
760  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_10, 2)
761 
762 #define LPC24XX_PIN_PWM_0_CHANNEL_3_P1_5 \
763  LPC24XX_PIN(1, 5, LPC24XX_PIN_FUNCTION_11, 3)
764 #define LPC24XX_PIN_PWM_0_CHANNEL_3_P3_18 \
765  LPC24XX_PIN(3, 18, LPC24XX_PIN_FUNCTION_10, 2)
766 
767 #define LPC24XX_PIN_PWM_0_CHANNEL_4_P1_6 \
768  LPC24XX_PIN(1, 6, LPC24XX_PIN_FUNCTION_11, 3)
769 #define LPC24XX_PIN_PWM_0_CHANNEL_4_P3_19 \
770  LPC24XX_PIN(3, 19, LPC24XX_PIN_FUNCTION_10, 2)
771 
772 #define LPC24XX_PIN_PWM_0_CHANNEL_5_P1_7 \
773  LPC24XX_PIN(1, 7, LPC24XX_PIN_FUNCTION_11, 3)
774 #define LPC24XX_PIN_PWM_0_CHANNEL_5_P3_20 \
775  LPC24XX_PIN(3, 20, LPC24XX_PIN_FUNCTION_10, 2)
776 
777 #define LPC24XX_PIN_PWM_0_CHANNEL_6_P1_11 \
778  LPC24XX_PIN(1, 11, LPC24XX_PIN_FUNCTION_11, 3)
779 #define LPC24XX_PIN_PWM_0_CHANNEL_6_P3_21 \
780  LPC24XX_PIN(3, 21, LPC24XX_PIN_FUNCTION_10, 2)
781 
782 #define LPC24XX_PIN_PWM_0_CAPTURE_0_P1_12 \
783  LPC24XX_PIN(1, 12, LPC24XX_PIN_FUNCTION_11, 3)
784 #define LPC24XX_PIN_PWM_0_CAPTURE_0_P3_22 \
785  LPC24XX_PIN(3, 22, LPC24XX_PIN_FUNCTION_10, 2)
786 
795 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P1_18 \
796  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_10, 2)
797 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P2_0 \
798  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_01, 1)
799 #define LPC24XX_PIN_PWM_1_CHANNEL_1_P3_24 \
800  LPC24XX_PIN(3, 24, LPC24XX_PIN_FUNCTION_11, 2)
801 
802 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P1_20 \
803  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_10, 2)
804 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P2_1 \
805  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_01, 1)
806 #define LPC24XX_PIN_PWM_1_CHANNEL_2_P3_25 \
807  LPC24XX_PIN(3, 25, LPC24XX_PIN_FUNCTION_11, 2)
808 
809 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P1_21 \
810  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_10, 2)
811 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P2_2 \
812  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_01, 1)
813 #define LPC24XX_PIN_PWM_1_CHANNEL_3_P3_26 \
814  LPC24XX_PIN(3, 26, LPC24XX_PIN_FUNCTION_11, 2)
815 
816 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P1_23 \
817  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_10, 2)
818 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P2_3 \
819  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_01, 1)
820 #define LPC24XX_PIN_PWM_1_CHANNEL_4_P3_27 \
821  LPC24XX_PIN(3, 27, LPC24XX_PIN_FUNCTION_11, 2)
822 
823 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P1_24 \
824  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_10, 2)
825 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P2_4 \
826  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_01, 1)
827 #define LPC24XX_PIN_PWM_1_CHANNEL_5_P3_28 \
828  LPC24XX_PIN(3, 28, LPC24XX_PIN_FUNCTION_11, 2)
829 
830 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P1_26 \
831  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_10, 2)
832 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P2_5 \
833  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_01, 1)
834 #define LPC24XX_PIN_PWM_1_CHANNEL_6_P3_29 \
835  LPC24XX_PIN(3, 29, LPC24XX_PIN_FUNCTIO9_11, 2)
836 
837 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P1_28 \
838  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_10, 2)
839 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P2_7 \
840  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_01, 1)
841 #define LPC24XX_PIN_PWM_1_CAPTURE_0_P3_23 \
842  LPC24XX_PIN(3, 23, LPC24XX_PIN_FUNCTION_11, 2)
843 
844 #define LPC24XX_PIN_PWM_1_CAPTURE_1_P1_29 \
845  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_10, 2)
846 
849 #ifdef ARM_MULTILIB_ARCH_V4
850 
857 #define LPC24XX_PIN_SPI_SCK \
858  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_11)
859 #define LPC24XX_PIN_SPI_SSEL \
860  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_11)
861 #define LPC24XX_PIN_SPI_MISO \
862  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_11)
863 #define LPC24XX_PIN_SPI_MOSI \
864  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_11)
865 
868 #endif /* ARM_MULTILIB_ARCH_V4 */
869 
876 #define LPC24XX_PIN_SSP_0_SCK_P0_15 \
877  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_10, 2)
878 #define LPC24XX_PIN_SSP_0_SCK_P1_20 \
879  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_11, 5)
880 #define LPC24XX_PIN_SSP_0_SCK_P2_22 \
881  LPC24XX_PIN(2, 22, LPC24XX_PIN_FUNCTION_11, 2)
882 
883 #define LPC24XX_PIN_SSP_0_SSEL_P0_16 \
884  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_10, 2)
885 #define LPC24XX_PIN_SSP_0_SSEL_P1_21 \
886  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_11, 3)
887 #define LPC24XX_PIN_SSP_0_SSEL_P2_23 \
888  LPC24XX_PIN(2, 23, LPC24XX_PIN_FUNCTION_11, 2)
889 
890 #define LPC24XX_PIN_SSP_0_MISO_P0_17 \
891  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_10, 2)
892 #define LPC24XX_PIN_SSP_0_MISO_P1_23 \
893  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_11, 5)
894 #define LPC24XX_PIN_SSP_0_MISO_P2_26 \
895  LPC24XX_PIN(2, 26, LPC24XX_PIN_FUNCTION_11, 2)
896 
897 #define LPC24XX_PIN_SSP_0_MOSI_P0_18 \
898  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_10, 2)
899 #define LPC24XX_PIN_SSP_0_MOSI_P1_24 \
900  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_11, 5)
901 #define LPC24XX_PIN_SSP_0_MOSI_P2_27 \
902  LPC24XX_PIN(2, 27, LPC24XX_PIN_FUNCTION_11, 2)
903 
912 #define LPC24XX_PIN_SSP_1_SCK_P0_6 \
913  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_10, 2)
914 #define LPC24XX_PIN_SSP_1_SCK_P0_12 \
915  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_10, 2)
916 #define LPC24XX_PIN_SSP_1_SCK_P4_20 \
917  LPC24XX_PIN(4, 20, LPC24XX_PIN_FUNCTION_11, 3)
918 
919 #define LPC24XX_PIN_SSP_1_SSEL_P0_7 \
920  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_10, 2)
921 #define LPC24XX_PIN_SSP_1_SSEL_P0_13 \
922  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_11, 2)
923 #define LPC24XX_PIN_SSP_1_SSEL_P4_21 \
924  LPC24XX_PIN(4, 21, LPC24XX_PIN_FUNCTION_11, 3)
925 
926 #define LPC24XX_PIN_SSP_1_MISO_P0_8 \
927  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_10, 2)
928 #define LPC24XX_PIN_SSP_1_MISO_P0_14 \
929  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_10, 2)
930 #define LPC24XX_PIN_SSP_1_MISO_P4_22 \
931  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_11, 3)
932 
933 #define LPC24XX_PIN_SSP_1_MOSI_P0_9 \
934  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_10, 2)
935 #define LPC24XX_PIN_SSP_1_MOSI_P1_31 \
936  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_10, 2)
937 #define LPC24XX_PIN_SSP_1_MOSI_P4_23 \
938  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_11, 3)
939 
942 #ifdef ARM_MULTILIB_ARCH_V7M
943 
950 #define LPC24XX_PIN_SSP_2_SCK_P1_0 \
951  LPC24XX_PIN(1, 0, LPC24XX_PIN_FUNCTION_00, 4)
952 #define LPC24XX_PIN_SSP_2_SCK_P5_2 \
953  LPC24XX_PIN(5, 2, LPC24XX_PIN_FUNCTION_00, 2)
954 
955 #define LPC24XX_PIN_SSP_2_SSEL_P1_8 \
956  LPC24XX_PIN(1, 8, LPC24XX_PIN_FUNCTION_00, 4)
957 #define LPC24XX_PIN_SSP_2_SSEL_P5_3 \
958  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 2)
959 
960 #define LPC24XX_PIN_SSP_2_MISO_P1_4 \
961  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_00, 4)
962 #define LPC24XX_PIN_SSP_2_MISO_P5_1 \
963  LPC24XX_PIN(5, 1, LPC24XX_PIN_FUNCTION_00, 2)
964 
965 #define LPC24XX_PIN_SSP_2_MOSI_P1_1 \
966  LPC24XX_PIN(1, 1, LPC24XX_PIN_FUNCTION_00, 4)
967 #define LPC24XX_PIN_SSP_2_MOSI_P5_0 \
968  LPC24XX_PIN(5, 0, LPC24XX_PIN_FUNCTION_00, 2)
969 
972 #endif /* ARM_MULTILIB_ARCH_V7M */
973 
980 #define LPC24XX_PIN_UART_0_TXD \
981  LPC24XX_PIN(0, 2, LPC24XX_PIN_FUNCTION_01, 1)
982 
983 #define LPC24XX_PIN_UART_0_RXD \
984  LPC24XX_PIN(0, 3, LPC24XX_PIN_FUNCTION_01, 1)
985 
994 #define LPC24XX_PIN_UART_1_TXD_P0_15 \
995  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_01, 1)
996 #define LPC24XX_PIN_UART_1_TXD_P2_0 \
997  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_10, 2)
998 #define LPC24XX_PIN_UART_1_TXD_P3_16 \
999  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_11, 3)
1000 
1001 #define LPC24XX_PIN_UART_1_RXD_P0_16 \
1002  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_01, 1)
1003 #define LPC24XX_PIN_UART_1_RXD_P2_1 \
1004  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_10, 2)
1005 #define LPC24XX_PIN_UART_1_RXD_P3_17 \
1006  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_11, 3)
1007 
1016 #define LPC24XX_PIN_UART_2_TXD_P0_10 \
1017  LPC24XX_PIN(0, 10, LPC24XX_PIN_FUNCTION_01, 1)
1018 #define LPC24XX_PIN_UART_2_TXD_P2_8 \
1019  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_10, 2)
1020 #define LPC24XX_PIN_UART_2_TXD_P4_22 \
1021  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_10, 2)
1022 
1023 #define LPC24XX_PIN_UART_2_RXD_P0_11 \
1024  LPC24XX_PIN(0, 11, LPC24XX_PIN_FUNCTION_01, 1)
1025 #define LPC24XX_PIN_UART_2_RXD_P2_9 \
1026  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_10, 2)
1027 #define LPC24XX_PIN_UART_2_RXD_P4_23 \
1028  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_10, 2)
1029 
1038 #define LPC24XX_PIN_UART_3_TXD_P0_0 \
1039  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_10, 2)
1040 #define LPC24XX_PIN_UART_3_TXD_P0_25 \
1041  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_11, 3)
1042 #define LPC24XX_PIN_UART_3_TXD_P4_28 \
1043  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_11, 2)
1044 
1045 #define LPC24XX_PIN_UART_3_RXD_P0_1 \
1046  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_10, 2)
1047 #define LPC24XX_PIN_UART_3_RXD_P0_26 \
1048  LPC24XX_PIN(0, 26, LPC24XX_PIN_FUNCTION_11, 3)
1049 #define LPC24XX_PIN_UART_3_RXD_P4_29 \
1050  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_11, 2)
1051 
1054 #ifdef ARM_MULTILIB_ARCH_V7M
1055 
1062 #define LPC24XX_PIN_UART_4_TXD_P0_22 \
1063  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_00, 3)
1064 #define LPC24XX_PIN_UART_4_TXD_P1_29 \
1065  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_00, 5)
1066 #define LPC24XX_PIN_UART_4_TXD_P5_4 \
1067  LPC24XX_PIN(5, 4, LPC24XX_PIN_FUNCTION_00, 4)
1068 
1069 #define LPC24XX_PIN_UART_4_RXD_P2_9 \
1070  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_00, 3)
1071 #define LPC24XX_PIN_UART_4_RXD_P5_3 \
1072  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 4)
1073 
1074 #define LPC24XX_PIN_UART_4_OE_P0_21 \
1075  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 3)
1076 
1077 #define LPC24XX_PIN_UART_4_SCLK_P0_21 \
1078  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 5)
1079 
1080 #endif /* ARM_MULTILIB_ARCH_V7M */
1081 
1090 #define LPC24XX_PIN_USB_D_PLUS_1\
1091  LPC24XX_PIN(0, 29, LPC24XX_PIN_FUNCTION_01, 1)
1092 #define LPC24XX_PIN_USB_D_MINUS_1\
1093  LPC24XX_PIN(0, 30, LPC24XX_PIN_FUNCTION_01, 1)
1094 #define LPC24XX_PIN_USB_UP_LED_1\
1095  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_01, 1)
1096 #define LPC24XX_PIN_USB_TX_E_1\
1097  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_01, 1)
1098 #define LPC24XX_PIN_USB_PPWR_1\
1099  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_10, 2)
1100 #define LPC24XX_PIN_USB_TX_DP_1\
1101  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 1)
1102 #define LPC24XX_PIN_USB_TX_DM_1\
1103  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 1)
1104 #define LPC24XX_PIN_USB_RCV_1\
1105  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 1)
1106 #define LPC24XX_PIN_USB_PWRD_1\
1107  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_10, 2)
1108 #define LPC24XX_PIN_USB_RX_DP_1\
1109  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 1)
1110 #define LPC24XX_PIN_USB_RX_DM_1\
1111  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 1)
1112 #define LPC24XX_PIN_USB_LS_1\
1113  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 1)
1114 #define LPC24XX_PIN_USB_HSTEN_1\
1115  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_10, 2)
1116 #define LPC24XX_PIN_USB_SSPND_1\
1117  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 1)
1118 #define LPC24XX_PIN_USB_INT_1\
1119  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 1)
1120 #define LPC24XX_PIN_USB_OVRCR_1\
1121  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
1122 #define LPC24XX_PIN_USB_SCL_1\
1123  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
1124 #define LPC24XX_PIN_USB_SDA_1 \
1125  LPC24XX_PIN_WITH_TYPE( \
1126  1, 29, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_OPEN_DRAIN \
1127  )
1128 #define LPC24XX_PIN_USB_CONNECT_1\
1129  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
1130 
1139 #define LPC24XX_PIN_USB_PPWR_2\
1140  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_01, 1)
1141 #define LPC24XX_PIN_USB_UP_LED_2\
1142  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_01, 1)
1143 #define LPC24XX_PIN_USB_HSTEN_2\
1144  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 1)
1145 #define LPC24XX_PIN_USB_CONNECT_2\
1146  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 3)
1147 #define LPC24XX_PIN_USB_D_PLUS_2\
1148  LPC24XX_PIN(0, 31, LPC24XX_PIN_FUNCTION_01, 1)
1149 #define LPC24XX_PIN_USB_PWRD_2\
1150  LPC24XX_PIN(1, 30, LPC24XX_PIN_FUNCTION_01, 1)
1151 #define LPC24XX_PIN_USB_OVRCR_2\
1152  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_01, 1)
1153 
1158 #ifdef __cplusplus
1159 }
1160 #endif /* __cplusplus */
1161 
1162 #endif /* LIBBSP_ARM_LPC24XX_IO_H */
Register definitions.
Definition: io.h:220
Sets the pin function.
Definition: io.h:202
rtems_status_code
Classic API Status.
Definition: status.h:43
lpc24xx_pin_action
Definition: io.h:198
Checks if all pins are configured as input.
Definition: io.h:217
rtems_status_code lpc24xx_pin_config(const lpc24xx_pin_range *pins, lpc24xx_pin_action action)
Performs the action with the pins.
Definition: io.c:514
Checks if all pins are configured with the specified function.
Definition: io.h:207
Configures the pins as input.
Definition: io.h:212