]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Isa/IsaBusDxe/IsaIo.c
Merge 3 PCDs for the ISA Bus Driver to a single PCD that is a bitmask of features.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / IsaBusDxe / IsaIo.c
index 99295f48c41e79c77e57a846d49e3b942b7d0ecb..228daf13fb4a2c86cd4b8ba4f22d6354f4d00682 100644 (file)
@@ -1,4 +1,4 @@
-/**@file\r
+/** @file\r
   The implementation for EFI_ISA_IO_PROTOCOL. \r
   \r
 Copyright (c) 2006 - 2009, Intel Corporation.<BR>\r
@@ -104,7 +104,6 @@ ReportErrorStatusCode (
   @param[in] IsaIoDevice            The iso device to be initialized.\r
   @param[in] IsaDeviceResourceList  The resource list.\r
   \r
-  @retval None\r
 **/\r
 VOID\r
 InitializeIsaIoInstance (\r
@@ -354,9 +353,9 @@ IsaIoUnmap (
   ISA_MAP_INFO  *IsaMapInfo;\r
 \r
   //\r
-  // Unset Feature Flag PcdIsaBusSupportDma to disable support for ISA DMA.\r
+  // Check if DMA is supported.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportDma)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -387,7 +386,7 @@ IsaIoUnmap (
     // Free the mapped buffer and the MAP_INFO structure.\r
     //\r
     gBS->FreePages (IsaMapInfo->MappedHostAddress, IsaMapInfo->NumberOfPages);\r
-    gBS->FreePool (IsaMapInfo);\r
+    FreePool (IsaMapInfo);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -513,10 +512,9 @@ IsaIoMemRead (
   ISA_IO_DEVICE *IsaIoDevice;\r
 \r
   //\r
-  // Set Feature Flag PcdIsaBusSupportIsaMemory to FALSE to disable support for\r
-  // ISA bus memory read/write operations.\r
+  // Check if ISA memory is supported.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportIsaMemory)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -580,10 +578,9 @@ IsaIoMemWrite (
   ISA_IO_DEVICE *IsaIoDevice;\r
 \r
   //\r
-  // Set Feature Flag PcdIsaBusSupportIsaMemory to FALSE to disable support for\r
-  // ISA bus memory read/write operations.\r
+  // Check if ISA memory is supported.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportIsaMemory)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -624,7 +621,7 @@ IsaIoMemWrite (
 \r
   @param[in]  This               A pointer to the EFI_ISA_IO_PROTOCOL instance.\r
   @param[in]  Width              Specifies the width of the memory copy operation.\r
-  @param[out] DestOffset         The offset of the destination \r
+  @param[in]  DestOffset         The offset of the destination \r
   @param[in]  SrcOffset          The offset of the source\r
   @param[in]  Count              The number of memory copy  operations to perform\r
 \r
@@ -647,10 +644,9 @@ IsaIoCopyMem (
   ISA_IO_DEVICE *IsaIoDevice;\r
 \r
   //\r
-  // Set Feature Flag PcdIsaBusSupportIsaMemory to FALSE to disable support for\r
-  // ISA bus memory read/write operations.\r
+  // Check if ISA memory is supported.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportIsaMemory)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_ISA_MEMORY) == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -822,7 +818,7 @@ IsaIoMapOnlySupportSlaveReadWrite (
                     &IsaMapInfo->MappedHostAddress\r
                     );\r
     if (EFI_ERROR (Status)) {\r
-      gBS->FreePool (IsaMapInfo);\r
+      FreePool (IsaMapInfo);\r
       *NumberOfBytes  = 0;\r
       *Mapping        = NULL;\r
       return Status;\r
@@ -1037,17 +1033,14 @@ IsaIoMapFullSupport (
     //\r
     // This implementation only support COMPATIBLE DMA Transfers\r
     //\r
-    if (!(ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE)) {\r
+    if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE) == 0) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
 \r
-    if (ChannelAttributes &\r
-       (\r
-         EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A |\r
-         EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B |\r
-         EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C\r
-       )\r
-       ) {\r
+    if ((ChannelAttributes &\r
+         (EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A |\r
+          EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B |\r
+          EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C)) != 0) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
 \r
@@ -1055,8 +1048,8 @@ IsaIoMapFullSupport (
       //\r
       // If this is Channel 0..3, then the width must be 8 bit\r
       //\r
-      if (!(ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) ||\r
-          (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16)\r
+      if (((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) == 0) ||\r
+          ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16) != 0)\r
           ) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
@@ -1064,21 +1057,20 @@ IsaIoMapFullSupport (
       //\r
       // If this is Channel 4..7, then the width must be 16 bit\r
       //\r
-      if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) ||\r
-          (!(ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16))\r
-          ) {\r
+      if (((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8) != 0) ||\r
+          ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16) == 0)) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     }\r
     //\r
     // Either Demand Mode or Single Mode must be selected, but not both\r
     //\r
-    if (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) {\r
-      if (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) {\r
+    if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) != 0) {\r
+      if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) != 0) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     } else {\r
-      if (!(ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE)) {\r
+      if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) == 0) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
     }\r
