]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DynamicTablesPkg/Library/Acpi/Arm/AcpiSpcrLibArm/SpcrGenerator.c
DynamicTablesPkg: Fix serial port subtype warning
[mirror_edk2.git] / DynamicTablesPkg / Library / Acpi / Arm / AcpiSpcrLibArm / SpcrGenerator.c
index 1404279f828d5c06bb7605cb2fe6d864ef7a080e..4b2580da7df9b4472ae9bcc3df2138a9e13004d0 100644 (file)
@@ -217,8 +217,21 @@ BuildSpcrTable (
     goto error_handler;\r
   }\r
 \r
+  // The SPCR InterfaceType uses the same encoding as that of the\r
+  // DBG2 table Port Subtype field. However InterfaceType is 8-bit\r
+  // while the Port Subtype field in the DBG2 table is 16-bit.\r
+  if ((SerialPortInfo->PortSubtype & 0xFF00) != 0) {\r
+    Status = EFI_INVALID_PARAMETER;\r
+    DEBUG ((\r
+      DEBUG_ERROR,\r
+      "ERROR: SPCR: Invalid Port Sybtype (must be < 256). Status = %r\n",\r
+      Status\r
+      ));\r
+    goto error_handler;\r
+  }\r
+\r
   // Update the serial port subtype\r
-  AcpiSpcr.InterfaceType = SerialPortInfo->PortSubtype;\r
+  AcpiSpcr.InterfaceType = (UINT8)SerialPortInfo->PortSubtype;\r
 \r
   // Update the base address\r
   AcpiSpcr.BaseAddress.Address = SerialPortInfo->BaseAddress;\r