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/console | |
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/console')
-rw-r--r-- | c/src/lib/libbsp/arm/lpc24xx/console/console-config.c | 84 |
1 files changed, 67 insertions, 17 deletions
diff --git a/c/src/lib/libbsp/arm/lpc24xx/console/console-config.c b/c/src/lib/libbsp/arm/lpc24xx/console/console-config.c index de49468c2f..6c64530369 100644 --- a/c/src/lib/libbsp/arm/lpc24xx/console/console-config.c +++ b/c/src/lib/libbsp/arm/lpc24xx/console/console-config.c @@ -7,12 +7,13 @@ */ /* - * Copyright (c) 2008 - * 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 http://www.rtems.com/license/LICENSE. @@ -24,8 +25,9 @@ #include <bsp.h> #include <bsp/lpc24xx.h> #include <bsp/irq.h> +#include <bsp/io.h> -static uint8_t lpc24xx_uart_register(uint32_t addr, uint8_t i) +static uint8_t lpc24xx_uart_get_register(uint32_t addr, uint8_t i) { volatile uint32_t *reg = (volatile uint32_t *) addr; @@ -39,6 +41,54 @@ static void lpc24xx_uart_set_register(uint32_t addr, uint8_t i, uint8_t val) reg [i] = val; } +#ifdef LPC24XX_CONFIG_UART_1 + static bool lpc24xx_uart_probe_1(int minor) + { + static const lpc24xx_pin_range pins [] = { + LPC24XX_PIN_UART_1_TXD_P0_15, + LPC24XX_PIN_UART_1_RXD_P0_16, + LPC24XX_PIN_TERMINAL + }; + + lpc24xx_module_enable(LPC24XX_MODULE_UART_1, LPC24XX_MODULE_CCLK); + lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION); + + return true; + } +#endif + +#ifdef LPC24XX_CONFIG_UART_2 + static bool lpc24xx_uart_probe_2(int minor) + { + static const lpc24xx_pin_range pins [] = { + LPC24XX_PIN_UART_2_TXD_P0_10, + LPC24XX_PIN_UART_2_RXD_P0_11, + LPC24XX_PIN_TERMINAL + }; + + lpc24xx_module_enable(LPC24XX_MODULE_UART_2, LPC24XX_MODULE_CCLK); + lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION); + + return true; + } +#endif + +#ifdef LPC24XX_CONFIG_UART_3 + static bool lpc24xx_uart_probe_3(int minor) + { + static const lpc24xx_pin_range pins [] = { + LPC24XX_PIN_UART_3_TXD_P0_0, + LPC24XX_PIN_UART_3_RXD_P0_1, + LPC24XX_PIN_TERMINAL + }; + + lpc24xx_module_enable(LPC24XX_MODULE_UART_3, LPC24XX_MODULE_CCLK); + lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION); + + return true; + } +#endif + rtems_device_minor_number Console_Port_Minor = 0; console_tbl Console_Port_Tbl [] = { @@ -55,7 +105,7 @@ console_tbl Console_Port_Tbl [] = { .ulCtrlPort1 = UART0_BASE_ADDR, .ulCtrlPort2 = 0, .ulDataPort = UART0_BASE_ADDR, - .getRegister = lpc24xx_uart_register, + .getRegister = lpc24xx_uart_get_register, .setRegister = lpc24xx_uart_set_register, .getData = NULL, .setData = NULL, @@ -68,7 +118,7 @@ console_tbl Console_Port_Tbl [] = { .sDeviceName = "/dev/ttyS1", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc24xx_uart_probe_1, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, @@ -76,7 +126,7 @@ console_tbl Console_Port_Tbl [] = { .ulCtrlPort1 = UART1_BASE_ADDR, .ulCtrlPort2 = 0, .ulDataPort = UART1_BASE_ADDR, - .getRegister = lpc24xx_uart_register, + .getRegister = lpc24xx_uart_get_register, .setRegister = lpc24xx_uart_set_register, .getData = NULL, .setData = NULL, @@ -89,7 +139,7 @@ console_tbl Console_Port_Tbl [] = { .sDeviceName = "/dev/ttyS2", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc24xx_uart_probe_2, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, @@ -97,7 +147,7 @@ console_tbl Console_Port_Tbl [] = { .ulCtrlPort1 = UART2_BASE_ADDR, .ulCtrlPort2 = 0, .ulDataPort = UART2_BASE_ADDR, - .getRegister = lpc24xx_uart_register, + .getRegister = lpc24xx_uart_get_register, .setRegister = lpc24xx_uart_set_register, .getData = NULL, .setData = NULL, @@ -110,7 +160,7 @@ console_tbl Console_Port_Tbl [] = { .sDeviceName = "/dev/ttyS3", .deviceType = SERIAL_NS16550, .pDeviceFns = &ns16550_fns, - .deviceProbe = NULL, + .deviceProbe = lpc24xx_uart_probe_3, .pDeviceFlow = NULL, .ulMargin = 16, .ulHysteresis = 8, @@ -118,7 +168,7 @@ console_tbl Console_Port_Tbl [] = { .ulCtrlPort1 = UART3_BASE_ADDR, .ulCtrlPort2 = 0, .ulDataPort = UART3_BASE_ADDR, - .getRegister = lpc24xx_uart_register, + .getRegister = lpc24xx_uart_get_register, .setRegister = lpc24xx_uart_set_register, .getData = NULL, .setData = NULL, @@ -128,9 +178,9 @@ console_tbl Console_Port_Tbl [] = { #endif }; -#define LPC24XX_UART_NUMBER \ +#define LPC24XX_UART_COUNT \ (sizeof(Console_Port_Tbl) / sizeof(Console_Port_Tbl [0])) -unsigned long Console_Port_Count = LPC24XX_UART_NUMBER; +unsigned long Console_Port_Count = LPC24XX_UART_COUNT; -console_data Console_Port_Data [LPC24XX_UART_NUMBER]; +console_data Console_Port_Data [LPC24XX_UART_COUNT]; |