]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c
MdeModulePkg: Variable: Re-prioritize TCG/TCG2 protocol
[mirror_edk2.git] / ArmVirtPkg / Library / FdtPL011SerialPortLib / EarlyFdtPL011SerialPortLib.c
index 72b47652b6dd790946262755c50164fb770b95bd..f0924dacbc345a61610138b9b1230e1014fe884b 100644 (file)
 #include <Base.h>\r
 \r
 #include <Library/PcdLib.h>\r
+#include <Library/PL011UartLib.h>\r
 #include <Library/SerialPortLib.h>\r
 #include <libfdt.h>\r
 \r
-#include <Drivers/PL011Uart.h>\r
-\r
 RETURN_STATUS\r
 EFIAPI\r
 SerialPortInitialize (\r
@@ -66,6 +65,7 @@ SerialPortGetBaseAddress (
   INT32               Node, Prev;\r
   INT32               Len;\r
   CONST CHAR8         *Compatible;\r
+  CONST CHAR8         *NodeStatus;\r
   CONST CHAR8         *CompatibleItem;\r
   CONST UINT64        *RegProperty;\r
   UINTN               UartBase;\r
@@ -98,6 +98,11 @@ SerialPortGetBaseAddress (
       CompatibleItem += 1 + AsciiStrLen (CompatibleItem)) {\r
 \r
       if (AsciiStrCmp (CompatibleItem, "arm,pl011") == 0) {\r
+        NodeStatus = fdt_getprop (DeviceTreeBase, Node, "status", &Len);\r
+        if (NodeStatus != NULL && AsciiStrCmp (NodeStatus, "okay") != 0) {\r
+          continue;\r
+        }\r
+\r
         RegProperty = fdt_getprop (DeviceTreeBase, Node, "reg", &Len);\r
         if (Len != 16) {\r
           return 0;\r
@@ -112,7 +117,13 @@ SerialPortGetBaseAddress (
 \r
         Status = PL011UartInitializePort (\r
                    UartBase,\r
-                   &BaudRate, &ReceiveFifoDepth, &Parity, &DataBits, &StopBits);\r
+                   FixedPcdGet32 (PL011UartClkInHz),\r
+                   &BaudRate,\r
+                   &ReceiveFifoDepth,\r
+                   &Parity,\r
+                   &DataBits,\r
+                   &StopBits\r
+                   );\r
         if (!EFI_ERROR (Status)) {\r
           return UartBase;\r
         }\r