summaryrefslogtreecommitdiffstats
path: root/bsps/shared/dev/serial/legacy-console-select.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-05 17:07:20 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-12 07:09:10 +0200
commitb43ea9fed2ce52997933704a522fc28ebcd27968 (patch)
tree9e8b521394df11aecba4c44feb801b1cca412adf /bsps/shared/dev/serial/legacy-console-select.c
parentbsps: Remove unused console_select_simple.c (diff)
downloadrtems-b43ea9fed2ce52997933704a522fc28ebcd27968.tar.bz2
bsps: Move legacy console driver to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'bsps/shared/dev/serial/legacy-console-select.c')
-rw-r--r--bsps/shared/dev/serial/legacy-console-select.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/bsps/shared/dev/serial/legacy-console-select.c b/bsps/shared/dev/serial/legacy-console-select.c
new file mode 100644
index 0000000000..8d545e7737
--- /dev/null
+++ b/bsps/shared/dev/serial/legacy-console-select.c
@@ -0,0 +1,97 @@
+/**
+ * @file
+ *
+ * @ingroup Console
+ *
+ * @brief Generic libchip console select
+ */
+
+/*
+ * This file contains a routine to select the
+ * console based upon a number of criteria.
+ *
+ * COPYRIGHT (c) 2011.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <bsp.h>
+#include <bsp/fatal.h>
+#include <rtems/libio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <termios.h>
+
+#include <rtems/termiostypes.h>
+#include <libchip/serial.h>
+#include "legacy-console.h"
+
+/*
+ * Method to return true if the device associated with the
+ * minor number probs available.
+ */
+static bool bsp_Is_Available( rtems_device_minor_number minor )
+{
+ console_tbl *cptr = Console_Port_Tbl[minor];
+
+ /*
+ * First perform the configuration dependent probe, then the
+ * device dependent probe
+ */
+ if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) &&
+ cptr->pDeviceFns->deviceProbe(minor)) {
+ return true;
+ }
+ return false;
+}
+
+/*
+ * Method to return the first available device.
+ */
+static rtems_device_minor_number bsp_First_Available_Device( void )
+{
+ rtems_device_minor_number minor;
+
+ for (minor=0; minor < Console_Port_Count ; minor++) {
+ console_tbl *cptr = Console_Port_Tbl[minor];
+
+ /*
+ * First perform the configuration dependent probe, then the
+ * device dependent probe
+ */
+
+ if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) &&
+ cptr->pDeviceFns->deviceProbe(minor)) {
+ return minor;
+ }
+ }
+
+ /*
+ * Error No devices were found. We will want to bail here.
+ */
+ bsp_fatal(BSP_FATAL_CONSOLE_NO_DEV);
+}
+
+void bsp_console_select(void)
+{
+
+ /*
+ * Reset Console_Port_Minor and
+ * BSPPrintkPort here if desired.
+ *
+ * This default version allows the bsp to set these
+ * values at creation and will not touch them again
+ * unless the selected port number is not available.
+ */
+
+ /*
+ * If the device that was selected isn't available then
+ * let the user know and select the first available device.
+ */
+ if ( !bsp_Is_Available( Console_Port_Minor ) ) {
+ Console_Port_Minor = bsp_First_Available_Device();
+ }
+}