]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix the IsaIo driver to not create ISA resource item when the ACPI resource returned...
authorniruiyu <niruiyu@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 14 Dec 2010 07:17:55 +0000 (07:17 +0000)
committerniruiyu <niruiyu@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 14 Dec 2010 07:17:55 +0000 (07:17 +0000)
This could avoid creating the ISA resource item with StartRange = 0 and EndRange = 0xffffffff when the ACPI resource Base and Len both are 0 because we set StartRange = Base and EndRange = Base + End - 1.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11164 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Bus/Isa/IsaIoDxe/IsaIo.c

index 9058d7849e1c7c1ff1b473f3e38f5bb26d624c85..ab2a9a5f92045903a50ba2f25b363faffc673c6f 100644 (file)
@@ -327,24 +327,28 @@ AcpiResourceToIsaResource (
 \r
     case ACPI_IO_PORT_DESCRIPTOR:\r
       Io = (EFI_ACPI_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
 \r
     case ACPI_IO_PORT_DESCRIPTOR:\r
       Io = (EFI_ACPI_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
-      if (IsaResource != NULL) {\r
-        IsaResource[Count].Type       = EfiIsaAcpiResourceIo;\r
-        IsaResource[Count].Attribute  = IsaIoAttribute (Io->Information);\r
-        IsaResource[Count].StartRange = Io->BaseAddressMin;\r
-        IsaResource[Count].EndRange   = Io->BaseAddressMin + Io->Length - 1;\r
+      if (Io->Length != 0) {\r
+        if (IsaResource != NULL) {\r
+          IsaResource[Count].Type       = EfiIsaAcpiResourceIo;\r
+          IsaResource[Count].Attribute  = IsaIoAttribute (Io->Information);\r
+          IsaResource[Count].StartRange = Io->BaseAddressMin;\r
+          IsaResource[Count].EndRange   = Io->BaseAddressMin + Io->Length - 1;\r
+        }\r
+        Count ++;\r
       }\r
       }\r
-      Count ++;\r
       break;\r
 \r
     case ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR:\r
       FixedIo = (EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
       break;\r
 \r
     case ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR:\r
       FixedIo = (EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR *) AcpiResource.SmallHeader;\r
-      if (IsaResource != NULL) {\r
-        IsaResource[Count].Type       = EfiIsaAcpiResourceIo;\r
-        IsaResource[Count].Attribute  = EFI_ISA_ACPI_IO_DECODE_10_BITS;\r
-        IsaResource[Count].StartRange = FixedIo->BaseAddress;\r
-        IsaResource[Count].EndRange   = FixedIo->BaseAddress + FixedIo->Length - 1;\r
+      if (FixedIo->Length != 0) {\r
+        if (IsaResource != NULL) {\r
+          IsaResource[Count].Type       = EfiIsaAcpiResourceIo;\r
+          IsaResource[Count].Attribute  = EFI_ISA_ACPI_IO_DECODE_10_BITS;\r
+          IsaResource[Count].StartRange = FixedIo->BaseAddress;\r
+          IsaResource[Count].EndRange   = FixedIo->BaseAddress + FixedIo->Length - 1;\r
+        }\r
+        Count ++;\r
       }\r
       }\r
-      Count ++;\r
       break;\r
 \r
     case ACPI_IRQ_DESCRIPTOR:\r
       break;\r
 \r
     case ACPI_IRQ_DESCRIPTOR:\r
@@ -377,24 +381,28 @@ AcpiResourceToIsaResource (
 \r
     case ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR:\r
       Memory = (EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
 \r
     case ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR:\r
       Memory = (EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
-      if (IsaResource != NULL) {\r
-        IsaResource[Count].Type       = EfiIsaAcpiResourceMemory;\r
-        IsaResource[Count].Attribute  = IsaMemoryAttribute (Memory->Information);\r
-        IsaResource[Count].StartRange = Memory->BaseAddressMin;\r
-        IsaResource[Count].EndRange   = Memory->BaseAddressMin + Memory->Length - 1;\r
+      if (Memory->Length != 0) {\r
+        if (IsaResource != NULL) {\r
+          IsaResource[Count].Type       = EfiIsaAcpiResourceMemory;\r
+          IsaResource[Count].Attribute  = IsaMemoryAttribute (Memory->Information);\r
+          IsaResource[Count].StartRange = Memory->BaseAddressMin;\r
+          IsaResource[Count].EndRange   = Memory->BaseAddressMin + Memory->Length - 1;\r
+        }\r
+        Count ++;\r
       }\r
       }\r
-      Count ++;\r
       break;\r
 \r
     case ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR:\r
       FixedMemory = (EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
       break;\r
 \r
     case ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR:\r
       FixedMemory = (EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR *) AcpiResource.LargeHeader;\r
-      if (IsaResource != NULL) {\r
-        IsaResource[Count].Type       = EfiIsaAcpiResourceMemory;\r
-        IsaResource[Count].Attribute  = IsaMemoryAttribute (FixedMemory->Information);\r
-        IsaResource[Count].StartRange = FixedMemory->BaseAddress;\r
-        IsaResource[Count].EndRange   = FixedMemory->BaseAddress + FixedMemory->Length - 1;\r
+      if (FixedMemory->Length != 0) {\r
+        if (IsaResource != NULL) {\r
+          IsaResource[Count].Type       = EfiIsaAcpiResourceMemory;\r
+          IsaResource[Count].Attribute  = IsaMemoryAttribute (FixedMemory->Information);\r
+          IsaResource[Count].StartRange = FixedMemory->BaseAddress;\r
+          IsaResource[Count].EndRange   = FixedMemory->BaseAddress + FixedMemory->Length - 1;\r
+        }\r
+        Count ++;\r
       }\r
       }\r
-      Count ++;\r
       break;\r
 \r
     case ACPI_END_TAG_DESCRIPTOR:\r
       break;\r
 \r
     case ACPI_END_TAG_DESCRIPTOR:\r