/** @file\r
Basic serial IO abstaction for GDB\r
\r
- Copyright (c) 2008-2009, Apple Inc. All rights reserved.\r
- \r
- All rights reserved. This program and the accompanying materials\r
+ Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+\r
+ This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
//---------------------------------------------\r
// UART Register Bit Defines\r
//---------------------------------------------\r
-#define LSR_TXRDY 0x20\r
-#define LSR_RXDA 0x01\r
-#define DLAB 0x01\r
-#define ENABLE_FIFO 0x01\r
-#define CLEAR_FIFOS 0x06\r
+#define LSR_TXRDY 0x20U\r
+#define LSR_RXDA 0x01U\r
+#define DLAB 0x01U\r
+#define ENABLE_FIFO 0x01U\r
+#define CLEAR_FIFOS 0x06U\r
\r
\r
\r
\r
/**\r
The constructor function initializes the UART.\r
- \r
+\r
@param ImageHandle The firmware allocated handle for the EFI image.\r
@param SystemTable A pointer to the EFI System Table.\r
- \r
+\r
@retval EFI_SUCCESS The constructor always returns EFI_SUCCESS.\r
\r
**/\r
UINT8 DataBits;\r
UINT8 Parity;\r
UINT8 StopBits;\r
- \r
+\r
gPort = (UINTN)PcdGet32 (PcdGdbUartPort);\r
- \r
+\r
BaudRate = PcdGet64 (PcdGdbBaudRate);\r
Parity = PcdGet8 (PcdGdbParity);\r
DataBits = PcdGet8 (PcdGdbDataBits);\r
\r
\r
/**\r
- Sets the baud rate, receive FIFO depth, transmit/receice time out, parity, \r
+ Sets the baud rate, receive FIFO depth, transmit/receice time out, parity,\r
data buts, and stop bits on a serial device. This call is optional as the serial\r
port will be set up with defaults base on PCD values.\r
\r
RETURN_STATUS\r
EFIAPI\r
GdbSerialInit (\r
- IN UINT64 BaudRate, \r
- IN UINT8 Parity, \r
- IN UINT8 DataBits, \r
- IN UINT8 StopBits \r
+ IN UINT64 BaudRate,\r
+ IN UINT8 Parity,\r
+ IN UINT8 DataBits,\r
+ IN UINT8 StopBits\r
)\r
{\r
UINTN Divisor;\r
//\r
// We assume the UART has been turned on to decode gPort address range\r
//\r
- \r
+\r
//\r
// Map 5..8 to 0..3\r
//\r
//\r
// Calculate divisor for baud generator\r
//\r
- Divisor = 115200/(UINTN)BaudRate; \r
- \r
+ Divisor = 115200/(UINTN)BaudRate;\r
+\r
//\r
// Set communications format\r
//\r
Check to see if a character is available from GDB. Do not read the character as that is\r
done via GdbGetChar().\r
\r
- @return TRUE - Character availible\r
- @return FALSE - Character not availible\r
- \r
+ @return TRUE - Character available\r
+ @return FALSE - Character not available\r
+\r
**/\r
BOOLEAN\r
EFIAPI\r
GdbIsCharAvailable (\r
VOID\r
- ) \r
+ )\r
{\r
UINT8 Data;\r
- \r
+\r
Data = IoRead8 (gPort + LSR_OFFSET);\r
- \r
+\r
return ((Data & LSR_RXDA) == LSR_RXDA);\r
}\r
\r
Get a character from GDB. This function must be able to run in interrupt context.\r
\r
@return A character from GDB\r
- \r
+\r
**/\r
CHAR8\r
EFIAPI\r
} while ((Data & LSR_RXDA) == 0);\r
\r
Char = IoRead8 (gPort);\r
- \r
+\r
// Make this an EFI_D_INFO after we get everything debugged.\r
DEBUG ((EFI_D_ERROR, "<%c<", Char));\r
return Char;\r
)\r
{\r
UINT8 Data;\r
- \r
+\r
// Make this an EFI_D_INFO after we get everything debugged.\r
DEBUG ((EFI_D_ERROR, ">%c>", Char));\r
- \r
+\r
// Wait for the serial port to be ready\r
do {\r
Data = IoRead8 (gPort + LSR_OFFSET);\r
} while ((Data & LSR_TXRDY) == 0);\r
- \r
+\r
IoWrite8 (gPort, Char);\r
}\r
\r