/** @file The definition block in ACPI table for PRM Operation Region Copyright (c) 2020-2021, Intel Corporation. All rights reserved.
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 } } } }