X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EmbeddedPkg%2FSerialDxe%2FSerialIo.c;h=9543f1d1ec1519f4edfcf30f5c329fc98c5987d8;hp=aa9653bcf3829af09985f44b3e5740498ba0865e;hb=026e30c4bb80a73ac7c5c286711ae07b1c51108b;hpb=95572bd1b8b55fff0b714b3e3a5f923f38eae460;ds=sidebyside diff --git a/EmbeddedPkg/SerialDxe/SerialIo.c b/EmbeddedPkg/SerialDxe/SerialIo.c index aa9653bcf3..9543f1d1ec 100644 --- a/EmbeddedPkg/SerialDxe/SerialIo.c +++ b/EmbeddedPkg/SerialDxe/SerialIo.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -189,7 +190,7 @@ SerialRead ( { UINTN Count; - Count = SerialPortWrite (Buffer, *BufferSize); + Count = SerialPortRead (Buffer, *BufferSize); *BufferSize = Count; return (Count == 0) ? EFI_DEVICE_ERROR : EFI_SUCCESS; } @@ -201,13 +202,13 @@ EFI_HANDLE gHandle = NULL; // Template used to initailize the GDB Serial IO protocols // EFI_SERIAL_IO_MODE gSerialIoMode = { - 0, // ControlMask - 0, // Timeout - 0, // BaudRate - 1, // RceiveFifoDepth - 0, // DataBits - 0, // Parity - 0 // StopBits + 0, // ControlMask + 0, // Timeout + FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate + 1, // RceiveFifoDepth + FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits + FixedPcdGet8 (PcdUartDefaultParity), // Parity + FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits }; @@ -222,6 +223,28 @@ EFI_SERIAL_IO_PROTOCOL gSerialIoTemplate = { &gSerialIoMode }; +typedef struct { + VENDOR_DEVICE_PATH Guid; + UART_DEVICE_PATH Uart; + EFI_DEVICE_PATH_PROTOCOL End; +} SIMPLE_TEXT_OUT_DEVICE_PATH; + +SIMPLE_TEXT_OUT_DEVICE_PATH mDevicePath = { + { + { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, sizeof (VENDOR_DEVICE_PATH), 0}, + EFI_CALLER_ID_GUID // Use the drivers GUID + }, + { + { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, sizeof (UART_DEVICE_PATH), 0}, + 0, // Reserved + FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate + FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits + FixedPcdGet8 (PcdUartDefaultParity), // Parity (N) + FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits + }, + { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, sizeof (EFI_DEVICE_PATH_PROTOCOL), 0} +}; + /** Initialize the state information for the Serial Io Protocol @@ -248,7 +271,7 @@ SerialDxeInitialize ( Status = gBS->InstallMultipleProtocolInterfaces ( &gHandle, &gEfiSerialIoProtocolGuid, &gSerialIoTemplate, - &gEfiDevicePathProtocolGuid, NULL, // BugBug: Need a device path + &gEfiDevicePathProtocolGuid, &mDevicePath, NULL ); ASSERT_EFI_ERROR (Status);