acpica/tests/aapits/asl/hndl0038.asl

462 lines
10 KiB
Plaintext
Executable File

DefinitionBlock(
"hndl0038.aml", // Output filename
"DSDT", // Signature
0x02, // DSDT Revision
"Intel", // OEMID
"Many", // TABLE ID
0x00000001 // OEM Revision
) {
/*
* ACPICA API Test Suite
* Misc Handlers test 0038
*/
Include("../asl/tblm_aux.asl")
// Operation Region
OperationRegion(OPR0, SystemMemory, 0, 0x10000)
OperationRegion(OPR1, SystemIO, 0x21000, 0x11000)
OperationRegion(OPR2, PCI_Config, 0x32000, 0x12000)
OperationRegion(OPR3, EmbeddedControl, 0x45000, 0x13000)
OperationRegion(OPR4, SMBus, 0x69000, 0x14000)
OperationRegion(OPR5, SystemCMOS, 0x83000, 0x15000)
OperationRegion(OPR6, PciBarTarget, 0x98000, 0x16000)
// OperationRegion(OPR7, UserDefRegionSpace, 0x100000, 0x17000)
// Device
Device(DEV0) {
Name(s000, "DEV0")
OperationRegion(OPR0, SystemMemory, 0x100000, 0x10000)
OperationRegion(OPR1, SystemIO, 0x121000, 0x11000)
}
// Processor
Processor(CPU0, 0x0, 0xFFFFFFFF, 0x0) {
Name(s000, "CPU0")
OperationRegion(OPR2, PCI_Config, 0x132000, 0x12000)
OperationRegion(OPR3, EmbeddedControl, 0x145000, 0x13000)
OperationRegion(OPR4, SMBus, 0x169000, 0x14000)
}
// Thermal Zone
ThermalZone(TZN0) {
Name(s000, "TZN0")
OperationRegion(OPR5, SystemCMOS, 0x183000, 0x15000)
OperationRegion(OPR6, PciBarTarget, 0x198000, 0x16000)
}
// Device 1: check _REG calls co-ordination
Device(DEV1) {
Name(s000, "DEV0")
OperationRegion(OPR0, SystemMemory, 0xB0000, 0x10000)
Name(ACTV, 0)
Name(DACT, 0)
Name(DIFF, 0)
Name(NERR, 0)
Method(_REG, 2)
{
Store("_REG:", Debug)
Store(arg0, Debug)
Store(arg1, Debug)
if (arg0) {
Increment(NERR)
} elseif (LGreater(arg1, 1)) {
Increment(NERR)
} else {
if (arg1) {
Increment(ACTV)
} else {
Increment(DACT)
}
Subtract(ACTV, DACT, DIFF)
}
}
}
/*
* unsupported object types
*/
// Integer
Name(INT0, 0xfedcba9876543210)
// String
Name(STR0, "source string")
// Buffer
Name(BUF0, Buffer(9){9,8,7,6,5,4,3,2,1})
// Package
Name(PAC0, Package(3) {
0xfedcba987654321f,
"test package",
Buffer(9){19,18,17,16,15,14,13,12,11},
})
// Field Unit
Field(OPR0, ByteAcc, NoLock, Preserve) {
FLU0, 69,
}
// Event
Event(EVE0)
// Method
Method(MMM0) {Return ("ff0X")}
// Mutex
Mutex(MTX0, 0)
// Power Resource
PowerResource(PWR0, 0, 0) {Name(s000, "PWR0")}
// Buffer Field
Createfield(BUF0, 0, 69, BFL0)
Method(M000, 2)
{
Store (Sizeof (Arg1), Local0)
while (Local0) {
Decrement (Local0)
Notify (Arg0, Derefof(Index(Arg1, Local0)))
}
}
Method(TST0)
{
// Field Units
Field(OPR0, ByteAcc, NoLock, Preserve) {FLU0, 70}
Field(OPR1, ByteAcc, NoLock, Preserve) {FLU1, 71}
Field(OPR2, ByteAcc, NoLock, Preserve) {FLU2, 72}
Field(OPR3, ByteAcc, NoLock, Preserve) {FLU3, 73}
Field(OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
Field(OPR5, ByteAcc, NoLock, Preserve) {FLU5, 75}
Field(OPR6, ByteAcc, NoLock, Preserve) {FLU6, 76}
Store (0xffffffffffffff00, FLU0)
Store (0xffffffffffffff01, FLU1)
Store (0xffffffffffffff02, FLU2)
Store (0xffffffffffffff03, FLU3)
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
Store (0xffffffffffffff05, FLU5)
Store (0xffffffffffffff06, FLU6)
}
Method(TST1)
{
// Field Units
Field(\DEV0.OPR0, ByteAcc, NoLock, Preserve) {FLU0, 70}
Field(\DEV0.OPR1, ByteAcc, NoLock, Preserve) {FLU1, 71}
Field(\CPU0.OPR2, ByteAcc, NoLock, Preserve) {FLU2, 72}
Field(\CPU0.OPR3, ByteAcc, NoLock, Preserve) {FLU3, 73}
Field(\CPU0.OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
Field(\TZN0.OPR5, ByteAcc, NoLock, Preserve) {FLU5, 75}
Field(\TZN0.OPR6, ByteAcc, NoLock, Preserve) {FLU6, 76}
Store (0xffffffffffffff00, FLU0)
Store (0xffffffffffffff01, FLU1)
Store (0xffffffffffffff02, FLU2)
Store (0xffffffffffffff03, FLU3)
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
Store (0xffffffffffffff05, FLU5)
Store (0xffffffffffffff06, FLU6)
}
Method(TST2)
{
// Field Units
Field(OPR0, ByteAcc, NoLock, Preserve) {FLU0, 70}
Field(OPR1, ByteAcc, NoLock, Preserve) {FLU1, 71}
Field(OPR2, ByteAcc, NoLock, Preserve) {FLU2, 72}
// Field(OPR3, ByteAcc, NoLock, Preserve) {FLU3, 73}
// Field(OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
Field(OPR5, ByteAcc, NoLock, Preserve) {FLU5, 75}
Field(OPR6, ByteAcc, NoLock, Preserve) {FLU6, 76}
Store (0xffffffffffffff00, FLU0)
Store (0xffffffffffffff01, FLU1)
Store (0xffffffffffffff02, FLU2)
// Store (0xffffffffffffff03, FLU3)
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
// Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
Store (0xffffffffffffff05, FLU5)
Store (0xffffffffffffff06, FLU6)
}
Method(TST3)
{
// Field Units
Field(\DEV0.OPR0, ByteAcc, NoLock, Preserve) {FLU0, 70}
Field(\DEV0.OPR1, ByteAcc, NoLock, Preserve) {FLU1, 71}
Field(\CPU0.OPR2, ByteAcc, NoLock, Preserve) {FLU2, 72}
// Field(\CPU0.OPR3, ByteAcc, NoLock, Preserve) {FLU3, 73}
// Field(\CPU0.OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
Field(\TZN0.OPR5, ByteAcc, NoLock, Preserve) {FLU5, 75}
Field(\TZN0.OPR6, ByteAcc, NoLock, Preserve) {FLU6, 76}
Store (0xffffffffffffff00, FLU0)
Store (0xffffffffffffff01, FLU1)
Store (0xffffffffffffff02, FLU2)
// Store (0xffffffffffffff03, FLU3)
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
// Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
Store (0xffffffffffffff05, FLU5)
Store (0xffffffffffffff06, FLU6)
}
Method(TST4)
{
// Field Units
Field(OPR0, ByteAcc, NoLock, Preserve) {FLU0, 14}
Store (0x5aa5, FLU0)
}
Method(TST5)
{
// Field Units
Field(OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
}
// For AtHndlrTest0038
// Access dynamic OpRegions
Method(TST6)
{
OperationRegion(OPR0, SystemMemory, 0x10001, 0x10000)
OperationRegion(OPR1, SystemIO, 0x32001, 0x11000)
OperationRegion(OPR2, PCI_Config, 0x44001, 0x12000)
OperationRegion(OPR3, EmbeddedControl, 0x58001, 0x13000)
OperationRegion(OPR4, SMBus, 0x7d001, 0x14000)
OperationRegion(OPR5, SystemCMOS, 0x98001, 0x15000)
OperationRegion(OPR6, PciBarTarget, 0xae001, 0x16000)
// Field Units
Field(OPR0, ByteAcc, NoLock, Preserve) {FLU0, 70}
Field(OPR1, ByteAcc, NoLock, Preserve) {FLU1, 71}
Field(OPR2, ByteAcc, NoLock, Preserve) {FLU2, 72}
Field(OPR3, ByteAcc, NoLock, Preserve) {FLU3, 73}
Field(OPR4, BufferAcc, NoLock, Preserve) {FLU4, 74}
Field(OPR5, ByteAcc, NoLock, Preserve) {FLU5, 75}
Field(OPR6, ByteAcc, NoLock, Preserve) {FLU6, 76}
Store (0xffffffffffffff00, FLU0)
Store (0xffffffffffffff01, FLU1)
Store (0xffffffffffffff02, FLU2)
Store (0xffffffffffffff03, FLU3)
// SMBus write requires Buffer
// SMBus bidirectional buffer size
// ACPI_SMBUS_BUFFER_SIZE 34
Store (Buffer(34){0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, FLU4)
Store (0xffffffffffffff05, FLU5)
Store (0xffffffffffffff06, FLU6)
}
// Access both static and dynamic OpRegions
Method(TST7)
{
// Static
TST1()
// Dynamic
TST6()
// Static, Root located
TST0()
}
Device (PCI1) {
OperationRegion (IDE1, PCI_Config, 0x00, 0xFF)
Field (IDE1, DWordAcc, NoLock, Preserve) {
Offset (0x6C),
IPDC, 32}
Name (_HID, EisaId ("PNP0A03"))
Name (_CID, Package (0x03) {
0x00102E4F,
EisaId ("PNP0A01"),
0x130FD041})
Name (_ADR, 0x11)
Name (_BBN, 0x11)
Name (REGC, 0x00) // Count
Name (REGE, 0x00) // NumErrors
Name (REGS, 0xFF) // Status (Activate/DeActivate)
Method(_REG, 2)
{
Store("\\PCI1._REG:", Debug)
Store(arg0, Debug)
Store(arg1, Debug)
Increment(REGC)
if (LNotEqual(arg0, 2)) { // PCI_Config
Increment(REGE)
} elseif (LAnd(LNotEqual(arg1, 1), LNotEqual(arg1, 0))) {
Increment(REGE)
} else {
Store(arg1, REGS)
}
}
// Device
Device(DEVA) {Name(s000, "DEVA")}
Method(ACC0)
{
Store("\\PCI1.ACC0:", Debug)
Store(0xABCD, \PCI1.IPDC)
Store(\PCI1.IPDC, Debug)
}
}
Device (PCI2) {
Device(DEVA) {
Name(s000, "DEVA")
OperationRegion (IDE1, PCI_Config, 0x100, 0xFF)
Field (IDE1, DWordAcc, NoLock, Preserve) {
Offset (0x6C),
IPDC, 32}
Name (_HID, EisaId ("XXX0A03"))
Name (_CID, Package (0x03) {
0x00102E4F,
EisaId ("PNP0A03"),
0x130FD041})
Name (_ADR, 0x22)
Name (_BBN, 0x22)
Name (REGC, 0x00) // Count
Name (REGE, 0x00) // NumErrors
Name (REGS, 0xFF) // Status (Activate/DeActivate)
Method(_REG, 2)
{
Store("\\PCI2.DEVA._REG:", Debug)
Store(arg0, Debug)
Store(arg1, Debug)
Increment(REGC)
if (LNotEqual(arg0, 2)) { // PCI_Config
Increment(REGE)
} elseif (LAnd(LNotEqual(arg1, 1), LNotEqual(arg1, 0))) {
Increment(REGE)
} else {
Store(arg1, REGS)
}
}
Method(ACC0)
{
Store("\\PCI2.DEVA.ACC0:", Debug)
Store(0xABCD, \PCI2.DEVA.IPDC)
Store(\PCI2.DEVA.IPDC, Debug)
}
}
Device(DEVB) {
Name(s000, "DEVB")
OperationRegion (IDE1, PCI_Config, 0x200, 0xFF)
Field (IDE1, DWordAcc, NoLock, Preserve) {
Offset (0x6C),
IPDC, 32}
Name (_HID, EisaId ("XXX0A03"))
Name (_CID, Package (0x03) {
0x00102E4F,
EisaId ("XXX0A03"),
0x130FD041})
Name (_ADR, 0x33)
Name (_BBN, 0x33)
Name (REGC, 0x00) // Count
Name (REGE, 0x00) // NumErrors
Name (REGS, 0xFF) // Status (Activate/DeActivate)
Method(_REG, 2)
{
Store("\\PCI2.DEVB._REG:", Debug)
Store(arg0, Debug)
Store(arg1, Debug)
Increment(REGC)
if (LNotEqual(arg0, 2)) { // PCI_Config
Increment(REGE)
} elseif (LAnd(LNotEqual(arg1, 1), LNotEqual(arg1, 0))) {
Increment(REGE)
} else {
Store(arg1, REGS)
}
}
Method(ACC0)
{
Store("\\PCI2.DEVB.ACC0:", Debug)
Store(0xABCD, \PCI2.DEVB.IPDC)
Store(\PCI2.DEVB.IPDC, Debug)
}
}
}
}