diff options
Diffstat (limited to 'sys/contrib/dev/acpica/exregion.c')
-rw-r--r-- | sys/contrib/dev/acpica/exregion.c | 101 |
1 files changed, 43 insertions, 58 deletions
diff --git a/sys/contrib/dev/acpica/exregion.c b/sys/contrib/dev/acpica/exregion.c index 52546cc..184ef7d 100644 --- a/sys/contrib/dev/acpica/exregion.c +++ b/sys/contrib/dev/acpica/exregion.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exregion - ACPI default OpRegion (address space) handlers - * $Revision: 1.91 $ + * $Revision: 1.101 $ * *****************************************************************************/ @@ -10,7 +10,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2005, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2007, Intel Corp. * All rights reserved. * * 2. License @@ -162,7 +162,8 @@ AcpiExSystemMemorySpaceHandler ( UINT32 Remainder; #endif - ACPI_FUNCTION_TRACE ("ExSystemMemorySpaceHandler"); + + ACPI_FUNCTION_TRACE (ExSystemMemorySpaceHandler); /* Validate and translate the bit width */ @@ -186,7 +187,7 @@ AcpiExSystemMemorySpaceHandler ( break; default: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid SystemMemory width %d\n", + ACPI_ERROR ((AE_INFO, "Invalid SystemMemory width %d", BitWidth)); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } @@ -222,7 +223,7 @@ AcpiExSystemMemorySpaceHandler ( /* Valid mapping, delete it */ AcpiOsUnmapMemory (MemInfo->MappedLogicalAddress, - MemInfo->MappedLength); + MemInfo->MappedLength); } /* @@ -239,15 +240,14 @@ AcpiExSystemMemorySpaceHandler ( /* Create a new mapping starting at the address given */ - Status = AcpiOsMapMemory (Address, WindowSize, - (void **) &MemInfo->MappedLogicalAddress); - if (ACPI_FAILURE (Status)) + MemInfo->MappedLogicalAddress = AcpiOsMapMemory ((ACPI_NATIVE_UINT) Address, WindowSize); + if (!MemInfo->MappedLogicalAddress) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, - "Could not map memory at %8.8X%8.8X, size %X\n", + ACPI_ERROR ((AE_INFO, + "Could not map memory at %8.8X%8.8X, size %X", ACPI_FORMAT_UINT64 (Address), (UINT32) WindowSize)); MemInfo->MappedLength = 0; - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Save the physical address and mapping size */ @@ -261,22 +261,20 @@ AcpiExSystemMemorySpaceHandler ( * access */ LogicalAddrPtr = MemInfo->MappedLogicalAddress + - ((ACPI_INTEGER) Address - - (ACPI_INTEGER) MemInfo->MappedPhysicalAddress); + ((ACPI_INTEGER) Address - (ACPI_INTEGER) MemInfo->MappedPhysicalAddress); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "SystemMemory %d (%d width) Address=%8.8X%8.8X\n", - Function, BitWidth, - ACPI_FORMAT_UINT64 (Address))); - - /* - * Perform the memory read or write - * - * Note: For machines that do not support non-aligned transfers, the target - * address was checked for alignment above. We do not attempt to break the - * transfer up into smaller (byte-size) chunks because the AML specifically - * asked for a transfer width that the hardware may require. - */ + "System-Memory (width %d) R/W %d Address=%8.8X%8.8X\n", + BitWidth, Function, ACPI_FORMAT_UINT64 (Address))); + + /* + * Perform the memory read or write + * + * Note: For machines that do not support non-aligned transfers, the target + * address was checked for alignment above. We do not attempt to break the + * transfer up into smaller (byte-size) chunks because the AML specifically + * asked for a transfer width that the hardware may require. + */ switch (Function) { case ACPI_READ: @@ -285,22 +283,21 @@ AcpiExSystemMemorySpaceHandler ( switch (BitWidth) { case 8: - *Value = (ACPI_INTEGER) *((UINT8 *) LogicalAddrPtr); + *Value = (ACPI_INTEGER) ACPI_GET8 (LogicalAddrPtr); break; case 16: - *Value = (ACPI_INTEGER) *((UINT16 *) LogicalAddrPtr); + *Value = (ACPI_INTEGER) ACPI_GET16 (LogicalAddrPtr); break; case 32: - *Value = (ACPI_INTEGER) *((UINT32 *) LogicalAddrPtr); + *Value = (ACPI_INTEGER) ACPI_GET32 (LogicalAddrPtr); break; -#if ACPI_MACHINE_WIDTH != 16 case 64: - *Value = (ACPI_INTEGER) *((UINT64 *) LogicalAddrPtr); + *Value = (ACPI_INTEGER) ACPI_GET64 (LogicalAddrPtr); break; -#endif + default: /* BitWidth was already validated */ break; @@ -312,22 +309,20 @@ AcpiExSystemMemorySpaceHandler ( switch (BitWidth) { case 8: - *(UINT8 *) LogicalAddrPtr = (UINT8) *Value; + ACPI_SET8 (LogicalAddrPtr) = (UINT8) *Value; break; case 16: - *(UINT16 *) LogicalAddrPtr = (UINT16) *Value; + ACPI_SET16 (LogicalAddrPtr) = (UINT16) *Value; break; case 32: - *(UINT32 *) LogicalAddrPtr = (UINT32) *Value; + ACPI_SET32 ( LogicalAddrPtr) = (UINT32) *Value; break; -#if ACPI_MACHINE_WIDTH != 16 case 64: - *(UINT64 *) LogicalAddrPtr = (UINT64) *Value; + ACPI_SET64 (LogicalAddrPtr) = (UINT64) *Value; break; -#endif default: /* BitWidth was already validated */ @@ -375,12 +370,12 @@ AcpiExSystemIoSpaceHandler ( UINT32 Value32; - ACPI_FUNCTION_TRACE ("ExSystemIoSpaceHandler"); + ACPI_FUNCTION_TRACE (ExSystemIoSpaceHandler); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "SystemIO %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth, - ACPI_FORMAT_UINT64 (Address))); + "System-IO (width %d) R/W %d Address=%8.8X%8.8X\n", + BitWidth, Function, ACPI_FORMAT_UINT64 (Address))); /* Decode the function parameter */ @@ -440,7 +435,7 @@ AcpiExPciConfigSpaceHandler ( UINT16 PciRegister; - ACPI_FUNCTION_TRACE ("ExPciConfigSpaceHandler"); + ACPI_FUNCTION_TRACE (ExPciConfigSpaceHandler); /* @@ -459,7 +454,7 @@ AcpiExPciConfigSpaceHandler ( PciRegister = (UINT16) (UINT32) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "PciConfig %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", + "Pci-Config %d (%d) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciRegister)); @@ -518,7 +513,7 @@ AcpiExCmosSpaceHandler ( ACPI_STATUS Status = AE_OK; - ACPI_FUNCTION_TRACE ("ExCmosSpaceHandler"); + ACPI_FUNCTION_TRACE (ExCmosSpaceHandler); return_ACPI_STATUS (Status); @@ -555,7 +550,7 @@ AcpiExPciBarSpaceHandler ( ACPI_STATUS Status = AE_OK; - ACPI_FUNCTION_TRACE ("ExPciBarSpaceHandler"); + ACPI_FUNCTION_TRACE (ExPciBarSpaceHandler); return_ACPI_STATUS (Status); @@ -589,16 +584,8 @@ AcpiExDataTableSpaceHandler ( void *HandlerContext, void *RegionContext) { - ACPI_STATUS Status = AE_OK; - UINT32 ByteWidth = ACPI_DIV_8 (BitWidth); - UINT32 i; - char *LogicalAddrPtr; - - - ACPI_FUNCTION_TRACE ("ExDataTableSpaceHandler"); - + ACPI_FUNCTION_TRACE (ExDataTableSpaceHandler); - LogicalAddrPtr = ACPI_PHYSADDR_TO_PTR (Address); /* Perform the memory read or write */ @@ -606,10 +593,8 @@ AcpiExDataTableSpaceHandler ( { case ACPI_READ: - for (i = 0; i < ByteWidth; i++) - { - ((char *) Value) [i] = LogicalAddrPtr[i]; - } + ACPI_MEMCPY (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address), + ACPI_DIV_8 (BitWidth)); break; case ACPI_WRITE: @@ -618,7 +603,7 @@ AcpiExDataTableSpaceHandler ( return_ACPI_STATUS (AE_SUPPORT); } - return_ACPI_STATUS (Status); + return_ACPI_STATUS (AE_OK); } |