![]() |
|
|||
File indexing completed on 2025-05-11 08:24:05
0001 /* SPDX-License-Identifier: BSD-2-Clause */ 0002 0003 /** 0004 * @file 0005 * 0006 * @ingroup Console 0007 * 0008 * @brief Generic libchip console select 0009 */ 0010 0011 /* 0012 * This file contains a routine to select the 0013 * console based upon a number of criteria. 0014 * 0015 * COPYRIGHT (c) 2011. 0016 * On-Line Applications Research Corporation (OAR). 0017 * 0018 * Redistribution and use in source and binary forms, with or without 0019 * modification, are permitted provided that the following conditions 0020 * are met: 0021 * 1. Redistributions of source code must retain the above copyright 0022 * notice, this list of conditions and the following disclaimer. 0023 * 2. Redistributions in binary form must reproduce the above copyright 0024 * notice, this list of conditions and the following disclaimer in the 0025 * documentation and/or other materials provided with the distribution. 0026 * 0027 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 0028 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 0029 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 0030 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 0031 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 0032 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 0033 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 0034 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 0035 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 0036 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 0037 * POSSIBILITY OF SUCH DAMAGE. 0038 */ 0039 0040 #include <bsp.h> 0041 #include <bsp/fatal.h> 0042 #include <rtems/libio.h> 0043 #include <stdlib.h> 0044 #include <assert.h> 0045 #include <termios.h> 0046 0047 #include <rtems/termiostypes.h> 0048 #include <libchip/serial.h> 0049 #include "legacy-console.h" 0050 0051 /* 0052 * Method to return true if the device associated with the 0053 * minor number probs available. 0054 */ 0055 static bool bsp_Is_Available( rtems_device_minor_number minor ) 0056 { 0057 console_tbl *cptr = Console_Port_Tbl[minor]; 0058 0059 /* 0060 * First perform the configuration dependent probe, then the 0061 * device dependent probe 0062 */ 0063 if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) && 0064 cptr->pDeviceFns->deviceProbe(minor)) { 0065 return true; 0066 } 0067 return false; 0068 } 0069 0070 /* 0071 * Method to return the first available device. 0072 */ 0073 static rtems_device_minor_number bsp_First_Available_Device( void ) 0074 { 0075 rtems_device_minor_number minor; 0076 0077 for (minor=0; minor < Console_Port_Count ; minor++) { 0078 console_tbl *cptr = Console_Port_Tbl[minor]; 0079 0080 /* 0081 * First perform the configuration dependent probe, then the 0082 * device dependent probe 0083 */ 0084 0085 if ((!cptr->deviceProbe || cptr->deviceProbe(minor)) && 0086 cptr->pDeviceFns->deviceProbe(minor)) { 0087 return minor; 0088 } 0089 } 0090 0091 /* 0092 * Error No devices were found. We will want to bail here. 0093 */ 0094 bsp_fatal(BSP_FATAL_CONSOLE_NO_DEV); 0095 } 0096 0097 void bsp_console_select(void) 0098 { 0099 0100 /* 0101 * Reset Console_Port_Minor and 0102 * BSPPrintkPort here if desired. 0103 * 0104 * This default version allows the bsp to set these 0105 * values at creation and will not touch them again 0106 * unless the selected port number is not available. 0107 */ 0108 0109 /* 0110 * If the device that was selected isn't available then 0111 * let the user know and select the first available device. 0112 */ 0113 if ( !bsp_Is_Available( Console_Port_Minor ) ) { 0114 Console_Port_Minor = bsp_First_Available_Device(); 0115 } 0116 }
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |