From d2e7e385fc57e2fab5465a2b622212f634d52845 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Mon, 27 Oct 2014 15:38:20 +0000 Subject: EmbeddedPkg: Clarify the declaration of SerialPortGetControl() Rework the PL011UartGetControl() function removing a TODO by the way. Update of the header comment blocks of (PL011Uart|SerialPort)GetControl() functions. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron Reviewed-By: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16252 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c | 46 ++++++++++++++-------- ArmPlatformPkg/Include/Drivers/PL011Uart.h | 36 +++++++++++++---- .../PL011SerialPortLib/PL011SerialPortExtLib.c | 32 +++++++++++---- 3 files changed, 82 insertions(+), 32 deletions(-) (limited to 'ArmPlatformPkg') diff --git a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c index a40e269d07..7e74a05df7 100644 --- a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c +++ b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c @@ -236,20 +236,39 @@ PL011UartSetControl ( } /** - Get the serial device control bits. - @param UartBase The base address of the PL011 UART. - @param Control Control signals read from the serial device. - - @retval EFI_SUCCESS The control bits were read from the serial device. - @retval EFI_DEVICE_ERROR The serial device is not functioning correctly. + Retrieve the status of the control bits on a serial device. + + @param[in] UartBase UART registers base address + @param[out] Control Status of the control bits on a serial device : + + . EFI_SERIAL_DATA_CLEAR_TO_SEND, EFI_SERIAL_DATA_SET_READY, + EFI_SERIAL_RING_INDICATE, EFI_SERIAL_CARRIER_DETECT, + EFI_SERIAL_REQUEST_TO_SEND, EFI_SERIAL_DATA_TERMINAL_READY + are all related to the DTE (Data Terminal Equipment) and + DCE (Data Communication Equipment) modes of operation of + the serial device. + . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the receive + buffer is empty, 0 otherwise. + . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the transmit + buffer is empty, 0 otherwise. + . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if the + hardware loopback is enabled (the ouput feeds the receive + buffer), 0 otherwise. + . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if a + loopback is accomplished by software, 0 otherwise. + . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to one if the + hardware flow control based on CTS (Clear To Send) and RTS + (Ready To Send) control signals is enabled, 0 otherwise. + + @retval RETURN_SUCCESS The control bits were read from the serial device. **/ RETURN_STATUS EFIAPI PL011UartGetControl ( - IN UINTN UartBase, - OUT UINT32 *Control + IN UINTN UartBase, + OUT UINT32 *Control ) { UINT32 FlagRegister; @@ -293,22 +312,15 @@ PL011UartGetControl ( *Control |= EFI_SERIAL_OUTPUT_BUFFER_EMPTY; } - if ((ControlRegister & (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) == (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) { + if ((ControlRegister & (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) + == (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) { *Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE; } -#ifdef NEVER - // ToDo: Implement EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE if ((ControlRegister & PL011_UARTCR_LBE) == PL011_UARTCR_LBE) { *Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE; } - // ToDo: Implement EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE - if (SoftwareLoopbackEnable) { - *Control |= EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE; - } -#endif - return RETURN_SUCCESS; } diff --git a/ArmPlatformPkg/Include/Drivers/PL011Uart.h b/ArmPlatformPkg/Include/Drivers/PL011Uart.h index f8e4a083aa..6675cefeb3 100644 --- a/ArmPlatformPkg/Include/Drivers/PL011Uart.h +++ b/ArmPlatformPkg/Include/Drivers/PL011Uart.h @@ -134,20 +134,40 @@ PL011UartSetControl ( ); /** - Get the serial device control bits. - @param UartBase The base address of the PL011 UART. - @param Control Control signals read from the serial device. - - @retval EFI_SUCCESS The control bits were read from the serial device. - @retval EFI_DEVICE_ERROR The serial device is not functioning correctly. + Retrieve the status of the control bits on a serial device. + + @param[in] UartBase UART registers base address + @param[out] Control Status of the control bits on a serial device : + + . EFI_SERIAL_DATA_CLEAR_TO_SEND, EFI_SERIAL_DATA_SET_READY, + EFI_SERIAL_RING_INDICATE, EFI_SERIAL_CARRIER_DETECT, + EFI_SERIAL_REQUEST_TO_SEND, EFI_SERIAL_DATA_TERMINAL_READY + are all related to the DTE (Data Terminal Equipment) and + DCE (Data Communication Equipment) modes of operation of + the serial device. + . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the receive + buffer is empty, 0 otherwise. + . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the transmit + buffer is empty, 0 otherwise. + . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if the + hardware loopback is enabled (the ouput feeds the receive + buffer), 0 otherwise. + . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if a + loopback is accomplished by software, 0 otherwise. + . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to one if the + hardware flow control based on CTS (Clear To Send) and RTS + (Ready To Send) control signals is enabled, 0 otherwise. + + + @retval RETURN_SUCCESS The control bits were read from the serial device. **/ RETURN_STATUS EFIAPI PL011UartGetControl ( - IN UINTN UartBase, - OUT UINT32 *Control + IN UINTN UartBase, + OUT UINT32 *Control ); /** diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c index 7b3cd89298..44fe78f4f4 100644 --- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c +++ b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c @@ -100,20 +100,38 @@ SerialPortSetControl ( } /** - Get the serial device control bits. - @param Control Control signals read from the serial device. - - @retval EFI_SUCCESS The control bits were read from the serial device. - @retval EFI_DEVICE_ERROR The serial device is not functioning correctly. + Retrieve the status of the control bits on a serial device. + + @param[out] Control Status of the control bits on a serial device : + + . EFI_SERIAL_DATA_CLEAR_TO_SEND, EFI_SERIAL_DATA_SET_READY, + EFI_SERIAL_RING_INDICATE, EFI_SERIAL_CARRIER_DETECT, + EFI_SERIAL_REQUEST_TO_SEND, EFI_SERIAL_DATA_TERMINAL_READY + are all related to the DTE (Data Terminal Equipment) and + DCE (Data Communication Equipment) modes of operation of + the serial device. + . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the receive + buffer is empty, 0 otherwise. + . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the transmit + buffer is empty, 0 otherwise. + . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if the + hardware loopback is enabled (the ouput feeds the receive + buffer), 0 otherwise. + . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if a + loopback is accomplished by software, 0 otherwise. + . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to one if the + hardware flow control based on CTS (Clear To Send) and RTS + (Ready To Send) control signals is enabled, 0 otherwise. + + @retval RETURN_SUCCESS The control bits were read from the serial device. **/ RETURN_STATUS EFIAPI SerialPortGetControl ( - OUT UINT32 *Control + OUT UINT32 *Control ) { return PL011UartGetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), Control); } - -- cgit v1.2.3