diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-13 15:19:12 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-10-14 08:02:39 +0200 |
commit | 116ef2e9c7b0a834d0b26df16259b451192b876a (patch) | |
tree | 4a49f305e636463f10c040d217eb12d159938b15 /c/src/lib/libbsp/arm/realview-pbx-a9 | |
parent | libbsp/or1ksim: Fix warnings. (diff) | |
download | rtems-116ef2e9c7b0a834d0b26df16259b451192b876a.tar.bz2 |
bsps/arm: Convert PL011 and PL050 console drivers
Use Termios device API.
Diffstat (limited to 'c/src/lib/libbsp/arm/realview-pbx-a9')
-rw-r--r-- | c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/realview-pbx-a9/console/console-config.c | 93 |
2 files changed, 55 insertions, 46 deletions
diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am index af87b696e0..42e53fa0d8 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am @@ -108,12 +108,8 @@ libbsp_a_SOURCES += ../../shared/src/irq-shell.c libbsp_a_SOURCES += ../shared/arm-gic-irq.c # Console -libbsp_a_SOURCES += ../../shared/console.c -libbsp_a_SOURCES += ../../shared/console_control.c -libbsp_a_SOURCES += ../../shared/console_read.c -libbsp_a_SOURCES += ../../shared/console_select.c -libbsp_a_SOURCES += ../../shared/console_write.c -libbsp_a_SOURCES += ../../shared/console-output-char.c +libbsp_a_SOURCES += ../../shared/console-termios-init.c +libbsp_a_SOURCES += ../../shared/console-termios.c libbsp_a_SOURCES += ../../shared/get-serial-mouse-ps2.c libbsp_a_SOURCES += ../shared/arm-pl011.c libbsp_a_SOURCES += ../shared/arm-pl050.c diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/console/console-config.c b/c/src/lib/libbsp/arm/realview-pbx-a9/console/console-config.c index bc7176535b..1dc77605fe 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/console/console-config.c +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/console/console-config.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * Copyright (c) 2013-2014 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -13,53 +13,66 @@ */ #include <rtems/serial_mouse.h> - -#include <libchip/serial.h> +#include <rtems/bspIo.h> #include <bsp.h> #include <bsp/irq.h> #include <bsp/arm-pl011.h> #include <bsp/arm-pl050.h> +#include <bsp/console-termios.h> + +static arm_pl011_context pl011_context = { + .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("PL011"), + .regs = (volatile pl011 *) 0x10009000, + .irq = RVPBXA9_IRQ_UART_0, + .initial_baud = 115200 +}; + +static arm_pl050_context pl050_context = { + .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("PL050"), + .regs = (volatile pl050 *) 0x10007000, + .irq = RVPBXA9_IRQ_KMI1, + .initial_baud = 115200 +}; + +static void output_char(char c) +{ + if (c == '\n') { + arm_pl011_write_polled(&pl011_context.base, '\r'); + } + + arm_pl011_write_polled(&pl011_context.base, c); +} + +static bool pl011_probe(rtems_termios_device_context *base) +{ + BSP_output_char = output_char; + + return arm_pl011_probe(base); +} + +static void output_char_init(char c) +{ + pl011_probe(&pl011_context.base); + output_char(c); +} + +BSP_output_char_function_type BSP_output_char = output_char_init; + +BSP_polling_getchar_function_type BSP_poll_char = NULL; -console_tbl Console_Configuration_Ports[] = { +const console_device console_device_table[] = { { - .sDeviceName = "/dev/ttyS0", - .deviceType = SERIAL_CUSTOM, - .pDeviceFns = &arm_pl011_fns, - .deviceProbe = NULL, - .pDeviceFlow = NULL, - .ulMargin = 10, - .ulHysteresis = 0, - .pDeviceParams = (void *) 115200, - .ulCtrlPort1 = 0x10009000, - .ulCtrlPort2 = 0, - .ulDataPort = 0, - .getRegister = NULL, - .setRegister = NULL, - .getData = NULL, - .setData = NULL, - .ulClock = 0, - .ulIntVector = RVPBXA9_IRQ_UART_0 + .device_file = "/dev/ttyS0", + .probe = pl011_probe, + .handler = &arm_pl011_fns, + .context = &pl011_context.base }, { - .sDeviceName = SERIAL_MOUSE_DEVICE_PS2, - .deviceType = SERIAL_CUSTOM, - .pDeviceFns = &arm_pl050_fns, - .deviceProbe = NULL, - .pDeviceFlow = NULL, - .ulMargin = 10, - .ulHysteresis = 0, - .pDeviceParams = (void *) 115200, - .ulCtrlPort1 = 0x10007000, - .ulCtrlPort2 = 0, - .ulDataPort = 0, - .getRegister = NULL, - .setRegister = NULL, - .getData = NULL, - .setData = NULL, - .ulClock = 0, - .ulIntVector = RVPBXA9_IRQ_KMI1 + .device_file = SERIAL_MOUSE_DEVICE_PS2, + .probe = console_device_probe_default, + .handler = &arm_pl050_fns, + .context = &pl050_context.base } }; -unsigned long Console_Configuration_Count = - RTEMS_ARRAY_SIZE(Console_Configuration_Ports); +const size_t console_device_count = RTEMS_ARRAY_SIZE(console_device_table); |