/*++\r
\r
-Copyright (c) 2005 - 2007, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
+Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
http://opensource.org/licenses/bsd-license.php \r
{\r
PCI_IO_DEVICE *PciIoDevice;\r
EFI_STATUS Status;\r
- UINT32 Value;\r
+ UINT8 Value;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
UINT8 Temp;\r
\r
// will block forwarding 0x100-0x3ff for each 1KB in the \r
// first 64KB I/O range.\r
//\r
- if (!BridgeControl & EFI_PCI_BRIDGE_CONTROL_ISA) {\r
+ if ((BridgeControl & EFI_PCI_BRIDGE_CONTROL_ISA) != 0) {\r
PciIoDevice->Attributes |= EFI_PCI_IO_ATTRIBUTE_ISA_IO;\r
} \r
\r
--*/\r
{\r
UINT32 Value;\r
- UINT64 BarValue64;\r
UINT32 OriginalValue;\r
UINT32 Mask;\r
- UINT32 Data;\r
- UINT8 Index;\r
EFI_STATUS Status;\r
\r
OriginalValue = 0;\r
Value = 0;\r
- BarValue64 = 0;\r
\r
Status = BarExisted (\r
PciIoDevice,\r
// Need to treat it as no-bar\r
//\r
if (PciIoDevice->PciBar[BarIndex].Length == 0) {\r
- PciIoDevice->PciBar[BarIndex].BarType = 0;\r
+ PciIoDevice->PciBar[BarIndex].BarType = PciBarTypeUnknown;\r
}\r
\r
PciIoDevice->PciBar[BarIndex].Prefetchable = FALSE;\r
//\r
// Fix the length to support some spefic 64 bit BAR\r
//\r
- Data = Value;\r
- Index = 0;\r
- for (Data = Value; Data != 0; Data >>= 1) {\r
- Index ++;\r
- }\r
- Value |= ((UINT32)(-1) << Index); \r
+ Value |= ((UINT32)(-1) << HighBitSet32 (Value)); \r
\r
//\r
// Calculate the size of 64bit bar\r
return Status;\r
}\r
\r
- while (PciGetBusRange (Descriptors, &MinBus, &MaxBus, NULL) == EFI_SUCCESS) {\r
+ while (PciGetBusRange (&Descriptors, &MinBus, &MaxBus, NULL) == EFI_SUCCESS) {\r
\r
//\r
// Create a device node for root bridge device with a NULL host bridge controller handle\r
\r
EFI_STATUS\r
PciGetBusRange (\r
- IN EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptors,\r
+ IN EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR **Descriptors,\r
OUT UINT16 *MinBus,\r
OUT UINT16 *MaxBus,\r
OUT UINT16 *BusRange\r
--*/\r
{\r
\r
- while (Descriptors->Desc != ACPI_END_TAG_DESCRIPTOR) {\r
- if (Descriptors->ResType == ACPI_ADDRESS_SPACE_TYPE_BUS) {\r
+ while ((*Descriptors)->Desc != ACPI_END_TAG_DESCRIPTOR) {\r
+ if ((*Descriptors)->ResType == ACPI_ADDRESS_SPACE_TYPE_BUS) {\r
if (MinBus != NULL) {\r
- *MinBus = (UINT16)Descriptors->AddrRangeMin;\r
+ *MinBus = (UINT16)(*Descriptors)->AddrRangeMin;\r
}\r
\r
if (MaxBus != NULL) {\r
- *MaxBus = (UINT16)Descriptors->AddrRangeMax;\r
+ *MaxBus = (UINT16)(*Descriptors)->AddrRangeMax;\r
}\r
\r
if (BusRange != NULL) {\r
- *BusRange = (UINT16)Descriptors->AddrLen;\r
+ *BusRange = (UINT16)(*Descriptors)->AddrLen;\r
}\r
return EFI_SUCCESS;\r
}\r
\r
- Descriptors ++;\r
+ (*Descriptors)++;\r
}\r
\r
return EFI_NOT_FOUND;\r