Index: c/src/lib/libbsp/arm/lpc24xx/console/console-config.c
===================================================================
--- c/src/lib/libbsp/arm/lpc24xx/console/console-config.c	(revision c49985691f1cd3769ef4bfaa503f3c6eb7e4385a)
+++ c/src/lib/libbsp/arm/lpc24xx/console/console-config.c	(revision 6ec438e8a323cf623cdaecce6f2b3b52b062881a)
@@ -8,8 +8,8 @@
 
 /*
- * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2008-2014 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
- *  Obere Lagerstr. 30
+ *  Dornierstr. 4
  *  82178 Puchheim
  *  Germany
@@ -21,5 +21,6 @@
  */
 
-#include <libchip/serial.h>
+#include <rtems/console.h>
+
 #include <libchip/ns16550.h>
 
@@ -28,4 +29,5 @@
 #include <bsp/irq.h>
 #include <bsp/io.h>
+#include <bsp/console-termios.h>
 
 static uint8_t lpc24xx_uart_get_register(uintptr_t addr, uint8_t i)
@@ -43,93 +45,90 @@
 }
 
-console_tbl Console_Configuration_Ports [] = {
+#ifdef LPC24XX_CONFIG_CONSOLE
+static ns16550_context lpc24xx_uart_context_0 = {
+  .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 0"),
+  .get_reg = lpc24xx_uart_get_register,
+  .set_reg = lpc24xx_uart_set_register,
+  .port = UART0_BASE_ADDR,
+  .irq = LPC24XX_IRQ_UART_0,
+  .clock = LPC24XX_PCLK,
+  .initial_baud = LPC24XX_UART_BAUD,
+  .has_fractional_divider_register = true
+};
+#endif
+
+#ifdef LPC24XX_CONFIG_UART_1
+static ns16550_context lpc24xx_uart_context_1 = {
+  .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 1"),
+  .get_reg = lpc24xx_uart_get_register,
+  .set_reg = lpc24xx_uart_set_register,
+  .port = UART1_BASE_ADDR,
+  .irq = LPC24XX_IRQ_UART_1,
+  .clock = LPC24XX_PCLK,
+  .initial_baud = LPC24XX_UART_BAUD,
+  .has_fractional_divider_register = true
+};
+#endif
+
+#ifdef LPC24XX_CONFIG_UART_2
+static ns16550_context lpc24xx_uart_context_2 = {
+  .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 2"),
+  .get_reg = lpc24xx_uart_get_register,
+  .set_reg = lpc24xx_uart_set_register,
+  .port = UART2_BASE_ADDR,
+  .irq = LPC24XX_IRQ_UART_2,
+  .clock = LPC24XX_PCLK,
+  .initial_baud = LPC24XX_UART_BAUD,
+  .has_fractional_divider_register = true
+};
+#endif
+
+#ifdef LPC24XX_CONFIG_UART_3
+static ns16550_context lpc24xx_uart_context_3 = {
+  .base = RTEMS_TERMIOS_DEVICE_CONTEXT_INITIALIZER("UART 3"),
+  .get_reg = lpc24xx_uart_get_register,
+  .set_reg = lpc24xx_uart_set_register,
+  .port = UART3_BASE_ADDR,
+  .irq = LPC24XX_IRQ_UART_3,
+  .clock = LPC24XX_PCLK,
+  .initial_baud = LPC24XX_UART_BAUD,
+  .has_fractional_divider_register = true
+};
+#endif
+
+const console_device console_device_table[] = {
   #ifdef LPC24XX_CONFIG_CONSOLE
     {
-      .sDeviceName = "/dev/ttyS0",
-      .deviceType = SERIAL_NS16550_WITH_FDR,
-      .pDeviceFns = &ns16550_fns,
-      .deviceProbe = NULL,
-      .pDeviceFlow = NULL,
-      .ulMargin = 16,
-      .ulHysteresis = 8,
-      .pDeviceParams = (void *) LPC24XX_UART_BAUD,
-      .ulCtrlPort1 = UART0_BASE_ADDR,
-      .ulCtrlPort2 = 0,
-      .ulDataPort = UART0_BASE_ADDR,
-      .getRegister = lpc24xx_uart_get_register,
-      .setRegister = lpc24xx_uart_set_register,
-      .getData = NULL,
-      .setData = NULL,
-      .ulClock = LPC24XX_PCLK,
-      .ulIntVector = LPC24XX_IRQ_UART_0
+      .device_file = "/dev/ttyS0",
+      .probe = console_device_probe_default,
+      .handler = &ns16550_handler_interrupt,
+      .context = &lpc24xx_uart_context_0.base
     },
   #endif
   #ifdef LPC24XX_CONFIG_UART_1
     {
-      .sDeviceName = "/dev/ttyS1",
-      .deviceType = SERIAL_NS16550_WITH_FDR,
-      .pDeviceFns = &ns16550_fns,
-      .deviceProbe = lpc24xx_uart_probe_1,
-      .pDeviceFlow = NULL,
-      .ulMargin = 16,
-      .ulHysteresis = 8,
-      .pDeviceParams = (void *) LPC24XX_UART_BAUD,
-      .ulCtrlPort1 = UART1_BASE_ADDR,
-      .ulCtrlPort2 = 0,
-      .ulDataPort = UART1_BASE_ADDR,
-      .getRegister = lpc24xx_uart_get_register,
-      .setRegister = lpc24xx_uart_set_register,
-      .getData = NULL,
-      .setData = NULL,
-      .ulClock = LPC24XX_PCLK,
-      .ulIntVector = LPC24XX_IRQ_UART_1
+      .device_file = "/dev/ttyS1",
+      .probe = lpc24xx_uart_probe_1,
+      .handler = &ns16550_handler_interrupt,
+      .context = &lpc24xx_uart_context_1.base
     },
   #endif
   #ifdef LPC24XX_CONFIG_UART_2
     {
-      .sDeviceName = "/dev/ttyS2",
-      .deviceType = SERIAL_NS16550_WITH_FDR,
-      .pDeviceFns = &ns16550_fns,
-      .deviceProbe = lpc24xx_uart_probe_2,
-      .pDeviceFlow = NULL,
-      .ulMargin = 16,
-      .ulHysteresis = 8,
-      .pDeviceParams = (void *) LPC24XX_UART_BAUD,
-      .ulCtrlPort1 = UART2_BASE_ADDR,
-      .ulCtrlPort2 = 0,
-      .ulDataPort = UART2_BASE_ADDR,
-      .getRegister = lpc24xx_uart_get_register,
-      .setRegister = lpc24xx_uart_set_register,
-      .getData = NULL,
-      .setData = NULL,
-      .ulClock = LPC24XX_PCLK,
-      .ulIntVector = LPC24XX_IRQ_UART_2
+      .device_file = "/dev/ttyS2",
+      .probe = lpc24xx_uart_probe_2,
+      .handler = &ns16550_handler_interrupt,
+      .context = &lpc24xx_uart_context_2.base
     },
   #endif
   #ifdef LPC24XX_CONFIG_UART_3
     {
-      .sDeviceName = "/dev/ttyS3",
-      .deviceType = SERIAL_NS16550_WITH_FDR,
-      .pDeviceFns = &ns16550_fns,
-      .deviceProbe = lpc24xx_uart_probe_3,
-      .pDeviceFlow = NULL,
-      .ulMargin = 16,
-      .ulHysteresis = 8,
-      .pDeviceParams = (void *) LPC24XX_UART_BAUD,
-      .ulCtrlPort1 = UART3_BASE_ADDR,
-      .ulCtrlPort2 = 0,
-      .ulDataPort = UART3_BASE_ADDR,
-      .getRegister = lpc24xx_uart_get_register,
-      .setRegister = lpc24xx_uart_set_register,
-      .getData = NULL,
-      .setData = NULL,
-      .ulClock = LPC24XX_PCLK,
-      .ulIntVector = LPC24XX_IRQ_UART_3
+      .device_file = "/dev/ttyS3",
+      .probe = lpc24xx_uart_probe_3,
+      .handler = &ns16550_handler_interrupt,
+      .context = &lpc24xx_uart_context_3.base
     },
   #endif
 };
 
-#define LPC24XX_UART_COUNT \
-  (sizeof(Console_Configuration_Ports) \
-    / sizeof(Console_Configuration_Ports [0]))
-unsigned long Console_Configuration_Count = LPC24XX_UART_COUNT;
+const size_t console_device_count = RTEMS_ARRAY_SIZE(console_device_table);
Index: c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-1.c
===================================================================
--- c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-1.c	(revision c49985691f1cd3769ef4bfaa503f3c6eb7e4385a)
+++ c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-1.c	(revision 6ec438e8a323cf623cdaecce6f2b3b52b062881a)
@@ -8,8 +8,8 @@
 
 /*
- * Copyright (c) 2011-2013 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2011-2014 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
- *  Obere Lagerstr. 30
+ *  Dornierstr. 4
  *  82178 Puchheim
  *  Germany
@@ -21,8 +21,10 @@
  */
 
+#include <libchip/ns16550.h>
+
 #include <bsp.h>
 #include <bsp/io.h>
 
-bool lpc24xx_uart_probe_1(int minor)
+bool lpc24xx_uart_probe_1(rtems_termios_device_context *context)
 {
   static const lpc24xx_pin_range pins [] = {
@@ -35,4 +37,4 @@
   lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION);
 
-  return true;
+  return ns16550_probe(context);
 }
Index: c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-2.c
===================================================================
--- c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-2.c	(revision c49985691f1cd3769ef4bfaa503f3c6eb7e4385a)
+++ c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-2.c	(revision 6ec438e8a323cf623cdaecce6f2b3b52b062881a)
@@ -8,8 +8,8 @@
 
 /*
- * Copyright (c) 2011-2013 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2011-2014 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
- *  Obere Lagerstr. 30
+ *  Dornierstr. 4
  *  82178 Puchheim
  *  Germany
@@ -21,8 +21,10 @@
  */
 
+#include <libchip/ns16550.h>
+
 #include <bsp.h>
 #include <bsp/io.h>
 
-bool lpc24xx_uart_probe_2(int minor)
+bool lpc24xx_uart_probe_2(rtems_termios_device_context *context)
 {
   static const lpc24xx_pin_range pins [] = {
@@ -35,4 +37,4 @@
   lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION);
 
-  return true;
+  return ns16550_probe(context);
 }
Index: c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-3.c
===================================================================
--- c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-3.c	(revision c49985691f1cd3769ef4bfaa503f3c6eb7e4385a)
+++ c/src/lib/libbsp/arm/lpc24xx/console/uart-probe-3.c	(revision 6ec438e8a323cf623cdaecce6f2b3b52b062881a)
@@ -8,8 +8,8 @@
 
 /*
- * Copyright (c) 2011-2013 embedded brains GmbH.  All rights reserved.
+ * Copyright (c) 2011-2014 embedded brains GmbH.  All rights reserved.
  *
  *  embedded brains GmbH
- *  Obere Lagerstr. 30
+ *  Dornierstr. 4
  *  82178 Puchheim
  *  Germany
@@ -21,8 +21,10 @@
  */
 
+#include <libchip/ns16550.h>
+
 #include <bsp.h>
 #include <bsp/io.h>
 
-bool lpc24xx_uart_probe_3(int minor)
+bool lpc24xx_uart_probe_3(rtems_termios_device_context *context)
 {
   static const lpc24xx_pin_range pins [] = {
@@ -35,4 +37,4 @@
   lpc24xx_pin_config(&pins [0], LPC24XX_PIN_SET_FUNCTION);
 
-  return true;
+  return ns16550_probe(context);
 }