@@ -1129,7 +1121,7 @@ IsaIoMapFullSupport (
                     &IsaMapInfo->MappedHostAddress\r
                     );\r
     if (EFI_ERROR (Status)) {\r
-      gBS->FreePool (IsaMapInfo);\r
+      FreePool (IsaMapInfo);\r
       *NumberOfBytes  = 0;\r
       *Mapping        = NULL;\r
       return Status;\r
@@ -1173,15 +1165,15 @@ IsaIoMapFullSupport (
     DmaMode |= V_8237_DMA_CHMODE_IO2MEM;\r
   }\r
 \r
-  if (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE) {\r
+  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE) != 0) {\r
     DmaMode |= B_8237_DMA_CHMODE_AE;\r
   }\r
 \r
-  if (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) {\r
+  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE) != 0) {\r
     DmaMode |= V_8237_DMA_CHMODE_DEMAND;\r
   }\r
 \r
-  if (ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) {\r
+  if ((ChannelAttributes & EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE) != 0) {\r
     DmaMode |= V_8237_DMA_CHMODE_SINGLE;\r
   }\r
   //\r
@@ -1302,9 +1294,9 @@ IsaIoMap (
   )\r
 {\r
   //\r
-  // Set Feature Flag PcdIsaBusSupportDma to FALSE to disable support for ISA DMA.\r
+  // Check if DMA is supported.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportDma)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
   //\r
@@ -1313,7 +1305,7 @@ IsaIoMap (
   //\r
   // So we just return EFI_UNSUPPORTED for these functions.\r
   //\r
-  if (FeaturePcdGet (PcdIsaBusOnlySupportSlaveDma)) {\r
+  if ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0) {\r
     return IsaIoMapOnlySupportSlaveReadWrite (\r
              This,\r
              Operation,\r
@@ -1374,7 +1366,8 @@ IsaIoAllocateBuffer (
   // ISA Bus Master.\r
   // Or unset Feature Flag PcdIsaBusSupportDma to disable support for ISA DMA.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportDma) || FeaturePcdGet (PcdIsaBusOnlySupportSlaveDma)) {\r
+  if (((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) ||\r
+      ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0)) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -1392,7 +1385,7 @@ IsaIoAllocateBuffer (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if (Attributes & ~(EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED)) {\r
+  if ((Attributes & ~(EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE | EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED)) != 0) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -1444,7 +1437,8 @@ IsaIoFreeBuffer (
   // ISA Bus Master.\r
   // Or unset Feature Flag PcdIsaBusSupportDma to disable support for ISA DMA.\r
   //\r
-  if (!FeaturePcdGet (PcdIsaBusSupportDma) || FeaturePcdGet (PcdIsaBusOnlySupportSlaveDma)) {\r
+  if (((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_SUPPORT_DMA) == 0) ||\r
+      ((PcdGet8 (PcdIsaBusSupportedFeatures) & PCD_ISA_BUS_ONLY_SUPPORT_SLAVE_DMA) != 0)) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r