source: rtems/bsps/arm/lpc24xx/include/bsp/io.h @ 50d8d32

Last change on this file since 50d8d32 was 50d8d32, checked in by Sebastian Huber <sebastian.huber@…>, on May 9, 2019 at 7:54:48 AM

bsp/lpc24xx: Use fast slew rate for EMC pins

  • Property mode set to 100644
File size: 32.0 KB
RevLine 
[9364cf66]1/**
2 * @file
3 *
[c991eeec]4 * @ingroup RTEMSBSPsARMLPC24XX_io
[9364cf66]5 *
[ba938b8]6 * @brief Input and output module.
[9364cf66]7 */
8
9/*
[14ee5a1e]10 * Copyright (c) 2009-2012 embedded brains GmbH.  All rights reserved.
[d74ed4a]11 *
12 *  embedded brains GmbH
13 *  Obere Lagerstr. 30
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
[9364cf66]17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
[c499856]20 * http://www.rtems.org/license/LICENSE.
[9364cf66]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
31extern "C" {
32#endif /* __cplusplus */
33
[ba938b8]34/**
35 * @defgroup lpc24xx_io IO Support and Configuration
36 *
[c991eeec]37 * @ingroup RTEMSBSPsARMLPC24XX
[ba938b8]38 *
39 * @brief Input and output module.
40 *
41 * @{
42 */
43
[9364cf66]44#define LPC24XX_IO_PORT_COUNT 5U
45
46#define LPC24XX_IO_INDEX_MAX (LPC24XX_IO_PORT_COUNT * 32U)
47
[c468f18b]48#define LPC24XX_IO_INDEX_BY_PORT(port, bit) (((port) << 5U) + (bit))
[9364cf66]49
[4a6cc2a]50#define LPC24XX_IO_PORT(index) ((index) >> 5U)
[9364cf66]51
[4a6cc2a]52#define LPC24XX_IO_PORT_BIT(index) ((index) & 0x1fU)
[9364cf66]53
54typedef enum {
[4a6cc2a]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
[c468f18b]62  LPC24XX_MODULE_CAN_0,
63  LPC24XX_MODULE_CAN_1,
[9364cf66]64  LPC24XX_MODULE_DAC,
65  LPC24XX_MODULE_EMC,
66  LPC24XX_MODULE_ETHERNET,
67  LPC24XX_MODULE_GPDMA,
68  LPC24XX_MODULE_GPIO,
[c468f18b]69  LPC24XX_MODULE_I2C_0,
70  LPC24XX_MODULE_I2C_1,
71  LPC24XX_MODULE_I2C_2,
[9364cf66]72  LPC24XX_MODULE_I2S,
73  LPC24XX_MODULE_LCD,
74  LPC24XX_MODULE_MCI,
[14ee5a1e]75  #ifdef ARM_MULTILIB_ARCH_V7M
76    LPC24XX_MODULE_MCPWM,
77  #endif
[9364cf66]78  LPC24XX_MODULE_PCB,
[c468f18b]79  LPC24XX_MODULE_PWM_0,
80  LPC24XX_MODULE_PWM_1,
[14ee5a1e]81  #ifdef ARM_MULTILIB_ARCH_V7M
82    LPC24XX_MODULE_QEI,
83  #endif
[9364cf66]84  LPC24XX_MODULE_RTC,
[4a6cc2a]85  #ifdef ARM_MULTILIB_ARCH_V4
86    LPC24XX_MODULE_SPI,
87  #endif
[c468f18b]88  LPC24XX_MODULE_SSP_0,
89  LPC24XX_MODULE_SSP_1,
[14ee5a1e]90  #ifdef ARM_MULTILIB_ARCH_V7M
91    LPC24XX_MODULE_SSP_2,
92  #endif
[9364cf66]93  LPC24XX_MODULE_SYSCON,
[c468f18b]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,
[14ee5a1e]102  #ifdef ARM_MULTILIB_ARCH_V7M
103    LPC24XX_MODULE_UART_4,
104  #endif
[4a6cc2a]105  #ifdef ARM_MULTILIB_ARCH_V4
106    LPC24XX_MODULE_WDT,
107  #endif
108  LPC24XX_MODULE_USB
[9364cf66]109} lpc24xx_module;
110
[4a6cc2a]111#define LPC24XX_MODULE_COUNT (LPC24XX_MODULE_USB + 1)
[c468f18b]112
[9364cf66]113typedef enum {
[4a6cc2a]114  LPC24XX_MODULE_PCLK_DEFAULT = 0x4U,
[9364cf66]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
124typedef enum {
125  LPC24XX_GPIO_DEFAULT = 0x0U,
[4a6cc2a]126  LPC24XX_GPIO_RESISTOR_PULL_UP = 0x0U,
[9364cf66]127  LPC24XX_GPIO_RESISTOR_NONE = 0x1U,
[4a6cc2a]128  LPC24XX_GPIO_RESISTOR_PULL_DOWN = 0x2U,
[9364cf66]129  LPC24XX_GPIO_INPUT = 0x0U,
[14ee5a1e]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
[4a6cc2a]138  LPC24XX_GPIO_OUTPUT = 0x8000U
[9364cf66]139} lpc24xx_gpio_settings;
140
141rtems_status_code lpc24xx_module_enable(
142  lpc24xx_module module,
143  lpc24xx_module_clock clock
144);
145
146rtems_status_code lpc24xx_module_disable(
[c468f18b]147  lpc24xx_module module
[9364cf66]148);
149
[4e0755c8]150bool lpc24xx_module_is_enabled(lpc24xx_module module);
151
[9364cf66]152rtems_status_code lpc24xx_gpio_config(
153  unsigned index,
154  lpc24xx_gpio_settings settings
155);
156
[c468f18b]157static inline void lpc24xx_gpio_set(unsigned index)
[9364cf66]158{
159  if (index <= LPC24XX_IO_INDEX_MAX) {
[c468f18b]160    unsigned port = LPC24XX_IO_PORT(index);
161    unsigned bit = LPC24XX_IO_PORT_BIT(index);
[9364cf66]162
163    LPC24XX_FIO [port].set = 1U << bit;
164  }
165}
166
[c468f18b]167static inline void lpc24xx_gpio_clear(unsigned index)
[9364cf66]168{
169  if (index <= LPC24XX_IO_INDEX_MAX) {
[c468f18b]170    unsigned port = LPC24XX_IO_PORT(index);
171    unsigned bit = LPC24XX_IO_PORT_BIT(index);
[9364cf66]172
173    LPC24XX_FIO [port].clr = 1U << bit;
174  }
175}
176
[c468f18b]177static inline void lpc24xx_gpio_write(unsigned index, bool value)
[9364cf66]178{
179  if (value) {
[c468f18b]180    lpc24xx_gpio_set(index);
[9364cf66]181  } else {
[c468f18b]182    lpc24xx_gpio_clear(index);
[9364cf66]183  }
184}
185
[c468f18b]186static inline bool lpc24xx_gpio_get(unsigned index)
[9364cf66]187{
188  if (index <= LPC24XX_IO_INDEX_MAX) {
[c468f18b]189    unsigned port = LPC24XX_IO_PORT(index);
190    unsigned bit = LPC24XX_IO_PORT_BIT(index);
[9364cf66]191
192    return (LPC24XX_FIO [port].pin & (1U << bit)) != 0;
193  } else {
194    return false;
195  }
196}
197
[d74ed4a]198typedef enum {
199  /**
200   * @brief Sets the pin function.
201   */
[4a6cc2a]202  LPC24XX_PIN_SET_FUNCTION,
[d74ed4a]203
204  /**
205   * @brief Checks if all pins are configured with the specified function.
206   */
207  LPC24XX_PIN_CHECK_FUNCTION,
208
209  /**
210   * @brief Configures the pins as input.
211   */
212  LPC24XX_PIN_SET_INPUT,
213
214  /**
215   * @brief Checks if all pins are configured as input.
216   */
217  LPC24XX_PIN_CHECK_INPUT
218} lpc24xx_pin_action;
219
220typedef union {
221  struct {
222    uint16_t port : 3;
[4a6cc2a]223    uint16_t port_bit : 5;
[d74ed4a]224    uint16_t function : 3;
[4a6cc2a]225    uint16_t type : 4;
226    uint16_t range : 1;
[d74ed4a]227  } fields;
228  uint16_t value;
229} lpc24xx_pin_range;
230
[4a6cc2a]231typedef 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;
[d74ed4a]237
[4a6cc2a]238typedef enum {
239  LPC17XX_PIN_TYPE_DEFAULT,
240  LPC17XX_PIN_TYPE_ADC,
241  LPC17XX_PIN_TYPE_DAC,
242  LPC17XX_PIN_TYPE_I2C,
[e9e5b92d]243  LPC17XX_PIN_TYPE_I2C_FAST_PLUS,
[0a6b81a]244  LPC17XX_PIN_TYPE_OPEN_DRAIN,
245  LPC17XX_PIN_TYPE_FAST_SLEW_RATE
[4a6cc2a]246} lpc17xx_pin_type;
247
248#ifdef ARM_MULTILIB_ARCH_V4
249  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f0, 0, 0 } }
250  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f0, t, 0 } }
251  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
252    { { p, i, f0, 0, 0 } }, { { p, j, f0, 0, 1 } }
[50d8d32]253  #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
254    { { p, i, f0, t, 0 } }, { { p, j, f0, t, 1 } }
[14ee5a1e]255#else
256  #define LPC24XX_PIN(p, i, f0, f1) { { p, i, f1, 0, 0 } }
257  #define LPC24XX_PIN_WITH_TYPE(p, i, f0, f1, t) { { p, i, f1, t, 0 } }
258  #define LPC24XX_PIN_RANGE(p, i, j, f0, f1) \
259    { { p, i, f1, 0, 0 } }, { { p, j, f1, 0, 1 } }
[50d8d32]260  #define LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, f0, f1, t) \
261    { { p, i, f1, t, 0 } }, { { p, j, f1, t, 1 } }
[4a6cc2a]262#endif
263
264#define LPC24XX_PIN_TERMINAL { { 0x7, 0x1f, 0x7, 0xf, 0x1 } }
[d74ed4a]265
266/**
267 * @brief Performs the @a action with the @a pins
268 *
269 * @code
270 * #include <assert.h>
271 * #include <bsp/io.h>
272 *
273 * void example(void)
274 * {
275 *   static const lpc24xx_pin_range pins [] = {
276 *     LPC24XX_PIN_I2S_RX_CLK_P0_4,
277 *     LPC24XX_PIN_I2S_RX_WS_P0_5,
278 *     LPC24XX_PIN_I2S_RX_SDA_P0_6,
279 *     LPC24XX_PIN_I2S_TX_CLK_P0_7,
280 *     LPC24XX_PIN_I2S_TX_WS_P0_8,
281 *     LPC24XX_PIN_I2S_TX_SDA_P0_9,
282 *     LPC24XX_PIN_TERMINAL
283 *   };
284 *   rtems_status_code sc = RTEMS_SUCCESSFUL;
285 *
286 *   sc = lpc24xx_module_enable(LPC24XX_MODULE_I2S, LPC24XX_MODULE_CCLK_8);
287 *   assert(sc == RTEMS_SUCCESSFUL);
288 *   sc = lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION);
289 *   assert(sc == RTEMS_SUCCESSFUL);
290 * }
291 * @endcode
292 *
293 * @retval RTEMS_SUCCESSFUL Successful operation.
294 * @retval RTEMS_IO_ERROR Check failed.
295 * @retval RTEMS_NOT_DEFINED Invalid action.
296 */
297rtems_status_code lpc24xx_pin_config(
298  const lpc24xx_pin_range *pins,
299  lpc24xx_pin_action action
300);
301
[986ddf5]302/**
303 * @brief Returns the first pin index of a pin range.
304 */
305static inline unsigned lpc24xx_pin_get_first_index(
306  const lpc24xx_pin_range *range
307)
308{
309  return LPC24XX_IO_INDEX_BY_PORT(range->fields.port, range->fields.port_bit);
310}
311
[d74ed4a]312/**
313 * @name ADC Pins
314 *
315 * @{
316 */
317
318#define LPC24XX_PIN_ADC_CHANNEL_0 \
[4a6cc2a]319  LPC24XX_PIN_WITH_TYPE(0, 23, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]320#define LPC24XX_PIN_ADC_CHANNEL_1 \
[4a6cc2a]321  LPC24XX_PIN_WITH_TYPE(0, 24, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]322#define LPC24XX_PIN_ADC_CHANNEL_2 \
[4a6cc2a]323  LPC24XX_PIN_WITH_TYPE(0, 25, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]324#define LPC24XX_PIN_ADC_CHANNEL_3 \
[4a6cc2a]325  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]326#define LPC24XX_PIN_ADC_CHANNEL_4 \
[4a6cc2a]327  LPC24XX_PIN_WITH_TYPE(1, 30, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]328#define LPC24XX_PIN_ADC_CHANNEL_5 \
[4a6cc2a]329  LPC24XX_PIN_WITH_TYPE(1, 31, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]330#define LPC24XX_PIN_ADC_CHANNEL_6 \
[4a6cc2a]331  LPC24XX_PIN_WITH_TYPE(0, 12, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
[d74ed4a]332#define LPC24XX_PIN_ADC_CHANNEL_7 \
[4a6cc2a]333  LPC24XX_PIN_WITH_TYPE(0, 13, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_ADC)
334
335/** @} */
336
337/**
338 * @name CAN 0 Pins
339 *
340 * @{
341 */
342
[f3cdf279]343#define LPC24XX_PIN_CAN_0_RD_P0_0 \
[4a6cc2a]344  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_01, 1)
345
[f3cdf279]346#define LPC24XX_PIN_CAN_0_RD_P0_21 \
347  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_11, 4)
348
349#define LPC24XX_PIN_CAN_0_TD_P0_1 \
[4a6cc2a]350  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_01, 1)
351
[f3cdf279]352#define LPC24XX_PIN_CAN_0_TD_P0_22 \
353  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_11, 4)
354
[4a6cc2a]355/** @} */
356
357/**
358 * @name CAN 1 Pins
359 *
360 * @{
361 */
362
[f3cdf279]363#define LPC24XX_PIN_CAN_1_RD_P0_4 \
[4a6cc2a]364  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_10, 2)
365
[f3cdf279]366#define LPC24XX_PIN_CAN_1_RD_P2_7 \
367  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_01, 1)
368
369#define LPC24XX_PIN_CAN_1_TD_P0_5 \
[4a6cc2a]370  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]371
[f3cdf279]372#define LPC24XX_PIN_CAN_1_TD_P2_8 \
373  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_01, 1)
374
[d74ed4a]375/** @} */
376
377/**
378 * @name DAC Pins
379 *
380 * @{
381 */
382
383#define LPC24XX_PIN_DAC \
[4a6cc2a]384  LPC24XX_PIN_WITH_TYPE(0, 26, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_DAC)
[d74ed4a]385
386/** @} */
387
388/**
389 * @name Ethernet Pins
390 *
391 * @{
392 */
393
394#define LPC24XX_PIN_ETHERNET_MII \
[4a6cc2a]395  LPC24XX_PIN_RANGE(1, 0, 17, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]396
397#define LPC24XX_PIN_ETHERNET_RMII_0 \
[4a6cc2a]398  LPC24XX_PIN_RANGE(1, 0, 1, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]399#define LPC24XX_PIN_ETHERNET_RMII_1 \
[4a6cc2a]400  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]401#define LPC24XX_PIN_ETHERNET_RMII_2 \
[4a6cc2a]402  LPC24XX_PIN_RANGE(1, 8, 10, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]403#define LPC24XX_PIN_ETHERNET_RMII_3 \
[4a6cc2a]404  LPC24XX_PIN_RANGE(1, 14, 17, LPC24XX_PIN_FUNCTION_01, 1)
405
406/** @} */
407
408/**
409 * @name External Interrupt Pins
410 *
411 * @{
412 */
413
414#define LPC24XX_PIN_EINT_0 \
415  LPC24XX_PIN(2, 10, LPC24XX_PIN_FUNCTION_01, 1)
416#define LPC24XX_PIN_EINT_1 \
417  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 1)
418#define LPC24XX_PIN_EINT_2 \
419  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 1)
420#define LPC24XX_PIN_EINT_3 \
421  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 1)
422
423/** @} */
424
425/**
426 * @name External Memory Controller (EMC) Pins
427 *
428 * @{
429 */
430
[50d8d32]431#define LPC24XX_PIN_EMC(p, i) \
432  LPC24XX_PIN_WITH_TYPE(p, i, LPC24XX_PIN_FUNCTION_01, 1, \
433    LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
434
435#define LPC24XX_PIN_EMC_RANGE(p, i, j) \
436  LPC24XX_PIN_RANGE_WITH_TYPE(p, i, j, LPC24XX_PIN_FUNCTION_01, 1, \
437    LPC17XX_PIN_TYPE_FAST_SLEW_RATE)
438
439#define LPC24XX_PIN_EMC_CS_0 LPC24XX_PIN_EMC(4, 30)
440#define LPC24XX_PIN_EMC_CS_1 LPC24XX_PIN_EMC(4, 31)
441#define LPC24XX_PIN_EMC_CS_2 LPC24XX_PIN_EMC(2, 14)
442#define LPC24XX_PIN_EMC_CS_3 LPC24XX_PIN_EMC(2, 15)
443
444#define LPC24XX_PIN_EMC_DYCS_0 LPC24XX_PIN_EMC(2, 20)
445#define LPC24XX_PIN_EMC_DYCS_1 LPC24XX_PIN_EMC(2, 21)
446#define LPC24XX_PIN_EMC_DYCS_2 LPC24XX_PIN_EMC(2, 22)
447#define LPC24XX_PIN_EMC_DYCS_3 LPC24XX_PIN_EMC(2, 23)
448
449#define LPC24XX_PIN_EMC_OE LPC24XX_PIN_EMC(4, 24)
450#define LPC24XX_PIN_EMC_WE LPC24XX_PIN_EMC(4, 25)
451#define LPC24XX_PIN_EMC_CAS LPC24XX_PIN_EMC(2, 16)
452#define LPC24XX_PIN_EMC_RAS LPC24XX_PIN_EMC(2, 17)
453
454#define LPC24XX_PIN_EMC_CLK_0 LPC24XX_PIN_EMC(2, 18)
455#define LPC24XX_PIN_EMC_CLK_1 LPC24XX_PIN_EMC(2, 19)
456
457#define LPC24XX_PIN_EMC_CKE_0 LPC24XX_PIN_EMC(2, 24)
458#define LPC24XX_PIN_EMC_CKE_1 LPC24XX_PIN_EMC(2, 25)
459#define LPC24XX_PIN_EMC_CKE_2 LPC24XX_PIN_EMC(2, 26)
460#define LPC24XX_PIN_EMC_CKE_3 LPC24XX_PIN_EMC(2, 27)
461
462#define LPC24XX_PIN_EMC_DQM_0 LPC24XX_PIN_EMC(2, 28)
463#define LPC24XX_PIN_EMC_DQM_1 LPC24XX_PIN_EMC(2, 29)
464#define LPC24XX_PIN_EMC_DQM_2 LPC24XX_PIN_EMC(2, 30)
465#define LPC24XX_PIN_EMC_DQM_3 LPC24XX_PIN_EMC(2, 31)
466
467#define LPC24XX_PIN_EMC_BLS0 LPC24XX_PIN_EMC(4, 26)
468#define LPC24XX_PIN_EMC_BLS1 LPC24XX_PIN_EMC(4, 27)
469#define LPC24XX_PIN_EMC_BLS2 LPC24XX_PIN_EMC(4, 28)
470#define LPC24XX_PIN_EMC_BLS3 LPC24XX_PIN_EMC(4, 29)
471
472#define LPC24XX_PIN_EMC_D_0_15 LPC24XX_PIN_EMC_RANGE(3, 0, 15)
473#define LPC24XX_PIN_EMC_D_15_31 LPC24XX_PIN_EMC_RANGE(3, 15, 31)
474#define LPC24XX_PIN_EMC_D_0_31 LPC24XX_PIN_EMC_RANGE(3, 0, 31)
475
476#define LPC24XX_PIN_EMC_A_0_12 LPC24XX_PIN_EMC_RANGE(4, 0, 12)
477#define LPC24XX_PIN_EMC_A_0_13 LPC24XX_PIN_EMC_RANGE(4, 0, 13)
478#define LPC24XX_PIN_EMC_A_0_14 LPC24XX_PIN_EMC_RANGE(4, 0, 14)
479#define LPC24XX_PIN_EMC_A_0_15 LPC24XX_PIN_EMC_RANGE(4, 0, 15)
[4a6cc2a]480#define LPC24XX_PIN_EMC_A_0_16 \
481  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]482  LPC24XX_PIN_EMC(4, 16)
[4a6cc2a]483#define LPC24XX_PIN_EMC_A_0_17 \
484  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]485  LPC24XX_PIN_EMC_RANGE(4, 16, 17)
[4a6cc2a]486#define LPC24XX_PIN_EMC_A_0_18 \
487  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]488  LPC24XX_PIN_EMC_RANGE(4, 16, 18)
[4a6cc2a]489#define LPC24XX_PIN_EMC_A_0_19 \
490  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]491  LPC24XX_PIN_EMC_RANGE(4, 16, 19)
[4a6cc2a]492#define LPC24XX_PIN_EMC_A_0_20 \
493  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]494  LPC24XX_PIN_EMC_RANGE(4, 16, 20)
[4a6cc2a]495#define LPC24XX_PIN_EMC_A_0_21 \
496  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]497  LPC24XX_PIN_EMC_RANGE(4, 16, 21)
[4a6cc2a]498#define LPC24XX_PIN_EMC_A_0_22 \
499  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]500  LPC24XX_PIN_EMC_RANGE(4, 16, 22)
[4a6cc2a]501#define LPC24XX_PIN_EMC_A_0_23 \
502  LPC24XX_PIN_EMC_A_0_15, \
[50d8d32]503  LPC24XX_PIN_EMC_RANGE(4, 16, 23)
[4a6cc2a]504#define LPC24XX_PIN_EMC_A_0_24 \
505  LPC24XX_PIN_EMC_A_0_23, \
[50d8d32]506  LPC24XX_PIN_EMC(5, 24)
[4a6cc2a]507#define LPC24XX_PIN_EMC_A_0_25 \
508  LPC24XX_PIN_EMC_A_0_23, \
[50d8d32]509  LPC24XX_PIN_EMC_RANGE(5, 24, 25)
[d74ed4a]510
511/** @} */
512
513/**
514 * @name I2C 0 Pins
515 *
516 * @{
517 */
518
519#define LPC24XX_PIN_I2C_0_SDA \
[4a6cc2a]520  LPC24XX_PIN_WITH_TYPE(0, 27, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]521#define LPC24XX_PIN_I2C_0_SCL \
[4a6cc2a]522  LPC24XX_PIN_WITH_TYPE(0, 28, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]523
524/** @} */
525
526/**
527 * @name I2C 1 Pins
528 *
529 * @{
530 */
531
532#define LPC24XX_PIN_I2C_1_SDA_P0_0 \
[4a6cc2a]533  LPC24XX_PIN_WITH_TYPE(0, 0, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]534#define LPC24XX_PIN_I2C_1_SDA_P0_19 \
[4a6cc2a]535  LPC24XX_PIN_WITH_TYPE(0, 19, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]536#define LPC24XX_PIN_I2C_1_SDA_P2_14 \
[4a6cc2a]537  LPC24XX_PIN_WITH_TYPE(2, 14, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]538
539#define LPC24XX_PIN_I2C_1_SCL_P0_1 \
[4a6cc2a]540  LPC24XX_PIN_WITH_TYPE(0, 1, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
541#define LPC24XX_PIN_I2C_1_SCL_P0_20 \
542  LPC24XX_PIN_WITH_TYPE(0, 20, LPC24XX_PIN_FUNCTION_11, 3, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]543#define LPC24XX_PIN_I2C_1_SCL_P2_15 \
[4a6cc2a]544  LPC24XX_PIN_WITH_TYPE(2, 15, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]545
546/** @} */
547
548/**
549 * @name I2C 2 Pins
550 *
551 * @{
552 */
553
554#define LPC24XX_PIN_I2C_2_SDA_P0_10 \
[4a6cc2a]555  LPC24XX_PIN_WITH_TYPE(0, 10, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]556#define LPC24XX_PIN_I2C_2_SDA_P2_30 \
[4a6cc2a]557  LPC24XX_PIN_WITH_TYPE(2, 30, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]558#define LPC24XX_PIN_I2C_2_SDA_P4_20 \
[4a6cc2a]559  LPC24XX_PIN_WITH_TYPE(4, 20, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]560
561#define LPC24XX_PIN_I2C_2_SCL_P0_11 \
[4a6cc2a]562  LPC24XX_PIN_WITH_TYPE(0, 11, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
563#define LPC24XX_PIN_I2C_2_SCL_P2_31 \
564  LPC24XX_PIN_WITH_TYPE(2, 31, LPC24XX_PIN_FUNCTION_11, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]565#define LPC24XX_PIN_I2C_2_SCL_P4_21 \
[4a6cc2a]566  LPC24XX_PIN_WITH_TYPE(4, 21, LPC24XX_PIN_FUNCTION_10, 2, LPC17XX_PIN_TYPE_I2C)
[d74ed4a]567
568/** @} */
569
570/**
571 * @name I2S Pins
572 *
573 * @{
574 */
575
576#define LPC24XX_PIN_I2S_RX_CLK_P0_4 \
[4a6cc2a]577  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]578#define LPC24XX_PIN_I2S_RX_CLK_P0_23 \
[4a6cc2a]579  LPC24XX_PIN(0, 23, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]580
581#define LPC24XX_PIN_I2S_RX_WS_P0_5 \
[4a6cc2a]582  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]583#define LPC24XX_PIN_I2S_RX_WS_P0_24 \
[4a6cc2a]584  LPC24XX_PIN(0, 24, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]585
586#define LPC24XX_PIN_I2S_RX_SDA_P0_6 \
[4a6cc2a]587  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]588#define LPC24XX_PIN_I2S_RX_SDA_P0_25 \
[4a6cc2a]589  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]590
591#define LPC24XX_PIN_I2S_TX_CLK_P0_7 \
[4a6cc2a]592  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]593#define LPC24XX_PIN_I2S_TX_CLK_P2_11 \
[4a6cc2a]594  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]595
596#define LPC24XX_PIN_I2S_TX_WS_P0_8 \
[4a6cc2a]597  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]598#define LPC24XX_PIN_I2S_TX_WS_P2_12 \
[4a6cc2a]599  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]600
601#define LPC24XX_PIN_I2S_TX_SDA_P0_9 \
[4a6cc2a]602  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]603#define LPC24XX_PIN_I2S_TX_SDA_P2_13 \
[4a6cc2a]604  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]605
606/** @} */
607
608/**
609 * @name LCD Pins
610 *
611 * @{
612 */
613
614#define LPC24XX_PIN_LCD_PWR \
[4a6cc2a]615  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]616#define LPC24XX_PIN_LCD_LE \
[4a6cc2a]617  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]618#define LPC24XX_PIN_LCD_DCLK \
[4a6cc2a]619  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]620#define LPC24XX_PIN_LCD_FP \
[4a6cc2a]621  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]622#define LPC24XX_PIN_LCD_ENAB_M \
[4a6cc2a]623  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]624#define LPC24XX_PIN_LCD_LP \
[4a6cc2a]625  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_11, 7)
[d74ed4a]626#define LPC24XX_PIN_LCD_CLKIN \
[4a6cc2a]627  LPC24XX_PIN(2, 11, LPC24XX_PIN_FUNCTION_01, 7)
628
629#define LPC24XX_PIN_LCD_VD_0_P0_4 \
630  LPC24XX_PIN(0, 4, LPC24XX_PIN_FUNCTION_01, 7)
631#define LPC24XX_PIN_LCD_VD_0_P2_6 \
632  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 6)
633#define LPC24XX_PIN_LCD_VD_1_P0_5 \
634  LPC24XX_PIN(0, 5, LPC24XX_PIN_FUNCTION_01, 7)
635#define LPC24XX_PIN_LCD_VD_1_P2_7 \
636  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 6)
637#define LPC24XX_PIN_LCD_VD_2_P2_8 \
638  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 6)
639#define LPC24XX_PIN_LCD_VD_2_P4_28 \
640  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 7)
641#define LPC24XX_PIN_LCD_VD_3_P2_9 \
642  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 6)
643#define LPC24XX_PIN_LCD_VD_3_P2_12 \
644  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 5)
645#define LPC24XX_PIN_LCD_VD_3_P4_29 \
646  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 7)
647#define LPC24XX_PIN_LCD_VD_4_P2_6 \
648  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_11, 7)
649#define LPC24XX_PIN_LCD_VD_4_P2_12 \
650  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 4)
651#define LPC24XX_PIN_LCD_VD_5_P2_7 \
652  LPC24XX_PIN(2, 7, LPC24XX_PIN_FUNCTION_11, 7)
653#define LPC24XX_PIN_LCD_VD_5_P2_13 \
654  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 5)
655#define LPC24XX_PIN_LCD_VD_6_P1_20 \
656  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 6)
657#define LPC24XX_PIN_LCD_VD_6_P2_8 \
658  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_11, 7)
659#define LPC24XX_PIN_LCD_VD_6_P4_28 \
660  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 5)
661#define LPC24XX_PIN_LCD_VD_7_P1_21 \
662  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 6)
663#define LPC24XX_PIN_LCD_VD_7_P2_9 \
664  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_11, 7)
665#define LPC24XX_PIN_LCD_VD_7_P4_29 \
666  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 5)
667#define LPC24XX_PIN_LCD_VD_8_P0_6 \
668  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_01, 7)
669#define LPC24XX_PIN_LCD_VD_8_P1_22 \
670  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 6)
671#define LPC24XX_PIN_LCD_VD_8_P2_12 \
672  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 6)
673#define LPC24XX_PIN_LCD_VD_9_P0_7 \
674  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_01, 7)
675#define LPC24XX_PIN_LCD_VD_9_P1_23 \
676  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 6)
677#define LPC24XX_PIN_LCD_VD_9_P2_13 \
678  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 6)
679#define LPC24XX_PIN_LCD_VD_10_P1_20 \
680  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 7)
681#define LPC24XX_PIN_LCD_VD_10_P1_24 \
682  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 6)
683#define LPC24XX_PIN_LCD_VD_10_P4_28 \
684  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_10, 6)
685#define LPC24XX_PIN_LCD_VD_11_P1_21 \
686  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 7)
687#define LPC24XX_PIN_LCD_VD_11_P1_25 \
688  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 6)
689#define LPC24XX_PIN_LCD_VD_11_P4_29 \
690  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_10, 6)
691#define LPC24XX_PIN_LCD_VD_12_P1_22 \
692  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 7)
693#define LPC24XX_PIN_LCD_VD_12_P1_26 \
694  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 6)
695#define LPC24XX_PIN_LCD_VD_13_P1_23 \
696  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 7)
697#define LPC24XX_PIN_LCD_VD_13_P1_27 \
698  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 6)
699#define LPC24XX_PIN_LCD_VD_14_P1_24 \
700  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 7)
701#define LPC24XX_PIN_LCD_VD_14_P1_28 \
702  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 6)
703#define LPC24XX_PIN_LCD_VD_15_P1_25 \
704  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 7)
705#define LPC24XX_PIN_LCD_VD_15_P1_29 \
706  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 6)
707#define LPC24XX_PIN_LCD_VD_16_P0_8 \
708  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_01, 7)
709#define LPC24XX_PIN_LCD_VD_17_P0_9 \
710  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_01, 7)
711#define LPC24XX_PIN_LCD_VD_18_P2_12 \
712  LPC24XX_PIN(2, 12, LPC24XX_PIN_FUNCTION_01, 7)
713#define LPC24XX_PIN_LCD_VD_19_P2_13 \
714  LPC24XX_PIN(2, 13, LPC24XX_PIN_FUNCTION_01, 7)
715#define LPC24XX_PIN_LCD_VD_20_P1_26 \
716  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 7)
717#define LPC24XX_PIN_LCD_VD_21_P1_27 \
718  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 7)
719#define LPC24XX_PIN_LCD_VD_22_P1_28 \
720  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 7)
721#define LPC24XX_PIN_LCD_VD_23_P1_29 \
722  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_01, 7)
[d74ed4a]723
724/** @} */
725
726/**
727 * @name PWM 0 Pins
728 *
729 * @{
730 */
731
732#define LPC24XX_PIN_PWM_0_CHANNEL_1_P1_2 \
[4a6cc2a]733  LPC24XX_PIN(1, 2, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]734#define LPC24XX_PIN_PWM_0_CHANNEL_1_P3_16 \
[4a6cc2a]735  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]736
737#define LPC24XX_PIN_PWM_0_CHANNEL_2_P1_3 \
[4a6cc2a]738  LPC24XX_PIN(1, 3, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]739#define LPC24XX_PIN_PWM_0_CHANNEL_2_P3_17 \
[4a6cc2a]740  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]741
742#define LPC24XX_PIN_PWM_0_CHANNEL_3_P1_5 \
[4a6cc2a]743  LPC24XX_PIN(1, 5, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]744#define LPC24XX_PIN_PWM_0_CHANNEL_3_P3_18 \
[4a6cc2a]745  LPC24XX_PIN(3, 18, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]746
747#define LPC24XX_PIN_PWM_0_CHANNEL_4_P1_6 \
[4a6cc2a]748  LPC24XX_PIN(1, 6, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]749#define LPC24XX_PIN_PWM_0_CHANNEL_4_P3_19 \
[4a6cc2a]750  LPC24XX_PIN(3, 19, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]751
752#define LPC24XX_PIN_PWM_0_CHANNEL_5_P1_7 \
[4a6cc2a]753  LPC24XX_PIN(1, 7, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]754#define LPC24XX_PIN_PWM_0_CHANNEL_5_P3_20 \
[4a6cc2a]755  LPC24XX_PIN(3, 20, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]756
757#define LPC24XX_PIN_PWM_0_CHANNEL_6_P1_11 \
[4a6cc2a]758  LPC24XX_PIN(1, 11, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]759#define LPC24XX_PIN_PWM_0_CHANNEL_6_P3_21 \
[4a6cc2a]760  LPC24XX_PIN(3, 21, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]761
762#define LPC24XX_PIN_PWM_0_CAPTURE_0_P1_12 \
[4a6cc2a]763  LPC24XX_PIN(1, 12, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]764#define LPC24XX_PIN_PWM_0_CAPTURE_0_P3_22 \
[4a6cc2a]765  LPC24XX_PIN(3, 22, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]766
767/** @} */
768
769/**
770 * @name PWM 1 Pins
771 *
772 * @{
773 */
774
775#define LPC24XX_PIN_PWM_1_CHANNEL_1_P1_18 \
[4a6cc2a]776  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]777#define LPC24XX_PIN_PWM_1_CHANNEL_1_P2_0 \
[4a6cc2a]778  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]779#define LPC24XX_PIN_PWM_1_CHANNEL_1_P3_24 \
[4a6cc2a]780  LPC24XX_PIN(3, 24, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]781
782#define LPC24XX_PIN_PWM_1_CHANNEL_2_P1_20 \
[4a6cc2a]783  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]784#define LPC24XX_PIN_PWM_1_CHANNEL_2_P2_1 \
[4a6cc2a]785  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]786#define LPC24XX_PIN_PWM_1_CHANNEL_2_P3_25 \
[4a6cc2a]787  LPC24XX_PIN(3, 25, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]788
789#define LPC24XX_PIN_PWM_1_CHANNEL_3_P1_21 \
[4a6cc2a]790  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]791#define LPC24XX_PIN_PWM_1_CHANNEL_3_P2_2 \
[4a6cc2a]792  LPC24XX_PIN(2, 2, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]793#define LPC24XX_PIN_PWM_1_CHANNEL_3_P3_26 \
[4a6cc2a]794  LPC24XX_PIN(3, 26, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]795
796#define LPC24XX_PIN_PWM_1_CHANNEL_4_P1_23 \
[4a6cc2a]797  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]798#define LPC24XX_PIN_PWM_1_CHANNEL_4_P2_3 \
[4a6cc2a]799  LPC24XX_PIN(2, 3, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]800#define LPC24XX_PIN_PWM_1_CHANNEL_4_P3_27 \
[4a6cc2a]801  LPC24XX_PIN(3, 27, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]802
803#define LPC24XX_PIN_PWM_1_CHANNEL_5_P1_24 \
[4a6cc2a]804  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]805#define LPC24XX_PIN_PWM_1_CHANNEL_5_P2_4 \
[4a6cc2a]806  LPC24XX_PIN(2, 4, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]807#define LPC24XX_PIN_PWM_1_CHANNEL_5_P3_28 \
[4a6cc2a]808  LPC24XX_PIN(3, 28, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]809
810#define LPC24XX_PIN_PWM_1_CHANNEL_6_P1_26 \
[4a6cc2a]811  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]812#define LPC24XX_PIN_PWM_1_CHANNEL_6_P2_5 \
[4a6cc2a]813  LPC24XX_PIN(2, 5, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]814#define LPC24XX_PIN_PWM_1_CHANNEL_6_P3_29 \
[4a6cc2a]815  LPC24XX_PIN(3, 29, LPC24XX_PIN_FUNCTIO9_11, 2)
[d74ed4a]816
817#define LPC24XX_PIN_PWM_1_CAPTURE_0_P1_28 \
[4a6cc2a]818  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]819#define LPC24XX_PIN_PWM_1_CAPTURE_0_P2_7 \
[4a6cc2a]820  LPC24XX_PIN(2, 6, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]821#define LPC24XX_PIN_PWM_1_CAPTURE_0_P3_23 \
[4a6cc2a]822  LPC24XX_PIN(3, 23, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]823
824#define LPC24XX_PIN_PWM_1_CAPTURE_1_P1_29 \
[4a6cc2a]825  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]826
827/** @} */
828
[14ee5a1e]829#ifdef ARM_MULTILIB_ARCH_V4
830
831/**
832 * @name SPI Pins
833 *
834 * @{
835 */
836
837#define LPC24XX_PIN_SPI_SCK \
838  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_11)
839#define LPC24XX_PIN_SPI_SSEL \
840  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_11)
841#define LPC24XX_PIN_SPI_MISO \
842  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_11)
843#define LPC24XX_PIN_SPI_MOSI \
844  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_11)
845
846/** @} */
847
848#endif /* ARM_MULTILIB_ARCH_V4 */
849
[d74ed4a]850/**
851 * @name SSP 0 Pins
852 *
853 * @{
854 */
855
856#define LPC24XX_PIN_SSP_0_SCK_P0_15 \
[4a6cc2a]857  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]858#define LPC24XX_PIN_SSP_0_SCK_P1_20 \
[4a6cc2a]859  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_11, 5)
[d74ed4a]860#define LPC24XX_PIN_SSP_0_SCK_P2_22 \
[4a6cc2a]861  LPC24XX_PIN(2, 22, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]862
863#define LPC24XX_PIN_SSP_0_SSEL_P0_16 \
[4a6cc2a]864  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]865#define LPC24XX_PIN_SSP_0_SSEL_P1_21 \
[4a6cc2a]866  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]867#define LPC24XX_PIN_SSP_0_SSEL_P2_23 \
[4a6cc2a]868  LPC24XX_PIN(2, 23, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]869
870#define LPC24XX_PIN_SSP_0_MISO_P0_17 \
[4a6cc2a]871  LPC24XX_PIN(0, 17, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]872#define LPC24XX_PIN_SSP_0_MISO_P1_23 \
[4a6cc2a]873  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_11, 5)
[d74ed4a]874#define LPC24XX_PIN_SSP_0_MISO_P2_26 \
[4a6cc2a]875  LPC24XX_PIN(2, 26, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]876
877#define LPC24XX_PIN_SSP_0_MOSI_P0_18 \
[4a6cc2a]878  LPC24XX_PIN(0, 18, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]879#define LPC24XX_PIN_SSP_0_MOSI_P1_24 \
[4a6cc2a]880  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_11, 5)
[d74ed4a]881#define LPC24XX_PIN_SSP_0_MOSI_P2_27 \
[4a6cc2a]882  LPC24XX_PIN(2, 27, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]883
884/** @} */
885
886/**
887 * @name SSP 1 Pins
888 *
889 * @{
890 */
891
892#define LPC24XX_PIN_SSP_1_SCK_P0_6 \
[4a6cc2a]893  LPC24XX_PIN(0, 7, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]894#define LPC24XX_PIN_SSP_1_SCK_P0_12 \
[4a6cc2a]895  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]896#define LPC24XX_PIN_SSP_1_SCK_P4_20 \
[4a6cc2a]897  LPC24XX_PIN(4, 20, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]898
899#define LPC24XX_PIN_SSP_1_SSEL_P0_7 \
[4a6cc2a]900  LPC24XX_PIN(0, 6, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]901#define LPC24XX_PIN_SSP_1_SSEL_P0_13 \
[4a6cc2a]902  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]903#define LPC24XX_PIN_SSP_1_SSEL_P4_21 \
[4a6cc2a]904  LPC24XX_PIN(4, 21, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]905
906#define LPC24XX_PIN_SSP_1_MISO_P0_8 \
[4a6cc2a]907  LPC24XX_PIN(0, 8, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]908#define LPC24XX_PIN_SSP_1_MISO_P0_14 \
[4a6cc2a]909  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]910#define LPC24XX_PIN_SSP_1_MISO_P4_22 \
[4a6cc2a]911  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]912
913#define LPC24XX_PIN_SSP_1_MOSI_P0_9 \
[4a6cc2a]914  LPC24XX_PIN(0, 9, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]915#define LPC24XX_PIN_SSP_1_MOSI_P1_31 \
[4a6cc2a]916  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]917#define LPC24XX_PIN_SSP_1_MOSI_P4_23 \
[4a6cc2a]918  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]919
920/** @} */
921
[14ee5a1e]922#ifdef ARM_MULTILIB_ARCH_V7M
923
924/**
925 * @name SSP 2 Pins
926 *
927 * @{
928 */
929
930#define LPC24XX_PIN_SSP_2_SCK_P1_0 \
931  LPC24XX_PIN(1, 0, LPC24XX_PIN_FUNCTION_00, 4)
[b2eaa6c]932#define LPC24XX_PIN_SSP_2_SCK_P5_2 \
933  LPC24XX_PIN(5, 2, LPC24XX_PIN_FUNCTION_00, 2)
[14ee5a1e]934
935#define LPC24XX_PIN_SSP_2_SSEL_P1_8 \
936  LPC24XX_PIN(1, 8, LPC24XX_PIN_FUNCTION_00, 4)
[b2eaa6c]937#define LPC24XX_PIN_SSP_2_SSEL_P5_3 \
938  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 2)
[14ee5a1e]939
940#define LPC24XX_PIN_SSP_2_MISO_P1_4 \
941  LPC24XX_PIN(1, 4, LPC24XX_PIN_FUNCTION_00, 4)
[b2eaa6c]942#define LPC24XX_PIN_SSP_2_MISO_P5_1 \
943  LPC24XX_PIN(5, 1, LPC24XX_PIN_FUNCTION_00, 2)
[14ee5a1e]944
945#define LPC24XX_PIN_SSP_2_MOSI_P1_1 \
946  LPC24XX_PIN(1, 1, LPC24XX_PIN_FUNCTION_00, 4)
[b2eaa6c]947#define LPC24XX_PIN_SSP_2_MOSI_P5_0 \
948  LPC24XX_PIN(5, 0, LPC24XX_PIN_FUNCTION_00, 2)
[14ee5a1e]949
950/** @} */
951
952#endif /* ARM_MULTILIB_ARCH_V7M */
953
[d74ed4a]954/**
955 * @name UART 0 Pins
956 *
957 * @{
958 */
959
960#define LPC24XX_PIN_UART_0_TXD \
[4a6cc2a]961  LPC24XX_PIN(0, 2, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]962
963#define LPC24XX_PIN_UART_0_RXD \
[4a6cc2a]964  LPC24XX_PIN(0, 3, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]965
966/** @} */
967
968/**
969 * @name UART 1 Pins
970 *
971 * @{
972 */
973
974#define LPC24XX_PIN_UART_1_TXD_P0_15 \
[4a6cc2a]975  LPC24XX_PIN(0, 15, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]976#define LPC24XX_PIN_UART_1_TXD_P2_0 \
[4a6cc2a]977  LPC24XX_PIN(2, 0, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]978#define LPC24XX_PIN_UART_1_TXD_P3_16 \
[4a6cc2a]979  LPC24XX_PIN(3, 16, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]980
981#define LPC24XX_PIN_UART_1_RXD_P0_16 \
[4a6cc2a]982  LPC24XX_PIN(0, 16, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]983#define LPC24XX_PIN_UART_1_RXD_P2_1 \
[4a6cc2a]984  LPC24XX_PIN(2, 1, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]985#define LPC24XX_PIN_UART_1_RXD_P3_17 \
[4a6cc2a]986  LPC24XX_PIN(3, 17, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]987
988/** @} */
989
990/**
991 * @name UART 2 Pins
992 *
993 * @{
994 */
995
996#define LPC24XX_PIN_UART_2_TXD_P0_10 \
[4a6cc2a]997  LPC24XX_PIN(0, 10, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]998#define LPC24XX_PIN_UART_2_TXD_P2_8 \
[4a6cc2a]999  LPC24XX_PIN(2, 8, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1000#define LPC24XX_PIN_UART_2_TXD_P4_22 \
[4a6cc2a]1001  LPC24XX_PIN(4, 22, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1002
1003#define LPC24XX_PIN_UART_2_RXD_P0_11 \
[4a6cc2a]1004  LPC24XX_PIN(0, 11, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1005#define LPC24XX_PIN_UART_2_RXD_P2_9 \
[4a6cc2a]1006  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1007#define LPC24XX_PIN_UART_2_RXD_P4_23 \
[4a6cc2a]1008  LPC24XX_PIN(4, 23, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1009
1010/** @} */
1011
1012/**
1013 * @name UART 3 Pins
1014 *
1015 * @{
1016 */
1017
1018#define LPC24XX_PIN_UART_3_TXD_P0_0 \
[4a6cc2a]1019  LPC24XX_PIN(0, 0, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1020#define LPC24XX_PIN_UART_3_TXD_P0_25 \
[4a6cc2a]1021  LPC24XX_PIN(0, 25, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]1022#define LPC24XX_PIN_UART_3_TXD_P4_28 \
[4a6cc2a]1023  LPC24XX_PIN(4, 28, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]1024
1025#define LPC24XX_PIN_UART_3_RXD_P0_1 \
[4a6cc2a]1026  LPC24XX_PIN(0, 1, LPC24XX_PIN_FUNCTION_10, 2)
[c24d9823]1027#define LPC24XX_PIN_UART_3_RXD_P0_26 \
[4a6cc2a]1028  LPC24XX_PIN(0, 26, LPC24XX_PIN_FUNCTION_11, 3)
[d74ed4a]1029#define LPC24XX_PIN_UART_3_RXD_P4_29 \
[4a6cc2a]1030  LPC24XX_PIN(4, 29, LPC24XX_PIN_FUNCTION_11, 2)
[d74ed4a]1031
1032/** @} */
1033
[14ee5a1e]1034#ifdef ARM_MULTILIB_ARCH_V7M
1035
1036/**
1037 * @name UART 4 Pins
1038 *
1039 * @{
1040 */
1041
1042#define LPC24XX_PIN_UART_4_TXD_P0_22 \
1043  LPC24XX_PIN(0, 22, LPC24XX_PIN_FUNCTION_00, 3)
1044#define LPC24XX_PIN_UART_4_TXD_P1_29 \
1045  LPC24XX_PIN(1, 29, LPC24XX_PIN_FUNCTION_00, 5)
1046#define LPC24XX_PIN_UART_4_TXD_P5_4 \
1047  LPC24XX_PIN(5, 4, LPC24XX_PIN_FUNCTION_00, 4)
1048
1049#define LPC24XX_PIN_UART_4_RXD_P2_9 \
1050  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_00, 3)
1051#define LPC24XX_PIN_UART_4_RXD_P5_3 \
1052  LPC24XX_PIN(5, 3, LPC24XX_PIN_FUNCTION_00, 4)
1053
1054#define LPC24XX_PIN_UART_4_OE_P0_21 \
1055  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 3)
1056
1057#define LPC24XX_PIN_UART_4_SCLK_P0_21 \
1058  LPC24XX_PIN(0, 21, LPC24XX_PIN_FUNCTION_00, 5)
1059
1060#endif /* ARM_MULTILIB_ARCH_V7M */
1061
1062/** @} */
1063
[d74ed4a]1064/**
1065 * @name USB Port 1 Pins
1066 *
1067 * @{
1068 */
1069
1070#define LPC24XX_PIN_USB_D_PLUS_1\
[4a6cc2a]1071  LPC24XX_PIN(0, 29, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1072#define LPC24XX_PIN_USB_D_MINUS_1\
[4a6cc2a]1073  LPC24XX_PIN(0, 30, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1074#define LPC24XX_PIN_USB_UP_LED_1\
[4a6cc2a]1075  LPC24XX_PIN(1, 18, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1076#define LPC24XX_PIN_USB_TX_E_1\
[4a6cc2a]1077  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1078#define LPC24XX_PIN_USB_PPWR_1\
[4a6cc2a]1079  LPC24XX_PIN(1, 19, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1080#define LPC24XX_PIN_USB_TX_DP_1\
[4a6cc2a]1081  LPC24XX_PIN(1, 20, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1082#define LPC24XX_PIN_USB_TX_DM_1\
[4a6cc2a]1083  LPC24XX_PIN(1, 21, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1084#define LPC24XX_PIN_USB_RCV_1\
[4a6cc2a]1085  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1086#define LPC24XX_PIN_USB_PWRD_1\
[4a6cc2a]1087  LPC24XX_PIN(1, 22, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1088#define LPC24XX_PIN_USB_RX_DP_1\
[4a6cc2a]1089  LPC24XX_PIN(1, 23, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1090#define LPC24XX_PIN_USB_RX_DM_1\
[4a6cc2a]1091  LPC24XX_PIN(1, 24, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1092#define LPC24XX_PIN_USB_LS_1\
[4a6cc2a]1093  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1094#define LPC24XX_PIN_USB_HSTEN_1\
[4a6cc2a]1095  LPC24XX_PIN(1, 25, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1096#define LPC24XX_PIN_USB_SSPND_1\
[4a6cc2a]1097  LPC24XX_PIN(1, 26, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1098#define LPC24XX_PIN_USB_INT_1\
[4a6cc2a]1099  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1100#define LPC24XX_PIN_USB_OVRCR_1\
[4a6cc2a]1101  LPC24XX_PIN(1, 27, LPC24XX_PIN_FUNCTION_10, 2)
[d74ed4a]1102#define LPC24XX_PIN_USB_SCL_1\
[4a6cc2a]1103  LPC24XX_PIN(1, 28, LPC24XX_PIN_FUNCTION_01, 1)
[e9e5b92d]1104#define LPC24XX_PIN_USB_SDA_1 \
1105  LPC24XX_PIN_WITH_TYPE( \
1106    1, 29, LPC24XX_PIN_FUNCTION_01, 1, LPC17XX_PIN_TYPE_OPEN_DRAIN \
1107  )
[d74ed4a]1108#define LPC24XX_PIN_USB_CONNECT_1\
[4a6cc2a]1109  LPC24XX_PIN(2, 9, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1110
1111/** @} */
1112
1113/**
1114 * @name USB Port 2 Pins
1115 *
1116 * @{
1117 */
1118
1119#define LPC24XX_PIN_USB_PPWR_2\
[4a6cc2a]1120  LPC24XX_PIN(0, 12, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1121#define LPC24XX_PIN_USB_UP_LED_2\
[4a6cc2a]1122  LPC24XX_PIN(0, 13, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1123#define LPC24XX_PIN_USB_HSTEN_2\
[4a6cc2a]1124  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1125#define LPC24XX_PIN_USB_CONNECT_2\
[4a6cc2a]1126  LPC24XX_PIN(0, 14, LPC24XX_PIN_FUNCTION_01, 3)
[d74ed4a]1127#define LPC24XX_PIN_USB_D_PLUS_2\
[4a6cc2a]1128  LPC24XX_PIN(0, 31, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1129#define LPC24XX_PIN_USB_PWRD_2\
[4a6cc2a]1130  LPC24XX_PIN(1, 30, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1131#define LPC24XX_PIN_USB_OVRCR_2\
[4a6cc2a]1132  LPC24XX_PIN(1, 31, LPC24XX_PIN_FUNCTION_01, 1)
[d74ed4a]1133
1134/** @} */
1135
[ba938b8]1136/** @} */
1137
[9364cf66]1138#ifdef __cplusplus
1139}
1140#endif /* __cplusplus */
1141
1142#endif /* LIBBSP_ARM_LPC24XX_IO_H */
Note: See TracBrowser for help on using the repository browser.