123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /** @file
- The definition block in ACPI table for PRM Operation Region
- Copyright (c) 2020-2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- DefinitionBlock (
- "Prm.aml",
- "SSDT",
- 2,
- "OEMID ",
- "PRMOPREG",
- 0x1000
- )
- {
- Scope (\_SB)
- {
- //
- // PRM Test Device
- //
- Device (PRMT)
- {
- Name (_HID, "80860223")
- Name (_CID, EisaId ("PNP0C02"))
- Name (_DDN, "PRM Test Device")
- //PRM operation region format
- OperationRegion (PRMR, PlatformRtMechanism, 0, 1)
- Field (PRMR, BufferAcc, NoLock, Preserve) //Make it ByteAcc for parameter validation
- {
- PRMF, 8
- }
- /*
- * Control method to invoke PRM OperationRegion handler
- * Arg0 contains a buffer representing a _DSM GUID
- */
- Method (RUNS, 1)
- {
- /* Local0 is the PRM data buffer */
- Local0 = buffer (26){}
- /* Create byte fields over the buffer */
- CreateByteField (Local0, 0x0, PSTA)
- CreateQWordField (Local0, 0x1, USTA)
- CreateByteField (Local0, 0x9, CMD)
- CreateField (Local0, 0x50, 0x80, GUID)
- /* Fill in the command and data fields of the data buffer */
- CMD = 0 // run command
- GUID = Arg0
- /* Invoke PRM OperationRegion Handler and store the result into Local0 */
- Local0 = (PRMF = Local0)
- /* Return status */
- Return (PSTA)
- }
- /*
- * Control method to lock a PRM transaction
- * Arg0 contains a buffer representing a _DSM GUID
- */
- Method (LCKH, 1)
- {
- /* Local0 is the PRM data buffer */
- Local0 = buffer (26){}
- /* Create byte fields over the buffer */
- CreateByteField (Local0, 0x0, STAT)
- CreateByteField (Local0, 0x9, CMD)
- CreateField (Local0, 0x50, 0x80, GUID)
- CMD = 1 // Lock command
- GUID = Arg0
- Local0 = (PRMF = Local0)
- /* Note STAT contains the return status */
- Return (STAT)
- }
- /*
- * Control method to unlock a PRM transaction
- * Arg0 contains a buffer representing a _DSM GUID
- */
- Method (ULCK, 1)
- {
- /* Local0 is the PRM data buffer */
- Local0 = buffer (26){}
- /* Create byte fields over the buffer */
- CreateByteField (Local0, 0x0, STAT)
- CreateByteField (Local0, 0x9, CMD)
- CreateField (Local0, 0x50, 0x80, GUID)
- CMD = 2 // Unlock command
- GUID = Arg0
- Local0 = (PRMF = Local0)
- /* Note STAT contains the return status */
- Return (STAT)
- }
- /*
- *Bit [0] Set if the device is present.
- *Bit [1] Set if the device is enabled and decoding its resources.
- *Bit [2] Set if the device should be shown in the UI.
- *Bit [3] Set if the device is functioning properly (cleared if device failed its diagnostics).
- */
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0B) // Device present, but not shown
- }
- }
- }
- }
|