Removed unnecessary macro (to make the 16-bit version build)

date	2002.02.01.22.45.00;	author rmoore1;	state Exp;
This commit is contained in:
aystarik 2005-06-29 16:56:04 +00:00
parent e9d5df00ae
commit a527db8193

View File

@ -3,7 +3,7 @@
*
* Module Name: hwregs - Read/write access functions for the various ACPI
* control and status registers.
* $Revision: 1.115 $
* $Revision: 1.117 $
*
******************************************************************************/
@ -126,35 +126,6 @@
MODULE_NAME ("hwregs")
/*******************************************************************************
*
* FUNCTION: AcpiHwGetBitShift
*
* PARAMETERS: Mask - Input mask to determine bit shift from.
* Must have at least 1 bit set.
*
* RETURN: Bit location of the lsb of the mask
*
* DESCRIPTION: Returns the bit number for the low order bit that's set.
*
******************************************************************************/
UINT32
AcpiHwGetBitShift (
UINT32 Mask)
{
UINT32 Shift;
FUNCTION_TRACE ("HwGetBitShift");
for (Shift = 0; ((Mask >> Shift) & 1) == 0; Shift++)
{ ; }
return_VALUE (Shift);
}
/*******************************************************************************
*
@ -171,21 +142,22 @@ AcpiHwGetBitShift (
void
AcpiHwClearAcpiStatus (void)
{
UINT16 GpeLength;
UINT16 Index;
NATIVE_UINT i;
NATIVE_UINT GpeBlock;
FUNCTION_TRACE ("HwClearAcpiStatus");
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n",
ACPI_ALL_FIXED_STATUS_BITS,
ACPI_BITMASK_ALL_FIXED_STATUS,
(UINT16) ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)));
AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_STATUS, ACPI_ALL_FIXED_STATUS_BITS);
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS,
ACPI_BITMASK_ALL_FIXED_STATUS);
/* Clear the fixed events */
@ -193,31 +165,17 @@ AcpiHwClearAcpiStatus (void)
{
AcpiOsWritePort ((ACPI_IO_ADDRESS)
ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm1bEvtBlk.Address),
ACPI_ALL_FIXED_STATUS_BITS, 16);
ACPI_BITMASK_ALL_FIXED_STATUS, 16);
}
/* Clear the GPE Bits */
if (AcpiGbl_FADT->Gpe0BlkLen)
for (GpeBlock = 0; GpeBlock < ACPI_MAX_GPE_BLOCKS; GpeBlock++)
{
GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe0BlkLen);
for (Index = 0; Index < GpeLength; Index++)
for (i = 0; i < AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount; i++)
{
AcpiOsWritePort ((ACPI_IO_ADDRESS) (
ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) + Index),
0xFF, 8);
}
}
if (AcpiGbl_FADT->Gpe1BlkLen)
{
GpeLength = (UINT16) DIV_2 (AcpiGbl_FADT->Gpe1BlkLen);
for (Index = 0; Index < GpeLength; Index++)
{
AcpiOsWritePort ((ACPI_IO_ADDRESS) (
ACPI_GET_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) + Index),
AcpiOsWritePort ((ACPI_IO_ADDRESS)
(AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress + i),
0xFF, 8);
}
}
@ -229,37 +187,37 @@ AcpiHwClearAcpiStatus (void)
/*******************************************************************************
*
* FUNCTION: AcpiHwObtainSleepTypeRegisterData
* FUNCTION: AcpiHwGetSleepTypeData
*
* PARAMETERS: SleepState - Numeric state requested
* *Slp_TypA - Pointer to byte to receive SLP_TYPa value
* *Slp_TypB - Pointer to byte to receive SLP_TYPb value
* PARAMETERS: SleepState - Numeric sleep state
* *SleepTypeA - Where SLP_TYPa is returned
* *SleepTypeB - Where SLP_TYPb is returned
*
* RETURN: Status - ACPI status
*
* DESCRIPTION: AcpiHwObtainSleepTypeRegisterData() obtains the SLP_TYP and
* SLP_TYPb values for the sleep state requested.
* DESCRIPTION: Obtain the SLP_TYPa and SLP_TYPb values for the requested sleep
* state.
*
******************************************************************************/
ACPI_STATUS
AcpiHwObtainSleepTypeRegisterData (
AcpiHwGetSleepTypeData (
UINT8 SleepState,
UINT8 *Slp_TypA,
UINT8 *Slp_TypB)
UINT8 *SleepTypeA,
UINT8 *SleepTypeB)
{
ACPI_STATUS Status = AE_OK;
ACPI_OPERAND_OBJECT *ObjDesc;
FUNCTION_TRACE ("HwObtainSleepTypeRegisterData");
FUNCTION_TRACE ("HwGetSleepTypeData");
/*
* Validate parameters
*/
if ((SleepState > ACPI_S_STATES_MAX) ||
!Slp_TypA || !Slp_TypB)
!SleepTypeA || !SleepTypeB)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@ -296,25 +254,23 @@ AcpiHwObtainSleepTypeRegisterData (
/* Must have at least two elements */
REPORT_ERROR (("Sleep State package does not have at least two elements\n"));
Status = AE_ERROR;
Status = AE_AML_NO_OPERAND;
}
else if (((ObjDesc->Package.Elements[0])->Common.Type !=
ACPI_TYPE_INTEGER) ||
((ObjDesc->Package.Elements[1])->Common.Type !=
ACPI_TYPE_INTEGER))
else if (((ObjDesc->Package.Elements[0])->Common.Type != ACPI_TYPE_INTEGER) ||
((ObjDesc->Package.Elements[1])->Common.Type != ACPI_TYPE_INTEGER))
{
/* Must have two */
REPORT_ERROR (("Sleep State package elements are not both of type Number\n"));
Status = AE_ERROR;
Status = AE_AML_OPERAND_TYPE;
}
else
{
/*
* Valid _Sx_ package size, type, and value
*/
*Slp_TypA = (UINT8) (ObjDesc->Package.Elements[0])->Integer.Value;
*Slp_TypB = (UINT8) (ObjDesc->Package.Elements[1])->Integer.Value;
*SleepTypeA = (UINT8) (ObjDesc->Package.Elements[0])->Integer.Value;
*SleepTypeB = (UINT8) (ObjDesc->Package.Elements[1])->Integer.Value;
}
if (ACPI_FAILURE (Status))
@ -328,7 +284,6 @@ AcpiHwObtainSleepTypeRegisterData (
}
/*******************************************************************************
*
* FUNCTION: AcpiHwGetRegisterBitMask
@ -341,164 +296,123 @@ AcpiHwObtainSleepTypeRegisterData (
*
******************************************************************************/
UINT32
AcpiHwGetRegisterBitMask (
ACPI_BIT_REGISTER_INFO *
AcpiHwGetBitRegisterInfo (
UINT32 RegisterId)
{
PROC_NAME ("HwGetBitRegisterInfo");
switch (ACPI_GET_REGISTER_BLOCK_ID (RegisterId))
if (RegisterId > ACPI_BITREG_MAX)
{
case ACPI_PM1_STATUS:
switch (RegisterId)
{
case ACPI_TIMER_STATUS:
return (ACPI_TIMER_STATUS_MASK);
case ACPI_BM_STATUS:
return (ACPI_BM_STATUS_MASK);
case ACPI_GBL_LOCK_STATUS:
return (ACPI_GBL_LOCK_STATUS_MASK);
case ACPI_POWER_BTN_STATUS:
return (ACPI_POWER_BTN_STATUS_MASK);
case ACPI_SLEEP_BTN_STATUS:
return (ACPI_SLEEP_BTN_STATUS_MASK);
case ACPI_RT_CLOCK_STATUS:
return (ACPI_RT_CLOCK_STATUS_MASK);
case ACPI_WAKE_STATUS:
return (ACPI_WAKE_STATUS_MASK);
default:
return (0);
}
case ACPI_PM1_ENABLE:
switch (RegisterId)
{
case ACPI_TIMER_ENABLE:
return (ACPI_TIMER_ENABLE_MASK);
case ACPI_GBL_LOCK_ENABLE:
return (ACPI_GBL_LOCK_ENABLE_MASK);
case ACPI_POWER_BTN_ENABLE:
return (ACPI_POWER_BTN_ENABLE_MASK);
case ACPI_SLEEP_BTN_ENABLE:
return (ACPI_SLEEP_BTN_ENABLE_MASK);
case ACPI_RT_CLOCK_ENABLE:
return (ACPI_RT_CLOCK_ENABLE_MASK);
default:
return (0);
}
case ACPI_PM1_CONTROL:
switch (RegisterId)
{
case ACPI_SCI_ENABLE:
return (ACPI_SCI_ENABLE_MASK);
case ACPI_BM_RLD:
return (ACPI_BM_RLD_MASK);
case ACPI_GBL_LOCK_RELEASE:
return (ACPI_GBL_LOCK_RELEASE_MASK);
case ACPI_SLEEP_TYPE_A:
case ACPI_SLEEP_TYPE_B:
return (ACPI_SLEEP_TYPE_X_MASK);
case ACPI_SLEEP_ENABLE:
return (ACPI_SLEEP_ENABLE_MASK);
default:
return (0);
}
case ACPI_PM2_CONTROL:
switch (RegisterId)
{
case ACPI_ARB_DIS:
return (ACPI_ARB_DIS_MASK);
default:
return (0);
}
case ACPI_PM_TIMER:
return (ACPI_TIMER_VAL_MASK);
default:
return (0);
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid BitRegister ID: %X\n", RegisterId));
return (NULL);
}
}
return (&AcpiGbl_BitRegisterInfo[RegisterId]);
}
/*******************************************************************************
*
* FUNCTION: AcpiHwRegisterBitAccess
* FUNCTION: AcpiHwBitRegisterRead
*
* PARAMETERS: ReadWrite - Either ACPI_READ or ACPI_WRITE.
* PARAMETERS: RegisterId - index of ACPI Register to access
* UseLock - Lock the hardware
* RegisterId - index of ACPI Register to access
* Value - (only used on write) value to write to the
* Register. Shifted all the way right.
*
* RETURN: Value written to or read from specified Register. This value
* is shifted all the way right.
* RETURN: Value is read from specified Register. Value returned is
* normalized to bit0 (is shifted all the way right)
*
* DESCRIPTION: Generic ACPI Register read/write function.
* DESCRIPTION: ACPI BitRegister read function.
*
******************************************************************************/
UINT32
AcpiHwRegisterBitAccess (
NATIVE_UINT ReadWrite,
BOOLEAN UseLock,
AcpiHwBitRegisterRead (
UINT32 RegisterId,
...) /* Value (only used on write) */
UINT32 Flags)
{
UINT32 RegisterValue = 0;
UINT32 Mask = 0;
UINT32 Value = 0;
va_list marker;
ACPI_BIT_REGISTER_INFO *BitRegInfo;
FUNCTION_TRACE ("HwRegisterBitAccess");
FUNCTION_TRACE ("HwBitRegisterRead");
if (ReadWrite == ACPI_WRITE)
{
va_start (marker, RegisterId);
Value = va_arg (marker, UINT32);
va_end (marker);
}
if (ACPI_MTX_LOCK == UseLock)
if (Flags & ACPI_MTX_LOCK)
{
AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
}
/* Get the info structure corresponding to the requested ACPI Register */
BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId);
if (!BitRegInfo)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister);
if (Flags & ACPI_MTX_LOCK)
{
AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
}
/* Normalize the value that was read */
RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterRead: got %X\n", RegisterValue));
return_VALUE (RegisterValue);
}
Mask = AcpiHwGetRegisterBitMask (RegisterId);
/*******************************************************************************
*
* FUNCTION: AcpiHwBitRegisterWrite
*
* PARAMETERS: RegisterId - ID of ACPI BitRegister to access
* Value - (only used on write) value to write to the
* 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.
*
* DESCRIPTION: ACPI Bit Register write function.
*
******************************************************************************/
UINT32
AcpiHwBitRegisterWrite (
UINT32 RegisterId,
UINT32 Value,
UINT32 Flags)
{
UINT32 RegisterValue = 0;
ACPI_BIT_REGISTER_INFO *BitRegInfo;
FUNCTION_TRACE_U32 ("HwBitRegisterWrite", RegisterId);
if (Flags & ACPI_MTX_LOCK)
{
AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
}
/* Get the info structure corresponding to the requested ACPI Register */
BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId);
if (!BitRegInfo)
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
/* Always do a register read first so we can insert the new bits */
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister);
/*
* Decode the Register ID
@ -507,201 +421,84 @@ AcpiHwRegisterBitAccess (
* Check bit id to fine locate Register offset.
* Check Mask to determine Register offset, and then read-write.
*/
switch (ACPI_GET_REGISTER_BLOCK_ID (RegisterId))
switch (BitRegInfo->ParentRegister)
{
case ACPI_PM1_STATUS:
case ACPI_REGISTER_PM1_STATUS:
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_STATUS);
if (ReadWrite == ACPI_WRITE)
/*
* Status Registers are different from the rest. Clear by
* writing 1, writing 0 has no effect. So, the only relevent
* 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);
if (Value)
{
/*
* Status Registers are different from the rest. Clear by
* writing 1, writing 0 has no effect. So, the only relevent
* information is the single bit we're interested in, all
* others should be written as 0 so they will be left
* unchanged
*/
Value <<= AcpiHwGetBitShift (Mask);
Value &= Mask;
if (Value)
{
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_STATUS,
(UINT16) Value);
RegisterValue = 0;
}
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS,
(UINT16) Value);
RegisterValue = 0;
}
break;
case ACPI_PM1_ENABLE:
case ACPI_REGISTER_PM1_ENABLE:
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_ENABLE);
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value);
if (ReadWrite == ACPI_WRITE)
{
RegisterValue &= ~Mask;
Value <<= AcpiHwGetBitShift (Mask);
Value &= Mask;
RegisterValue |= Value;
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_ENABLE, (UINT16) RegisterValue);
}
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue);
break;
case ACPI_PM1_CONTROL:
case ACPI_REGISTER_PM1_CONTROL:
/*
* Read the PM1 Control register.
* Note that at this level, the fact that there are actually TWO
* registers (A and B) and that B may not exist, are abstracted.
* registers (A and B - and that B may not exist) is abstracted.
*/
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_PM1_CONTROL);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue));
if (ReadWrite == ACPI_WRITE)
{
RegisterValue &= ~Mask;
Value <<= AcpiHwGetBitShift (Mask);
Value &= Mask;
RegisterValue |= Value;
/*
* SLP_TYPE_x Registers are written differently
* than any other control Registers with
* respect to A and B Registers. The value
* for A may be different than the value for B
*
* Therefore, pass the RegisterId, not just generic PM1_CONTROL,
* because we need to do different things. Yuck.
*/
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId,
(UINT16) RegisterValue);
}
ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value);
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId,
(UINT16) RegisterValue);
break;
case ACPI_PM2_CONTROL:
case ACPI_REGISTER_PM2_CONTROL:
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_PM2_CONTROL);
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM2_CONTROL);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n",
RegisterValue, HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address),
LODWORD(AcpiGbl_FADT->XPm2CntBlk.Address)));
if (ReadWrite == ACPI_WRITE)
{
RegisterValue &= ~Mask;
Value <<= AcpiHwGetBitShift (Mask);
Value &= Mask;
RegisterValue |= 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,
HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address),
LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address)));
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
ACPI_PM2_CONTROL, (UINT8) (RegisterValue));
}
break;
case ACPI_PM_TIMER:
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
ACPI_PM_TIMER);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM_TIMER: Read %X from %8.8X%8.8X\n",
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n",
RegisterValue,
HIDWORD (AcpiGbl_FADT->XPmTmrBlk.Address),
LODWORD (AcpiGbl_FADT->XPmTmrBlk.Address)));
HIDWORD (AcpiGbl_FADT->XPm2CntBlk.Address),
LODWORD (AcpiGbl_FADT->XPm2CntBlk.Address)));
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK,
ACPI_REGISTER_PM2_CONTROL, (UINT8) (RegisterValue));
break;
case ACPI_GPE1_ENABLE_BLOCK:
case ACPI_GPE1_STATUS_BLOCK:
case ACPI_GPE0_ENABLE_BLOCK:
case ACPI_GPE0_STATUS_BLOCK:
/* Determine the bit to be accessed
*
* (UINT32) RegisterId:
* 31 24 16 8 0
* +--------+--------+--------+--------+
* | gpe_block_id | gpe_bit_number |
* +--------+--------+--------+--------+
*
* gpe_block_id is one of GPE[01]_ENABLE_BLOCK and GPE[01]_STATUS_BLOCK
* gpe_bit_number is relative from the gpe_block (0x00~0xFF)
*/
Mask = ACPI_GET_REGISTER_BIT_ID (RegisterId); /* gpe_bit_number */
RegisterId = ACPI_GET_REGISTER_BLOCK_ID (RegisterId) | (Mask >> 3);
Mask = AcpiGbl_DecodeTo8bit [Mask & 0x07];
/*
* The base address of the GPE 0 Register Block
* Plus 1/2 the length of the GPE 0 Register Block
* The enable Register is the Register following the Status Register
* and each Register is defined as 1/2 of the total Register Block
*/
/*
* This sets the bit within EnableBit that needs to be written to
* the Register indicated in Mask to a 1, all others are 0
*/
/* Now get the current Enable Bits in the selected Reg */
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, RegisterId);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "GPE Enable bits: Read %X from %X\n",
RegisterValue, RegisterId));
if (ReadWrite == ACPI_WRITE)
{
RegisterValue &= ~Mask;
Value <<= AcpiHwGetBitShift (Mask);
Value &= Mask;
RegisterValue |= Value;
/*
* This write will put the Action state into the General Purpose
* Enable Register indexed by the value in Mask
*/
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %04X\n",
RegisterValue, RegisterId));
AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId,
(UINT8) RegisterValue);
RegisterValue = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
RegisterId);
}
break;
case ACPI_SMI_CMD_BLOCK:
case ACPI_PROCESSOR_BLOCK:
/* Not used by any callers at this time - therefore, not implemented */
default:
Mask = 0;
break;
}
if (ACPI_MTX_LOCK == UseLock)
if (Flags & ACPI_MTX_LOCK)
{
AcpiUtReleaseMutex (ACPI_MTX_HARDWARE);
}
RegisterValue &= Mask;
RegisterValue >>= AcpiHwGetBitShift (Mask);
/* Normalize the value that was read */
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Register I/O: returning %X\n", RegisterValue));
RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition);
ACPI_DEBUG_PRINT ((ACPI_DB_IO, "ACPI RegisterWrite actual %X\n", RegisterValue));
return_VALUE (RegisterValue);
}
@ -737,16 +534,16 @@ AcpiHwRegisterRead (
AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
}
switch (ACPI_GET_REGISTER_BLOCK_ID (RegisterId))
switch (RegisterId)
{
case ACPI_PM1_STATUS: /* 16-bit access */
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
break;
case ACPI_PM1_ENABLE: /* 16-bit access*/
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/
BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen);
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
@ -754,56 +551,25 @@ AcpiHwRegisterRead (
break;
case ACPI_PM1_CONTROL: /* 16-bit access */
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
Value = AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1aCntBlk, 0);
Value |= AcpiHwLowLevelRead (16, &AcpiGbl_FADT->XPm1bCntBlk, 0);
break;
case ACPI_PM2_CONTROL: /* 8-bit access */
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XPm2CntBlk, 0);
break;
case ACPI_PM_TIMER: /* 32-bit access */
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
Value = AcpiHwLowLevelRead (32, &AcpiGbl_FADT->XPmTmrBlk, 0);
break;
/*
* For the GPE Blocks, the lower word of RegisterId contains the
* byte offset for which to read, as each part of each block may be
* several bytes long.
*/
case ACPI_GPE0_STATUS_BLOCK: /* 8-bit access */
BankOffset = ACPI_GET_REGISTER_BIT_ID (RegisterId);
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, BankOffset);
break;
case ACPI_GPE0_ENABLE_BLOCK: /* 8-bit access */
BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen) +
ACPI_GET_REGISTER_BIT_ID (RegisterId);
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe0Blk, BankOffset);
break;
case ACPI_GPE1_STATUS_BLOCK: /* 8-bit access */
BankOffset = ACPI_GET_REGISTER_BIT_ID (RegisterId);
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, BankOffset);
break;
case ACPI_GPE1_ENABLE_BLOCK: /* 8-bit access */
BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen) +
ACPI_GET_REGISTER_BIT_ID (RegisterId);
Value = AcpiHwLowLevelRead (8, &AcpiGbl_FADT->XGpe1Blk, BankOffset);
break;
case ACPI_SMI_CMD_BLOCK: /* 8bit */
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
AcpiOsReadPort (AcpiGbl_FADT->SmiCmd, &Value, 8);
break;
@ -853,16 +619,16 @@ AcpiHwRegisterWrite (
AcpiUtAcquireMutex (ACPI_MTX_HARDWARE);
}
switch (ACPI_GET_REGISTER_BLOCK_ID (RegisterId))
switch (RegisterId)
{
case ACPI_PM1_STATUS: /* 16-bit access */
case ACPI_REGISTER_PM1_STATUS: /* 16-bit access */
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, 0);
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bEvtBlk, 0);
break;
case ACPI_PM1_ENABLE: /* 16-bit access*/
case ACPI_REGISTER_PM1_ENABLE: /* 16-bit access*/
BankOffset = DIV_2 (AcpiGbl_FADT->Pm1EvtLen);
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aEvtBlk, BankOffset);
@ -870,68 +636,38 @@ AcpiHwRegisterWrite (
break;
case ACPI_PM1_CONTROL: /* 16-bit access */
case ACPI_REGISTER_PM1_CONTROL: /* 16-bit access */
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
break;
case ACPI_PM1A_CONTROL: /* 16-bit access */
case ACPI_REGISTER_PM1A_CONTROL: /* 16-bit access */
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1aCntBlk, 0);
break;
case ACPI_PM1B_CONTROL: /* 16-bit access */
case ACPI_REGISTER_PM1B_CONTROL: /* 16-bit access */
AcpiHwLowLevelWrite (16, Value, &AcpiGbl_FADT->XPm1bCntBlk, 0);
break;
case ACPI_PM2_CONTROL: /* 8-bit access */
case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XPm2CntBlk, 0);
break;
case ACPI_PM_TIMER: /* 32-bit access */
case ACPI_REGISTER_PM_TIMER: /* 32-bit access */
AcpiHwLowLevelWrite (32, Value, &AcpiGbl_FADT->XPmTmrBlk, 0);
break;
case ACPI_GPE0_STATUS_BLOCK: /* 8-bit access */
BankOffset = ACPI_GET_REGISTER_BIT_ID (RegisterId);
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, BankOffset);
break;
case ACPI_GPE0_ENABLE_BLOCK: /* 8-bit access */
BankOffset = DIV_2 (AcpiGbl_FADT->Gpe0BlkLen) +
ACPI_GET_REGISTER_BIT_ID (RegisterId);
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe0Blk, BankOffset);
break;
case ACPI_GPE1_STATUS_BLOCK: /* 8-bit access */
BankOffset = ACPI_GET_REGISTER_BIT_ID (RegisterId);
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, BankOffset);
break;
case ACPI_GPE1_ENABLE_BLOCK: /* 8-bit access */
BankOffset = DIV_2 (AcpiGbl_FADT->Gpe1BlkLen) +
ACPI_GET_REGISTER_BIT_ID (RegisterId);
AcpiHwLowLevelWrite (8, Value, &AcpiGbl_FADT->XGpe1Blk, BankOffset);
break;
case ACPI_SMI_CMD_BLOCK: /* 8bit */
case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */
/* SMI_CMD is currently always in IO space */