52 #define _COMPONENT ACPI_EXECUTER 60 UINT32 FieldDatumByteOffset,
72 UINT32 FieldDatumByteOffset);
94 UINT32 FieldDatumByteOffset)
124 "Invalid/unknown Address Space ID: 0x%2.2X",
SpaceId));
154 #ifdef ACPI_UNDER_DEVELOPMENT 174 (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset +
175 ObjDesc->CommonField.AccessByteWidth))
177 if (AcpiGbl_EnableInterpreterSlack)
185 ObjDesc->CommonField.AccessByteWidth) >=
186 ((ACPI_SIZE) ObjDesc->CommonField.BaseByteOffset +
187 ObjDesc->CommonField.AccessByteWidth +
188 FieldDatumByteOffset))
194 if (RgnDesc->
Region.
Length < ObjDesc->CommonField.AccessByteWidth)
202 "Field [%4.4s] access width (%u bytes) " 203 "too large for region [%4.4s] (length %u)",
205 ObjDesc->CommonField.AccessByteWidth,
215 "Field [%4.4s] Base+Offset+Width %u+%u+%u " 216 "is beyond end of region [%4.4s] (length %u)",
218 ObjDesc->CommonField.BaseByteOffset,
219 FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth,
251 UINT32 FieldDatumByteOffset,
283 FieldDatumByteOffset;
295 " Region [%s:%X], Width %X, ByteBase %X, Offset %X at %8.8X%8.8X\n",
300 FieldDatumByteOffset,
314 "Region %s (ID=%u) not implemented",
321 "Region %s (ID=%u) has no handler",
370 "Index value 0x%8.8X%8.8X overflows field width 0x%X",
404 UINT32 FieldDatumByteOffset,
440 switch (ObjDesc->
Common.Type)
465 FieldDatumByteOffset,
476 FieldDatumByteOffset,
535 FieldDatumByteOffset += ObjDesc->
IndexField.Value;
538 "Write to Index Register: Value %8.8X\n",
539 FieldDatumByteOffset));
542 &FieldDatumByteOffset,
sizeof (FieldDatumByteOffset));
553 "Read from Data Register\n"));
563 "Write to Data Register: Value %8.8X%8.8X\n",
584 "Value Read %8.8X%8.8X, Width %u\n",
591 "Value Written %8.8X%8.8X, Width %u\n",
621 UINT32 FieldDatumByteOffset)
633 MergedValue = FieldValue;
656 ObjDesc, FieldDatumByteOffset, &CurrentValue,
ACPI_READ);
662 MergedValue |= (CurrentValue & ~
Mask);
670 MergedValue |= ~
Mask;
683 "Unknown UpdateRule value: 0x%X",
691 "Mask %8.8X%8.8X, DatumOffset %X, Width %X, " 692 "Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n",
694 FieldDatumByteOffset,
702 ObjDesc, FieldDatumByteOffset, &MergedValue,
ACPI_WRITE);
749 "Field size %u (bits) is too large for buffer (%u)",
760 if ((ObjDesc->
CommonField.StartFieldBitOffset == 0) &&
761 (ObjDesc->
CommonField.BitLength == AccessBitWidth))
785 AccessBitWidth =
sizeof (
UINT64) * 8;
795 ObjDesc->
CommonField.StartFieldBitOffset, AccessBitWidth);
804 MergedDatum = RawDatum >> ObjDesc->
CommonField.StartFieldBitOffset;
808 for (
i = 1;
i < FieldDatumCount;
i++)
812 FieldOffset += ObjDesc->
CommonField.AccessByteWidth;
814 ObjDesc, FieldOffset, &RawDatum,
ACPI_READ);
828 if (AccessBitWidth - ObjDesc->
CommonField.StartFieldBitOffset <
831 MergedDatum |= RawDatum <<
832 (AccessBitWidth - ObjDesc->
CommonField.StartFieldBitOffset);
846 BufferOffset += ObjDesc->
CommonField.AccessByteWidth;
847 MergedDatum = RawDatum >> ObjDesc->
CommonField.StartFieldBitOffset;
852 BufferTailBits = ObjDesc->
CommonField.BitLength % AccessBitWidth;
970 MergedDatum = RawDatum << ObjDesc->
CommonField.StartFieldBitOffset;
974 for (
i = 1;
i < FieldDatumCount;
i++)
980 ObjDesc,
Mask, MergedDatum, FieldOffset);
986 FieldOffset += ObjDesc->
CommonField.AccessByteWidth;
997 if ((AccessBitWidth - ObjDesc->
CommonField.StartFieldBitOffset) <
1000 MergedDatum = RawDatum >>
1001 (AccessBitWidth - ObjDesc->
CommonField.StartFieldBitOffset);
1010 if (
i == DatumCount)
1017 BufferOffset += ObjDesc->
CommonField.AccessByteWidth;
1022 MergedDatum |= RawDatum << ObjDesc->
CommonField.StartFieldBitOffset;
1027 BufferTailBits = (ObjDesc->
CommonField.BitLength +
1028 ObjDesc->
CommonField.StartFieldBitOffset) % AccessBitWidth;
1036 MergedDatum &=
Mask;
1038 ObjDesc,
Mask, MergedDatum, FieldOffset);
#define ACPI_DEBUG_PRINT_RAW(pl)
#define AE_AML_REGION_LIMIT
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
ACPI_STATUS AcpiDsGetBufferFieldArguments(ACPI_OPERAND_OBJECT *ObjDesc)
#define ACPI_ALLOCATE_ZEROED(a)
static ACPI_STATUS AcpiExSetupRegion(ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset)
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
ACPI_NAMESPACE_NODE * Node
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define AE_AML_OPERAND_VALUE
BOOLEAN AcpiIsValidSpaceId(UINT8 SpaceId)
ACPI_OBJECT_FIELD_COMMON CommonField
#define ACPI_MASK_BITS_ABOVE_64(width)
union acpi_operand_object * BankObj
#define ACPI_FUNCTION_TRACE_U32(a, b)
static ACPI_STATUS AcpiExFieldDatumIo(ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 ReadWrite)
ACPI_OBJECT_COMMON_HEADER UINT8 SpaceId
#define AE_AML_OPERAND_TYPE
#define ACPI_TYPE_LOCAL_INDEX_FIELD
#define AE_NOT_IMPLEMENTED
#define AE_AML_REGISTER_LIMIT
#define ACPI_INTEGER_BIT_SIZE
#define AML_FIELD_UPDATE_RULE_MASK
ACPI_STATUS AcpiEvAddressSpaceDispatch(ACPI_OPERAND_OBJECT *RegionObj, ACPI_OPERAND_OBJECT *FieldObj, UINT32 Function, UINT32 RegionOffset, UINT32 BitWidth, UINT64 *Value)
ACPI_OBJECT_BANK_FIELD BankField
#define AE_BUFFER_OVERFLOW
const char * AcpiUtGetRegionName(UINT8 SpaceId)
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object * RegionObj
#define AE_AML_INVALID_SPACE_ID
#define ACPI_MODULE_NAME(Name)
#define ACPI_MASK_BITS_ABOVE(position)
ACPI_OBJECT_REGION Region
ACPI_STATUS AcpiExExtractFromField(ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
union acpi_operand_object * DataObj
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 ACPI_GPE_HANDLER void *Context UINT32 ACPI_NOTIFY_HANDLER void *Context ACPI_ADR_SPACE_TYPE SpaceId
#define ACPI_MASK_BITS_BELOW(position)
#define ACPI_ROUND_UP(value, boundary)
#define ACPI_DEBUG_PRINT(pl)
#define ACPI_ADR_SPACE_IPMI
ACPI_OBJECT_INDEX_FIELD IndexField
#define ACPI_TYPE_LOCAL_REGION_FIELD
#define ACPI_ADR_SPACE_GSBUS
ACPI_STATUS AcpiExWriteWithUpdateRule(ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Mask, UINT64 FieldValue, UINT32 FieldDatumByteOffset)
#define memcpy(s1, s2, n)
union acpi_operand_object * BufferObj
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define return_ACPI_STATUS(s)
ACPI_STATUS AcpiDsGetRegionArguments(ACPI_OPERAND_OBJECT *ObjDesc)
#define ACPI_FUNCTION_TRACE(a)
#define ACPI_FORMAT_UINT64(i)
#define ACPI_TYPE_BUFFER_FIELD
ACPI_OBJECT_COMMON Common
_In_ ULONG _Out_opt_ PULONG RequiredLength
#define ACPI_ROUND_UP_TO(value, boundary)
ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object * IndexObj
#define ACPI_ERROR(plist)
const char * AcpiUtGetNodeName(void *Object)
#define AOPOBJ_DATA_VALID
ACPI_PHYSICAL_ADDRESS Address
#define ACPI_TYPE_LOCAL_BANK_FIELD
#define ACPI_ADR_SPACE_SMBUS
DRIVER_DISPATCH ReadWrite
#define ACPI_ROUND_BITS_UP_TO_BYTES(a)
ACPI_STATUS AcpiExInsertIntoField(ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength)
ACPI_OBJECT_BUFFER_FIELD BufferField
unsigned long long UINT64
ACPI_STATUS AcpiExAccessRegion(ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 Function)
const char * AcpiUtGetObjectTypeName(ACPI_OPERAND_OBJECT *ObjDesc)
static BOOLEAN AcpiExRegisterOverflow(ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Value)