Mark serial port as fully initialized and always check that before printing anything to the serial console
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
a9171bd512
commit
e6aaa1a83c
@ -21,8 +21,9 @@
|
||||
#define COMPORT_DIV_DLM 0x01 /* Divisor Latch Most */
|
||||
|
||||
/* Serial port control flags */
|
||||
#define COMPORT_FLAG_DBR 0x01 /* Default Baud Rate */
|
||||
#define COMPORT_FLAG_MC 0x02 /* Modem Control */
|
||||
#define COMPORT_FLAG_INIT 0x01 /* Port Initialized */
|
||||
#define COMPORT_FLAG_DBR 0x02 /* Default Baud Rate */
|
||||
#define COMPORT_FLAG_MC 0x04 /* Modem Control */
|
||||
|
||||
/* Serial port Fifo Control Register (FCR) access masks */
|
||||
#define COMPORT_FCR_DISABLE 0x00 /* Disable */
|
||||
|
@ -212,6 +212,7 @@ HlInitializeComPort(IN OUT PCPPORT Port,
|
||||
{
|
||||
PUCHAR Address;
|
||||
UCHAR Byte = 0;
|
||||
USHORT Flags = 0;
|
||||
ULONG Mode;
|
||||
|
||||
/* Check if serial port is set */
|
||||
@ -233,7 +234,7 @@ HlInitializeComPort(IN OUT PCPPORT Port,
|
||||
{
|
||||
/* Use default baud (clock) rate if not set */
|
||||
BaudRate = COMPORT_CLOCK_RATE;
|
||||
Port->Flags = COMPORT_FLAG_DBR;
|
||||
Flags |= COMPORT_FLAG_DBR;
|
||||
}
|
||||
|
||||
/* Store COM pointer */
|
||||
@ -288,10 +289,14 @@ HlInitializeComPort(IN OUT PCPPORT Port,
|
||||
return STATUS_IO_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
/* Mark port as fully initialized */
|
||||
Flags |= COMPORT_FLAG_INIT;
|
||||
|
||||
/* Disable loopback mode and use port normally */
|
||||
HlIoPortOutByte(PtrToUshort(Address + (ULONG)COMPORT_REG_MCR), COMPORT_MCR_NOM);
|
||||
Port->Address = Address;
|
||||
Port->Baud = BaudRate;
|
||||
Port->Flags = Flags;
|
||||
|
||||
/* Return success */
|
||||
return STATUS_SUCCESS;
|
||||
|
@ -28,14 +28,18 @@ BlDbgPrint(IN PUINT16 Format,
|
||||
{
|
||||
VA_LIST Arguments;
|
||||
|
||||
/* Initialise the va_list */
|
||||
VA_START(Arguments, Format);
|
||||
/* Check if EFI serial port is fully initialized */
|
||||
if(EfiSerialPort.Flags & COMPORT_FLAG_INIT)
|
||||
{
|
||||
/* Initialise the va_list */
|
||||
VA_START(Arguments, Format);
|
||||
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
|
||||
/* Clean up the va_list */
|
||||
VA_END(Arguments);
|
||||
/* Clean up the va_list */
|
||||
VA_END(Arguments);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -65,8 +69,12 @@ BlEfiPrint(IN PUINT16 Format,
|
||||
/* Format and print the string to the stdout */
|
||||
BlStringPrint(BlConsolePutChar, Format, Arguments);
|
||||
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
/* Check if EFI serial port is fully initialized */
|
||||
if(EfiSerialPort.Flags & COMPORT_FLAG_INIT)
|
||||
{
|
||||
/* Format and print the string to the serial console */
|
||||
BlStringPrint(BlComPortPutChar, Format, Arguments);
|
||||
}
|
||||
|
||||
/* Clean up the va_list */
|
||||
VA_END(Arguments);
|
||||
|
Loading…
Reference in New Issue
Block a user