diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-05-19 12:30:00 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2011-05-19 12:30:00 +0000 |
commit | d74ed4ad4bde98dda6b685515b2523539e04ea1f (patch) | |
tree | 263bf95d00057efd30a7e0eec10f6125d74c2c63 /c/src/lib/libbsp/arm/lpc24xx/misc | |
parent | 2011-05-19 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-d74ed4ad4bde98dda6b685515b2523539e04ea1f.tar.bz2 |
2011-05-19 Sebastian Huber <sebastian.huber@embedded-brains.de>
* i2c/i2c-config.c: New file.
* include/lcd.h: Removed EMC definitions.
* misc/dma.c: Fixed initialization.
* include/i2c.h, include/io.h, include/lpc-ethernet-config.h,
include/lpc24xx.h, console/console-config.c, i2c/i2c.c, misc/io.c,
misc/lcd.c, startup/bspstart.c, startup/bspstarthooks.c: New pin
configuration API.
* Makefile.am, preinstall.am: Update.
Diffstat (limited to 'c/src/lib/libbsp/arm/lpc24xx/misc')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/misc/dma.c | 29 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/misc/io.c | 330 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/misc/lcd.c | 10 |
3 files changed, 157 insertions, 212 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/dma.c b/c/src/lib/libbsp/arm/lpc24xx/misc/dma.c index 5b0a50dcf3..c00e21f6ee 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/misc/dma.c +++ b/c/src/lib/libbsp/arm/lpc24xx/misc/dma.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2008, 2009 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2008-2011 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -38,19 +39,21 @@ void lpc24xx_dma_initialize(void) /* Disable module */ GPDMA_CONFIG = 0; - /* Enable module */ - #if BYTE_ORDER == LITTLE_ENDIAN - GPDMA_CONFIG = GPDMA_CONFIG_EN; - #else - GPDMA_CONFIG = GPDMA_CONFIG_EN | GPDMA_CONFIG_MODE; - #endif - /* Reset registers */ GPDMA_SOFT_SREQ = 0; GPDMA_SOFT_BREQ = 0; GPDMA_SOFT_LSREQ = 0; GPDMA_SOFT_LBREQ = 0; GPDMA_SYNC = 0; + GPDMA_CH0_CFG = 0; + GPDMA_CH1_CFG = 0; + + /* Enable module */ + #if BYTE_ORDER == LITTLE_ENDIAN + GPDMA_CONFIG = GPDMA_CONFIG_EN; + #else + GPDMA_CONFIG = GPDMA_CONFIG_EN | GPDMA_CONFIG_MODE; + #endif } rtems_status_code lpc24xx_dma_channel_obtain(unsigned channel) diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c index 6af279efad..0a25271a78 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/misc/io.c +++ b/c/src/lib/libbsp/arm/lpc24xx/misc/io.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2009, 2010 - * embedded brains GmbH - * Obere Lagerstr. 30 - * D-82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Copyright (c) 2009-2011 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * <rtems@embedded-brains.de> * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -22,193 +23,11 @@ #include <bsp/io.h> #include <bsp/system-clocks.h> -#define LPC24XX_IO_SELECT(pin) (pin >> 4U) - -#define LPC24XX_IO_SELECT_SHIFT(pin) ((pin & 0xfU) << 1U) - -#define LPC24XX_IO_SELECT_MASK 0x3U - -#define LPC24XX_IO_PRIMARY 0x0U - -#define LPC24XX_IO_ALTERNATE_0 0x1U - -#define LPC24XX_IO_ALTERNATE_1 0x2U - -#define LPC24XX_IO_ALTERNATE_2 0x3U - -#define LPC24XX_IO_ENTRY(mod, cfg, begin_port, begin_index, last_port, last_index, function) \ - { \ - .module = mod, \ - .config = cfg, \ - .pin_begin = LPC24XX_IO_INDEX_BY_PORT(begin_port, begin_index), \ - .pin_last = LPC24XX_IO_INDEX_BY_PORT(last_port, last_index), \ - .pin_function = function \ - } - -typedef struct { - unsigned module : 6; - unsigned config : 4; - unsigned pin_begin : 8; - unsigned pin_last : 8; - unsigned pin_function : 3; -} lpc24xx_io_entry; - -typedef void (*lpc24xx_io_iterate_routine)(unsigned pin, unsigned function); - -static const lpc24xx_io_entry lpc24xx_io_config_table [] = { - /* UART */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_0, 0, 0, 2, 0, 3, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_1, 0, 0, 15, 0, 16, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_1, 1, 2, 0, 2, 1, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_1, 2, 3, 16, 3, 17, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_2, 0, 0, 10, 0, 11, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_2, 1, 2, 8, 2, 9, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_2, 2, 4, 22, 4, 23, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_3, 0, 0, 0, 0, 1, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_3, 1, 0, 25, 0, 26, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_UART_3, 2, 4, 28, 4, 29, LPC24XX_IO_ALTERNATE_2), - - /* Ethernet */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ETHERNET, 0, 1, 0, 1, 17, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ETHERNET, 1, 1, 0, 1, 1, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ETHERNET, 1, 1, 4, 1, 4, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ETHERNET, 1, 1, 8, 1, 10, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ETHERNET, 1, 1, 14, 1, 17, LPC24XX_IO_ALTERNATE_0), - - /* ADC */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 0, 0, 12, 0, 13, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 1, 0, 23, 0, 25, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 2, 0, 26, 0, 26, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_ADC, 2, 1, 30, 1, 31, LPC24XX_IO_ALTERNATE_2), - - /* I2C */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_0, 0, 0, 27, 0, 28, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_1, 0, 0, 0, 0, 1, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_1, 1, 0, 19, 0, 20, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_1, 2, 2, 14, 2, 15, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_2, 0, 0, 10, 0, 11, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_2, 1, 2, 30, 2, 31, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2C_2, 2, 4, 20, 4, 21, LPC24XX_IO_ALTERNATE_1), - - /* I2S */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2S, 0, 0, 4, 0, 9, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2S, 1, 0, 23, 0, 25, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_I2S, 1, 2, 11, 2, 13, LPC24XX_IO_ALTERNATE_2), - - /* SSP */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_0, 0, 0, 15, 0, 18, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_0, 1, 1, 20, 0, 21, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_0, 1, 1, 23, 0, 24, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_0, 2, 2, 22, 2, 23, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_0, 2, 2, 26, 2, 27, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_1, 0, 0, 6, 0, 9, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_1, 1, 0, 12, 0, 13, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_1, 1, 0, 14, 0, 14, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_1, 1, 1, 31, 1, 31, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SSP_1, 2, 4, 20, 4, 23, LPC24XX_IO_ALTERNATE_2), - - /* USB */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_USB, 0, 0, 29, 0, 30, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_USB, 0, 1, 19, 1, 19, LPC24XX_IO_ALTERNATE_1), - - /* SPI */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_SPI, 0, 0, 15, 0, 18, LPC24XX_IO_ALTERNATE_2), - - /* PWM */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_PWM_1, 0, 2, 0, 2, 0, LPC24XX_IO_ALTERNATE_0), - - /* LCD */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 0, 4, 0, 9, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 1, 20, 1, 29, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 2, 0, 2, 3, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 2, 5, 2, 9, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 2, 12, 2, 13, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 0, 4, 28, 4, 29, LPC24XX_IO_ALTERNATE_1), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 1, 1, 20, 1, 29, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 1, 2, 0, 2, 3, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 1, 2, 5, 2, 9, LPC24XX_IO_ALTERNATE_2), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 1, 2, 12, 2, 13, LPC24XX_IO_ALTERNATE_0), - LPC24XX_IO_ENTRY(LPC24XX_MODULE_LCD, 1, 4, 28, 4, 29, LPC24XX_IO_ALTERNATE_1), - - /* DAC */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_DAC, 0, 0, 26, 0, 26, LPC24XX_IO_ALTERNATE_1), - - /* Terminate */ - LPC24XX_IO_ENTRY(LPC24XX_MODULE_COUNT, 0, 0, 0, 0, 0, 0) -}; - -static rtems_status_code lpc24xx_io_iterate( - lpc24xx_module module, - unsigned config, - lpc24xx_io_iterate_routine routine -) -{ - rtems_status_code sc = RTEMS_SUCCESSFUL; - const lpc24xx_io_entry *e = &lpc24xx_io_config_table [0]; - - while (e->module != LPC24XX_MODULE_COUNT) { - if (e->module == module && e->config == config) { - unsigned pin = e->pin_begin; - unsigned last = e->pin_last; - unsigned function = e->pin_function; - - while (pin <= last) { - (*routine)(pin, function); - - ++pin; - } - - sc = RTEMS_SUCCESSFUL; - } - ++e; - } - - return sc; -} - -static void lpc24xx_io_do_config(unsigned pin, unsigned function) -{ - rtems_interrupt_level level; - unsigned select = LPC24XX_IO_SELECT(pin); - unsigned shift = LPC24XX_IO_SELECT_SHIFT(pin); - unsigned mask = LPC24XX_IO_SELECT_MASK << shift; - unsigned pinsel = 0; - - rtems_interrupt_disable(level); - pinsel = LPC24XX_PINSEL [select]; - pinsel &= ~mask; - pinsel |= (function & LPC24XX_IO_SELECT_MASK) << shift; - LPC24XX_PINSEL [select] = pinsel; - rtems_interrupt_enable(level); -} - -static void lpc24xx_io_do_release(unsigned pin, unsigned function) -{ - rtems_interrupt_level level; - unsigned select = LPC24XX_IO_SELECT(pin); - unsigned shift = LPC24XX_IO_SELECT_SHIFT(pin); - unsigned mask = LPC24XX_IO_SELECT_MASK << shift; - - rtems_interrupt_disable(level); - LPC24XX_PINSEL [select] &= ~mask; - rtems_interrupt_enable(level); -} +#define LPC24XX_PIN_SELECT(pin) (pin >> 4U) -rtems_status_code lpc24xx_io_config( - lpc24xx_module module, - unsigned config -) -{ - return lpc24xx_io_iterate(module, config, lpc24xx_io_do_config); -} +#define LPC24XX_PIN_SELECT_SHIFT(pin) ((pin & 0xfU) << 1U) -rtems_status_code lpc24xx_io_release( - lpc24xx_module module, - unsigned config -) -{ - return lpc24xx_io_iterate(module, config, lpc24xx_io_do_release); -} +#define LPC24XX_PIN_SELECT_MASK 0x3U rtems_status_code lpc24xx_gpio_config( unsigned pin, @@ -219,8 +38,8 @@ rtems_status_code lpc24xx_gpio_config( rtems_interrupt_level level; unsigned port = LPC24XX_IO_PORT(pin); unsigned bit = LPC24XX_IO_PORT_BIT(pin); - unsigned select = LPC24XX_IO_SELECT(pin); - unsigned shift = LPC24XX_IO_SELECT_SHIFT(pin); + unsigned select = LPC24XX_PIN_SELECT(pin); + unsigned shift = LPC24XX_PIN_SELECT_SHIFT(pin); unsigned resistor = settings & LPC24XX_GPIO_RESISTOR_MASK; unsigned output = (settings & LPC24XX_GPIO_OUTPUT) != 0 ? 1U : 0U; @@ -244,8 +63,8 @@ rtems_status_code lpc24xx_gpio_config( /* Resistor */ LPC24XX_PINMODE [select] = - (LPC24XX_PINMODE [select] & ~(LPC24XX_IO_SELECT_MASK << shift)) - | ((resistor & LPC24XX_IO_SELECT_MASK) << shift); + (LPC24XX_PINMODE [select] & ~(LPC24XX_PIN_SELECT_MASK << shift)) + | ((resistor & LPC24XX_PIN_SELECT_MASK) << shift); rtems_interrupt_flash(level); @@ -392,3 +211,124 @@ rtems_status_code lpc24xx_module_disable( { return lpc24xx_module_do_enable(module, 0U, false); } + +typedef rtems_status_code (*lpc24xx_pin_visitor)( + volatile uint32_t *pinsel, + uint32_t pinsel_mask, + uint32_t pinsel_value, + volatile uint32_t *fio_dir, + uint32_t fio_bit +); + +static rtems_status_code lpc24xx_pin_set_function( + volatile uint32_t *pinsel, + uint32_t pinsel_mask, + uint32_t pinsel_value, + volatile uint32_t *fio_dir, + uint32_t fio_bit +) +{ + rtems_interrupt_level level; + + rtems_interrupt_disable(level); + *pinsel = (*pinsel & ~pinsel_mask) | pinsel_value; + rtems_interrupt_enable(level); + + return RTEMS_SUCCESSFUL; +} + +static rtems_status_code lpc24xx_pin_check_function( + volatile uint32_t *pinsel, + uint32_t pinsel_mask, + uint32_t pinsel_value, + volatile uint32_t *fio_dir, + uint32_t fio_bit +) +{ + if ((*pinsel & pinsel_mask) == pinsel_value) { + return RTEMS_SUCCESSFUL; + } else { + return RTEMS_IO_ERROR; + } +} + +static rtems_status_code lpc24xx_pin_set_input( + volatile uint32_t *pinsel, + uint32_t pinsel_mask, + uint32_t pinsel_value, + volatile uint32_t *fio_dir, + uint32_t fio_bit +) +{ + rtems_interrupt_level level; + + rtems_interrupt_disable(level); + *fio_dir &= ~fio_bit; + *pinsel &= ~pinsel_mask; + rtems_interrupt_enable(level); + + return RTEMS_SUCCESSFUL; +} + +static rtems_status_code lpc24xx_pin_check_input( + volatile uint32_t *pinsel, + uint32_t pinsel_mask, + uint32_t pinsel_value, + volatile uint32_t *fio_dir, + uint32_t fio_bit +) +{ + if ((*pinsel & pinsel_mask) == 0 && (*fio_dir & fio_bit) == 0) { + return RTEMS_SUCCESSFUL; + } else { + return RTEMS_IO_ERROR; + } +} + +static const lpc24xx_pin_visitor lpc24xx_pin_visitors [] = { + [LPC24XX_PIN_SET_FUNCTION] = lpc24xx_pin_set_function, + [LPC24XX_PIN_CHECK_FUNCTION] = lpc24xx_pin_check_function, + [LPC24XX_PIN_SET_INPUT] = lpc24xx_pin_set_input, + [LPC24XX_PIN_CHECK_INPUT] = lpc24xx_pin_check_input +}; + +rtems_status_code lpc24xx_pin_config( + const lpc24xx_pin_range *pins, + lpc24xx_pin_action action +) +{ + rtems_status_code sc = RTEMS_SUCCESSFUL; + + if ((unsigned) action <= LPC24XX_PIN_CHECK_INPUT) { + lpc24xx_pin_visitor visitor = lpc24xx_pin_visitors [action]; + lpc24xx_pin_range terminal = LPC24XX_PIN_TERMINAL; + + while (sc == RTEMS_SUCCESSFUL && pins->value != terminal.value) { + uint32_t port = pins->fields.port; + uint32_t index = pins->fields.index_begin; + uint32_t last = pins->fields.index_last; + uint32_t function = pins->fields.function; + volatile uint32_t *fio_dir = &LPC24XX_FIO [port].dir; + + while (sc == RTEMS_SUCCESSFUL && index <= last) { + uint32_t pin = LPC24XX_IO_INDEX_BY_PORT(port, index); + uint32_t select = LPC24XX_PIN_SELECT(pin); + uint32_t shift = LPC24XX_PIN_SELECT_SHIFT(pin); + volatile uint32_t *pinsel = &LPC24XX_PINSEL [select]; + uint32_t pinsel_mask = LPC24XX_PIN_SELECT_MASK << shift; + uint32_t pinsel_value = (function & LPC24XX_PIN_SELECT_MASK) << shift; + uint32_t fio_bit = 1U << index; + + sc = (*visitor)(pinsel, pinsel_mask, pinsel_value, fio_dir, fio_bit); + + ++index; + } + + ++pins; + } + } else { + sc = RTEMS_NOT_DEFINED; + } + + return sc; +} diff --git a/c/src/lib/libbsp/arm/lpc24xx/misc/lcd.c b/c/src/lib/libbsp/arm/lpc24xx/misc/lcd.c index d16f274625..c69b974b77 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/misc/lcd.c +++ b/c/src/lib/libbsp/arm/lpc24xx/misc/lcd.c @@ -23,14 +23,16 @@ #include <assert.h> #include <bsp/lpc24xx.h> -#include <bsp/io.h> #include <bsp/lcd.h> #include <bsp/utility.h> #include <bsp/system-clocks.h> #define LCD_ENABLE BSP_BIT32(0) -rtems_status_code lpc24xx_lcd_set_mode(lpc24xx_lcd_mode mode, unsigned pin_config) +rtems_status_code lpc24xx_lcd_set_mode( + lpc24xx_lcd_mode mode, + const lpc24xx_pin_range *pins +) { rtems_status_code sc = RTEMS_SUCCESSFUL; bool enable = false; @@ -61,7 +63,7 @@ rtems_status_code lpc24xx_lcd_set_mode(lpc24xx_lcd_mode mode, unsigned pin_confi PINSEL11 = BSP_FLD32(mode, 1, 3) | LCD_ENABLE; - sc = lpc24xx_io_config(LPC24XX_MODULE_LCD, pin_config); + sc = lpc24xx_pin_config(pins, LPC24XX_PIN_SET_FUNCTION); assert(sc == RTEMS_SUCCESSFUL); } else { if (lpc24xx_lcd_current_mode() != LCD_MODE_DISABLED) { @@ -78,7 +80,7 @@ rtems_status_code lpc24xx_lcd_set_mode(lpc24xx_lcd_mode mode, unsigned pin_confi LCD_CTRL = lcd_ctrl; } - sc = lpc24xx_io_release(LPC24XX_MODULE_LCD, pin_config); + sc = lpc24xx_pin_config(pins, LPC24XX_PIN_SET_INPUT); assert(sc == RTEMS_SUCCESSFUL); PINSEL11 = 0; |