]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CorebootModulePkg/Library/CbParseLib/CbParseLib.c
CorebootPayloadPkg/PlatformBdsLib: Pass more serial parameters
[mirror_edk2.git] / CorebootModulePkg / Library / CbParseLib / CbParseLib.c
index 8509bd2f9e51013e7ffecbeae8a2713bd467b26e..7c81a51054298c213ccb981e9547c78d406b2da5 100644 (file)
@@ -33,7 +33,7 @@
   @return          the UNIT64 value after convertion.\r
 \r
 **/\r
-UINT64 \r
+UINT64
 cb_unpack64 (\r
   IN struct cbuint64 val\r
   )\r
@@ -216,7 +216,8 @@ FindCbMemTable (
         *pMemTableSize = Entries[Idx].size;\r
       }\r
 \r
-      DEBUG ((EFI_D_INFO, "Find CbMemTable Id 0x%x, base %p, size 0x%x\n", TableId, *pMemTable, *pMemTableSize));\r
+      DEBUG ((EFI_D_INFO, "Find CbMemTable Id 0x%x, base %p, size 0x%x\n",
+        TableId, *pMemTable, Entries[Idx].size));
       return RETURN_SUCCESS;\r
     }\r
   }\r
@@ -468,16 +469,25 @@ CbParseFadtInfo (
         }\r
         DEBUG ((EFI_D_INFO, "Reset Value 0x%x\n", Fadt->ResetValue));\r
 \r
-        if (pPmEvtReg != NULL) {   \r
+        if (pPmEvtReg != NULL) {
           *pPmEvtReg = Fadt->Pm1aEvtBlk;\r
           DEBUG ((EFI_D_INFO, "PmEvt Reg 0x%x\n", Fadt->Pm1aEvtBlk));\r
         }\r
 \r
-        if (pPmGpeEnReg != NULL) {   \r
+        if (pPmGpeEnReg != NULL) {
           *pPmGpeEnReg = Fadt->Gpe0Blk + Fadt->Gpe0BlkLen / 2;\r
           DEBUG ((EFI_D_INFO, "PmGpeEn Reg 0x%x\n", *pPmGpeEnReg));\r
         }\r
 \r
+        //
+        // Verify values for proper operation
+        //
+        ASSERT(Fadt->Pm1aCntBlk != 0);
+        ASSERT(Fadt->PmTmrBlk != 0);
+        ASSERT(Fadt->ResetReg.Address != 0);
+        ASSERT(Fadt->Pm1aEvtBlk != 0);
+        ASSERT(Fadt->Gpe0Blk != 0);
+
         return RETURN_SUCCESS;\r
       }\r
     }\r
@@ -509,15 +519,15 @@ CbParseFadtInfo (
           *pResetValue = Fadt->ResetValue;\r
         DEBUG ((EFI_D_ERROR, "Reset Value 0x%x\n", Fadt->ResetValue));\r
 \r
-        if (pPmEvtReg != NULL) {   \r
+        if (pPmEvtReg != NULL) {
           *pPmEvtReg = Fadt->Pm1aEvtBlk;\r
            DEBUG ((EFI_D_INFO, "PmEvt Reg 0x%x\n", Fadt->Pm1aEvtBlk));\r
         }\r
 \r
-        if (pPmGpeEnReg != NULL) {   \r
+        if (pPmGpeEnReg != NULL) {
           *pPmGpeEnReg = Fadt->Gpe0Blk + Fadt->Gpe0BlkLen / 2;\r
           DEBUG ((EFI_D_INFO, "PmGpeEn Reg 0x%x\n", *pPmGpeEnReg));\r
-        }        \r
+        }
         return RETURN_SUCCESS;\r
       }\r
     }\r
@@ -531,7 +541,10 @@ CbParseFadtInfo (
 \r
   @param  pRegBase           Pointer to the base address of serial port registers\r
   @param  pRegAccessType     Pointer to the access type of serial port registers\r
+  @param  pRegWidth          Pointer to the register width in bytes
   @param  pBaudrate          Pointer to the serial port baudrate\r
+  @param  pInputHertz        Pointer to the input clock frequency
+  @param  pUartPciAddr       Pointer to the UART PCI bus, dev and func address
 \r
   @retval RETURN_SUCCESS     Successfully find the serial port information.\r
   @retval RETURN_NOT_FOUND   Failed to find the serial port information .\r
@@ -541,7 +554,10 @@ RETURN_STATUS
 CbParseSerialInfo (\r
   OUT UINT32      *pRegBase,\r
   OUT UINT32      *pRegAccessType,\r
-  OUT UINT32      *pBaudrate\r
+  OUT UINT32      *pRegWidth,
+  OUT UINT32      *pBaudrate,
+  OUT UINT32      *pInputHertz,
+  OUT UINT32      *pUartPciAddr
   )\r
 {\r
   struct cb_serial    *CbSerial;\r
@@ -559,6 +575,10 @@ CbParseSerialInfo (
     *pRegBase = CbSerial->baseaddr;\r
   }\r
 \r
+  if (pRegWidth != NULL) {
+    *pRegWidth = CbSerial->regwidth;
+  }
+
   if (pRegAccessType != NULL) {\r
     *pRegAccessType = CbSerial->type;\r
   }\r
@@ -567,6 +587,14 @@ CbParseSerialInfo (
     *pBaudrate = CbSerial->baud;\r
   }\r
 \r
+  if (pInputHertz != NULL) {
+    *pInputHertz = CbSerial->input_hertz;
+  }
+
+  if (pUartPciAddr != NULL) {
+    *pUartPciAddr = CbSerial->uart_pci_addr;
+  }
+
   return RETURN_SUCCESS;\r
 }\r
 \r