/*++ Copyright (c) 2014 Minoca Corp. All Rights Reserved Module Name: omapuart.h Abstract: This header contains library definitions for the serial UART found on Texas Instruments OMAP3 and OMAP4 SoCs. Author: Evan Green 27-Feb-2014 --*/ // // ------------------------------------------------------------------- Includes // // // ---------------------------------------------------------------- Definitions // // // ------------------------------------------------------ Data Type Definitions // /*++ Structure Description: This structure defines the context for an OMAP UART controller. Upon initialization, the consumer of the library is responsible for initializing some of these values. Members: UartBase - Stores the base address of the UART. The consumer of the library should have initialized this value before calling the library initialize function. BaudRateRegister - Stores the value to put in the baud rate register. The consumer of this library should have initialized this value before calling the library initialize function. --*/ typedef struct _OMAP_UART_CONTEXT { VOID *UartBase; UINT16 BaudRateRegister; } OMAP_UART_CONTEXT, *POMAP_UART_CONTEXT; // // -------------------------------------------------------------------- Globals // // // -------------------------------------------------------- Function Prototypes // EFI_STATUS EfipUartOmapComputeDivisor ( UINTN BaudRate, UINT16 *Divisor ); /*++ Routine Description: This routine computes the divisor for the given baud rate. Arguments: BaudRate - Supplies the desired baud rate. Divisor - Supplies a pointer where the divisor will be returned on success. Return Value: EFI_SUCCESS on success. EFI_UNSUPPORTED if the baud rate cannot be achieved. --*/ EFI_STATUS EfipUartOmapInitialize ( POMAP_UART_CONTEXT Context ); /*++ Routine Description: This routine initializes the OMAP UART controller. Arguments: Context - Supplies the pointer to the port's context. The caller should have initialized some of these members. Return Value: EFI status code. --*/ EFI_STATUS EfipUartOmapTransmit ( POMAP_UART_CONTEXT Context, VOID *Data, UINTN Size ); /*++ Routine Description: This routine writes data out the serial port. This routine should busily spin if the previously sent byte has not finished transmitting. Arguments: Context - Supplies the pointer to the port context. Data - Supplies a pointer to the data to write. Size - Supplies the size to write, in bytes. Return Value: EFI_SUCCESS on success. EFI_DEVICE_ERROR if a device error occurred. --*/ EFI_STATUS EfipUartOmapReceive ( POMAP_UART_CONTEXT Context, VOID *Data, UINTN *Size ); /*++ Routine Description: This routine reads bytes from the serial port. Arguments: Context - Supplies the pointer to the port context. Data - Supplies a pointer where the read data will be returned on success. Size - Supplies a pointer that on input contains the size of the receive buffer. On output, returns the number of bytes read. Return Value: EFI_SUCCESS on success. EFI_NOT_READY if there was no data to be read at the current time. EFI_DEVICE_ERROR if a device error occurred. --*/ EFI_STATUS EfipUartOmapGetStatus ( POMAP_UART_CONTEXT Context, BOOLEAN *ReceiveDataAvailable ); /*++ Routine Description: This routine returns the current device status. Arguments: Context - Supplies a pointer to the serial port context. ReceiveDataAvailable - Supplies a pointer where a boolean will be returned indicating whether or not receive data is available. Return Value: EFI_SUCCESS on success. EFI_DEVICE_ERROR if a device error occurred. --*/