mirror of
https://github.com/acpica/acpica/
synced 2025-03-15 10:42:55 +03:00
Fourth pass to include lint changes/comments/cleanup (64-bit)
date 2002.04.11.22.57.00; author rmoore1; state Exp;
This commit is contained in:
parent
4c99581210
commit
0d175cb2e8
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Module Name: hwregs - Read/write access functions for the various ACPI
|
||||
* control and status registers.
|
||||
* $Revision: 1.120 $
|
||||
* $Revision: 1.123 $
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
@ -119,7 +119,6 @@
|
||||
#define __HWREGS_C__
|
||||
|
||||
#include "acpi.h"
|
||||
#include "achware.h"
|
||||
#include "acnamesp.h"
|
||||
|
||||
#define _COMPONENT ACPI_HARDWARE
|
||||
@ -138,10 +137,10 @@
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
ACPI_STATUS
|
||||
AcpiHwClearAcpiStatus (void)
|
||||
{
|
||||
NATIVE_UINT i;
|
||||
NATIVE_UINT_MAX32 i;
|
||||
NATIVE_UINT GpeBlock;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
@ -157,19 +156,26 @@ AcpiHwClearAcpiStatus (void)
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_VOID;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS,
|
||||
ACPI_BITMASK_ALL_FIXED_STATUS);
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS,
|
||||
ACPI_BITMASK_ALL_FIXED_STATUS);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
/* Clear the fixed events */
|
||||
|
||||
if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address))
|
||||
{
|
||||
AcpiOsWritePort ((ACPI_IO_ADDRESS)
|
||||
ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address),
|
||||
ACPI_BITMASK_ALL_FIXED_STATUS, 16);
|
||||
Status = AcpiHwLowLevelWrite (16, ACPI_BITMASK_ALL_FIXED_STATUS,
|
||||
&AcpiGbl_FADT->XPm1bEvtBlk, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
}
|
||||
|
||||
/* Clear the GPE Bits */
|
||||
@ -178,14 +184,18 @@ AcpiHwClearAcpiStatus (void)
|
||||
{
|
||||
for (i = 0; i < AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount; i++)
|
||||
{
|
||||
AcpiOsWritePort ((ACPI_IO_ADDRESS)
|
||||
(AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress + i),
|
||||
0xFF, 8);
|
||||
Status = AcpiHwLowLevelWrite (8, 0xFF,
|
||||
AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress, i);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnlockAndExit:
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
return_VOID;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -331,26 +341,20 @@ AcpiHwGetBitRegisterInfo (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
ACPI_STATUS
|
||||
AcpiHwBitRegisterRead (
|
||||
UINT32 RegisterId,
|
||||
UINT32 *ReturnValue,
|
||||
UINT32 Flags)
|
||||
{
|
||||
UINT32 RegisterValue = 0;
|
||||
ACPI_BIT_REGISTER_INFO *BitRegInfo;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwBitRegisterRead");
|
||||
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE)))
|
||||
{
|
||||
return_VALUE (0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the info structure corresponding to the requested ACPI Register */
|
||||
|
||||
BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId);
|
||||
@ -359,19 +363,36 @@ AcpiHwBitRegisterRead (
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister);
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
BitRegInfo->ParentRegister, &RegisterValue);
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
|
||||
/* Normalize the value that was read */
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
/* Normalize the value that was read */
|
||||
|
||||
RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition);
|
||||
RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask)
|
||||
>> BitRegInfo->BitPosition);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterRead: got %X\n", RegisterValue));
|
||||
return_VALUE (RegisterValue);
|
||||
*ReturnValue = RegisterValue;
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read value %X\n", RegisterValue));
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -384,14 +405,13 @@ AcpiHwBitRegisterRead (
|
||||
* Register, NOT pre-normalized to the bit pos.
|
||||
* Flags - Lock the hardware or not
|
||||
*
|
||||
* RETURN: Value written to from specified Register. This value
|
||||
* is shifted all the way right.
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: ACPI Bit Register write function.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
ACPI_STATUS
|
||||
AcpiHwBitRegisterWrite (
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value,
|
||||
@ -399,30 +419,38 @@ AcpiHwBitRegisterWrite (
|
||||
{
|
||||
UINT32 RegisterValue = 0;
|
||||
ACPI_BIT_REGISTER_INFO *BitRegInfo;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32 ("HwBitRegisterWrite", RegisterId);
|
||||
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE)))
|
||||
{
|
||||
return_VALUE (0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the info structure corresponding to the requested ACPI Register */
|
||||
|
||||
BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId);
|
||||
if (!BitRegInfo)
|
||||
{
|
||||
ACPI_REPORT_ERROR (("Bad ACPI HW RegisterId: %X\n", RegisterId));
|
||||
return_ACPI_STATUS (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
/* Always do a register read first so we can insert the new bits */
|
||||
|
||||
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister);
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
BitRegInfo->ParentRegister, &RegisterValue);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
/*
|
||||
* Decode the Register ID
|
||||
@ -441,11 +469,12 @@ AcpiHwBitRegisterWrite (
|
||||
* information is the single bit we're interested in, all others should
|
||||
* be written as 0 so they will be left unchanged
|
||||
*/
|
||||
Value = ACPI_REGISTER_PREPARE_BITS (Value, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask);
|
||||
Value = ACPI_REGISTER_PREPARE_BITS (Value,
|
||||
BitRegInfo->BitPosition, BitRegInfo->AccessBitMask);
|
||||
if (Value)
|
||||
{
|
||||
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS,
|
||||
(UINT16) Value);
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_STATUS, (UINT16) Value);
|
||||
RegisterValue = 0;
|
||||
}
|
||||
break;
|
||||
@ -453,9 +482,11 @@ AcpiHwBitRegisterWrite (
|
||||
|
||||
case ACPI_REGISTER_PM1_ENABLE:
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value);
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue);
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue);
|
||||
break;
|
||||
|
||||
|
||||
@ -468,29 +499,36 @@ AcpiHwBitRegisterWrite (
|
||||
*/
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue));
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value);
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId,
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId,
|
||||
(UINT16) RegisterValue);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM2_CONTROL:
|
||||
|
||||
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM2_CONTROL);
|
||||
Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM2_CONTROL, &RegisterValue);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n",
|
||||
RegisterValue, ACPI_HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address),
|
||||
ACPI_LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address)));
|
||||
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value);
|
||||
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition,
|
||||
BitRegInfo->AccessBitMask, Value);
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n",
|
||||
RegisterValue,
|
||||
ACPI_HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address),
|
||||
ACPI_LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address)));
|
||||
|
||||
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
|
||||
ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue));
|
||||
break;
|
||||
|
||||
@ -499,6 +537,9 @@ AcpiHwBitRegisterWrite (
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
UnlockAndExit:
|
||||
|
||||
if (Flags & ACPI_MTX_LOCK)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
@ -506,10 +547,10 @@ AcpiHwBitRegisterWrite (
|
||||
|
||||
/* Normalize the value that was read */
|
||||
|
||||
RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition);
|
||||
ACPI_DEBUG_EXEC (RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition));
|
||||
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterWrite actual %X\n", RegisterValue));
|
||||
return_VALUE (RegisterValue);
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI Register Write actual %X\n", RegisterValue));
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -527,13 +568,16 @@ AcpiHwBitRegisterWrite (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
ACPI_STATUS
|
||||
AcpiHwRegisterRead (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId)
|
||||
UINT32 RegisterId,
|
||||
UINT32 *ReturnValue)
|
||||
{
|
||||
UINT32 Value = 0;
|
||||
UINT32 Value1 = 0;
|
||||
UINT32 Value2 = 0;
|
||||
UINT32 BankOffset;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwRegisterRead");
|
||||
@ -541,9 +585,10 @@ AcpiHwRegisterRead (
|
||||
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE)))
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_VALUE (0);
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
@ -551,53 +596,78 @@ AcpiHwRegisterRead (
|
||||
{
|
||||
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
|
||||
|
||||
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
|
||||
Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
|
||||
Value1 |= Value2;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/
|
||||
|
||||
BankOffset = ACPI_DIV_2 (AcpiGbl_FADT->Pm1EvtLen);
|
||||
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
|
||||
Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset);
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset);
|
||||
Value1 |= Value2;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
|
||||
|
||||
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
Status = AcpiHwLowLevelRead (16, &Value1, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelRead (16, &Value2, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
Value1 |= Value2;
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
|
||||
|
||||
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XPm2CntBlk, 0);
|
||||
Status = AcpiHwLowLevelRead (8, &Value1, &AcpiGbl_FADT->XPm2CntBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
|
||||
|
||||
Value = AcpiHwLowLevelRead (32, &AcpiGbl_FADT->XPmTmrBlk, 0);
|
||||
Status = AcpiHwLowLevelRead (32, &Value1, &AcpiGbl_FADT->XPmTmrBlk, 0);
|
||||
break;
|
||||
|
||||
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
|
||||
|
||||
AcpiOsReadPort (AcpiGbl_FADT->SmiCmd, &Value, 8);
|
||||
Status = AcpiOsReadPort (AcpiGbl_FADT->SmiCmd, &Value1, 8);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Value will be returned as 0 */
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown Register ID: %X\n", RegisterId));
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
|
||||
UnlockAndExit:
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
|
||||
return_VALUE (Value);
|
||||
if (ACPI_SUCCESS (Status))
|
||||
{
|
||||
*ReturnValue = Value1;
|
||||
}
|
||||
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -615,13 +685,14 @@ AcpiHwRegisterRead (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
ACPI_STATUS
|
||||
AcpiHwRegisterWrite (
|
||||
BOOLEAN UseLock,
|
||||
UINT32 RegisterId,
|
||||
UINT32 Value)
|
||||
{
|
||||
UINT32 BankOffset;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_TRACE ("HwRegisterWrite");
|
||||
@ -629,9 +700,10 @@ AcpiHwRegisterWrite (
|
||||
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_HARDWARE)))
|
||||
Status = AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
return_VOID;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
}
|
||||
|
||||
@ -639,47 +711,62 @@ AcpiHwRegisterWrite (
|
||||
{
|
||||
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/
|
||||
|
||||
BankOffset = ACPI_DIV_2 (AcpiGbl_FADT->Pm1EvtLen);
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, BankOffset);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
if (ACPI_FAILURE (Status))
|
||||
{
|
||||
goto UnlockAndExit;
|
||||
}
|
||||
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
|
||||
|
||||
AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk, 0);
|
||||
Status = AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk, 0);
|
||||
break;
|
||||
|
||||
|
||||
@ -687,21 +774,22 @@ AcpiHwRegisterWrite (
|
||||
|
||||
/* SMI_CMD is currently always in IO space */
|
||||
|
||||
AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, Value, 8);
|
||||
Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, (ACPI_INTEGER) Value, 8);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
Value = 0;
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
|
||||
UnlockAndExit:
|
||||
if (ACPI_MTX_LOCK == UseLock)
|
||||
{
|
||||
(void) AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
|
||||
}
|
||||
|
||||
return_VOID;
|
||||
return_ACPI_STATUS (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -719,31 +807,35 @@ AcpiHwRegisterWrite (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
UINT32
|
||||
ACPI_STATUS
|
||||
AcpiHwLowLevelRead (
|
||||
UINT32 Width,
|
||||
UINT32 *Value,
|
||||
ACPI_GENERIC_ADDRESS *Reg,
|
||||
UINT32 Offset)
|
||||
{
|
||||
UINT32 Value = 0;
|
||||
ACPI_PHYSICAL_ADDRESS MemAddress;
|
||||
ACPI_IO_ADDRESS IoAddress;
|
||||
ACPI_PCI_ID PciId;
|
||||
UINT16 PciRegister;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
ACPI_FUNCTION_NAME ("HwLowLevelRead");
|
||||
|
||||
|
||||
/*
|
||||
* Must have a valid pointer to a GAS structure, and
|
||||
* a non-zero address within
|
||||
*/
|
||||
#if 0
|
||||
if ((!Reg) ||
|
||||
(!ACPI_VALID_ADDRESS (Reg->Address)))
|
||||
{
|
||||
return 0;
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
#endif
|
||||
*Value = 0;
|
||||
|
||||
/*
|
||||
* Three address spaces supported:
|
||||
@ -753,17 +845,19 @@ AcpiHwLowLevelRead (
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
|
||||
MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset);
|
||||
MemAddress = (ACPI_GET_ADDRESS (Reg->Address)
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsReadMemory (MemAddress, &Value, Width);
|
||||
Status = AcpiOsReadMemory (MemAddress, &Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
|
||||
IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset);
|
||||
IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address)
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsReadPort (IoAddress, &Value, Width);
|
||||
Status = AcpiOsReadPort (IoAddress, &Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
@ -773,13 +867,20 @@ AcpiHwLowLevelRead (
|
||||
PciId.Bus = 0;
|
||||
PciId.Device = ACPI_PCI_DEVICE (ACPI_GET_ADDRESS (Reg->Address));
|
||||
PciId.Function = ACPI_PCI_FUNCTION (ACPI_GET_ADDRESS (Reg->Address));
|
||||
PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset);
|
||||
PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address))
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsReadPciConfiguration (&PciId, PciRegister, &Value, Width);
|
||||
Status = AcpiOsReadPciConfiguration (&PciId, PciRegister, &Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported address space: %X\n", Reg->AddressSpaceId));
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
|
||||
return Value;
|
||||
return (Status);
|
||||
}
|
||||
|
||||
|
||||
@ -799,7 +900,7 @@ AcpiHwLowLevelRead (
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
void
|
||||
ACPI_STATUS
|
||||
AcpiHwLowLevelWrite (
|
||||
UINT32 Width,
|
||||
UINT32 Value,
|
||||
@ -810,21 +911,23 @@ AcpiHwLowLevelWrite (
|
||||
ACPI_IO_ADDRESS IoAddress;
|
||||
ACPI_PCI_ID PciId;
|
||||
UINT16 PciRegister;
|
||||
ACPI_STATUS Status;
|
||||
|
||||
|
||||
ACPI_FUNCTION_ENTRY ();
|
||||
ACPI_FUNCTION_NAME ("HwLowLevelWrite");
|
||||
|
||||
|
||||
/*
|
||||
* Must have a valid pointer to a GAS structure, and
|
||||
* a non-zero address within
|
||||
*/
|
||||
#if 0
|
||||
if ((!Reg) ||
|
||||
(!ACPI_VALID_ADDRESS (Reg->Address)))
|
||||
{
|
||||
return;
|
||||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
#endif
|
||||
/*
|
||||
* Three address spaces supported:
|
||||
* Memory, Io, or PCI config.
|
||||
@ -833,17 +936,19 @@ AcpiHwLowLevelWrite (
|
||||
{
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
|
||||
MemAddress = (ACPI_PHYSICAL_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset);
|
||||
MemAddress = (ACPI_GET_ADDRESS (Reg->Address)
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsWriteMemory (MemAddress, Value, Width);
|
||||
Status = AcpiOsWriteMemory (MemAddress, (ACPI_INTEGER) Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
|
||||
IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + Offset);
|
||||
IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address)
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsWritePort (IoAddress, Value, Width);
|
||||
Status = AcpiOsWritePort (IoAddress, (ACPI_INTEGER) Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
@ -853,9 +958,18 @@ AcpiHwLowLevelWrite (
|
||||
PciId.Bus = 0;
|
||||
PciId.Device = ACPI_PCI_DEVICE (ACPI_GET_ADDRESS (Reg->Address));
|
||||
PciId.Function = ACPI_PCI_FUNCTION (ACPI_GET_ADDRESS (Reg->Address));
|
||||
PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset);
|
||||
PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address))
|
||||
+ (ACPI_PHYSICAL_ADDRESS) Offset);
|
||||
|
||||
AcpiOsWritePciConfiguration (&PciId, PciRegister, Value, Width);
|
||||
Status = AcpiOsWritePciConfiguration (&PciId, PciRegister, (ACPI_INTEGER) Value, Width);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported address space: %X\n", Reg->AddressSpaceId));
|
||||
Status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
|
||||
return (Status);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user