123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /** @file
- *
- * Copyright (c) 2011-2016, ARM Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-2-Clause-Patent
- *
- **/
- #ifndef __PL011_UART_LIB_H__
- #define __PL011_UART_LIB_H__
- #include <Uefi/UefiBaseType.h>
- #include <Protocol/SerialIo.h>
- /**
- Initialise the serial port to the specified settings.
- All unspecified settings will be set to the default values.
- @param[in] UartBase The base address of the serial device.
- @param[in] UartClkInHz The clock in Hz for the serial device.
- Ignored if the PCD PL011UartInteger is not 0
- @param[in out] BaudRate The baud rate of the serial device. If the
- baud rate is not supported, the speed will be
- reduced to the nearest supported one and the
- variable's value will be updated accordingly.
- @param[in out] ReceiveFifoDepth The number of characters the device will
- buffer on input. Value of 0 will use the
- device's default FIFO depth.
- @param[in out] Parity If applicable, this is the EFI_PARITY_TYPE
- that is computed or checked as each character
- is transmitted or received. If the device
- does not support parity, the value is the
- default parity value.
- @param[in out] DataBits The number of data bits in each character.
- @param[in out] StopBits If applicable, the EFI_STOP_BITS_TYPE number
- of stop bits per character.
- If the device does not support stop bits, the
- value is the default stop bit value.
- @retval RETURN_SUCCESS All attributes were set correctly on the
- serial device.
- @retval RETURN_INVALID_PARAMETER One or more of the attributes has an
- unsupported value.
- **/
- RETURN_STATUS
- EFIAPI
- PL011UartInitializePort (
- IN UINTN UartBase,
- IN UINT32 UartClkInHz,
- IN OUT UINT64 *BaudRate,
- IN OUT UINT32 *ReceiveFifoDepth,
- IN OUT EFI_PARITY_TYPE *Parity,
- IN OUT UINT8 *DataBits,
- IN OUT EFI_STOP_BITS_TYPE *StopBits
- );
- /**
- Assert or deassert the control signals on a serial port.
- The following control signals are set according their bit settings :
- . Request to Send
- . Data Terminal Ready
- @param[in] UartBase UART registers base address
- @param[in] Control The following bits are taken into account :
- . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the
- "Request To Send" control signal if this bit is
- equal to one/zero.
- . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert
- the "Data Terminal Ready" control signal if this
- bit is equal to one/zero.
- . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable
- the hardware loopback if this bit is equal to
- one/zero.
- . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported.
- . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/
- disable the hardware flow control based on CTS (Clear
- To Send) and RTS (Ready To Send) control signals.
- @retval RETURN_SUCCESS The new control bits were set on the device.
- @retval RETURN_UNSUPPORTED The device does not support this operation.
- **/
- RETURN_STATUS
- EFIAPI
- PL011UartSetControl (
- IN UINTN UartBase,
- IN UINT32 Control
- );
- /**
- 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
- );
- /**
- Write data to serial device.
- @param Buffer Point of data buffer which need to be written.
- @param NumberOfBytes Number of output bytes which are cached in Buffer.
- @retval 0 Write data failed.
- @retval !0 Actual number of bytes written to serial device.
- **/
- UINTN
- EFIAPI
- PL011UartWrite (
- IN UINTN UartBase,
- IN UINT8 *Buffer,
- IN UINTN NumberOfBytes
- );
- /**
- Read data from serial device and save the data in buffer.
- @param Buffer Point of data buffer which need to be written.
- @param NumberOfBytes Number of output bytes which are cached in Buffer.
- @retval 0 Read data failed.
- @retval !0 Actual number of bytes read from serial device.
- **/
- UINTN
- EFIAPI
- PL011UartRead (
- IN UINTN UartBase,
- OUT UINT8 *Buffer,
- IN UINTN NumberOfBytes
- );
- /**
- Check to see if any data is available to be read from the debug device.
- @retval TRUE At least one byte of data is available to be read
- @retval FALSE No data is available to be read
- **/
- BOOLEAN
- EFIAPI
- PL011UartPoll (
- IN UINTN UartBase
- );
- #endif
|