summaryrefslogtreecommitdiffstats
path: root/PrmPkg/PrmLoaderDxe/Prm.asl
diff options
context:
space:
mode:
authorLiu <yun.y.liu@intel.com>2020-05-07 14:42:03 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-04-05 00:42:38 +0000
commitef059559960700e36619c69cce38eb2cdd1a9a4a (patch)
treed7403ff1c68c409c45678b2fe0e5758f41ee5b3b /PrmPkg/PrmLoaderDxe/Prm.asl
parenta6f8946bc9d1155030fa84f327ac1cbb00a20061 (diff)
downloadedk2-ef059559960700e36619c69cce38eb2cdd1a9a4a.tar.gz
edk2-ef059559960700e36619c69cce38eb2cdd1a9a4a.tar.bz2
edk2-ef059559960700e36619c69cce38eb2cdd1a9a4a.zip
PrmPkg: Publish PRM operation region to support PRM ACPI _DSM invocation
A PRM Handler has a 1-to-1 mapping to the corresponding _DSM method. The UUID of the _DSM Method will be passed by the ASL code to the OpRegionHandler which will look up the PRMT Table to extract the pointer of the corresponding PRM Handler. PRM loader pre-builds an SSDT that includes this PRM operation region. In boot time, the PRM loader will load and publish this SSDT, so that in OS runtime ACPI _DSM can invoke the PRM handler by pass the UUID to PRM operation region. The pre-build SSDT also includes a PRMT device as a Sample ACPI _DSM to invoke PRM handler. Cc: Andrew Fish <afish@apple.com> Cc: Kang Gao <kang.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Benjamin You <benjamin.you@intel.com> Cc: Liu Yun <yun.y.liu@intel.com> Cc: Ankit Sinha <ankit.sinha@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Signed-off-by: Liu Yun <yun.y.liu@intel.com> Acked-by: Michael D Kinney <michael.d.kinney@intel.com> Acked-by: Liming Gao <gaoliming@byosoft.com.cn> Acked-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
Diffstat (limited to 'PrmPkg/PrmLoaderDxe/Prm.asl')
-rw-r--r--PrmPkg/PrmLoaderDxe/Prm.asl87
1 files changed, 87 insertions, 0 deletions
diff --git a/PrmPkg/PrmLoaderDxe/Prm.asl b/PrmPkg/PrmLoaderDxe/Prm.asl
new file mode 100644
index 0000000000..76b56de732
--- /dev/null
+++ b/PrmPkg/PrmLoaderDxe/Prm.asl
@@ -0,0 +1,87 @@
+/** @file
+ The definition block in ACPI table for PRM Operation Region
+
+ Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+DefinitionBlock (
+ "Prm.aml",
+ "SSDT",
+ 0x01,
+ "OEMID",
+ "PRMOPREG",
+ 0x3000
+ )
+{
+ Scope (\_SB)
+ {
+ //
+ // PRM Bridge Device
+ //
+
+ Device (PRMB)
+ {
+ Name (_HID, "80860222")
+ Name (_CID, "80860222")
+ Name (_DDN, "PRM Bridge Device")
+ Name (_STA, 0xF)
+ OperationRegion (OPR1, 0x80, 0, 16)
+ Field (OPR1, DWordAcc, NoLock, Preserve) //Make it ByteAcc for parameter validation
+ {
+ Var0, 128
+ }
+ Method (SETV, 1, Serialized)
+ {
+ CopyObject (Arg0, \_SB.PRMB.Var0)
+ }
+ }
+
+ //
+ // PRM Test Device
+ //
+
+ Device (PRMT)
+ {
+ Name (_HID, "80860223")
+ Name (_CID, "80860223")
+ Name (_DDN, "PRM Test Device")
+ Name (_STA, 0xF)
+ Name (BUF1, Buffer(16)
+ {
+ 0x5F, 0xAD, 0xF2, 0xD5, 0x47, 0xA3, 0x3E, 0x4D, //Guid_0
+ 0x87, 0xBC, 0xC2, 0xCE, 0x63, 0x02, 0x9C, 0xC8, //Guid_1
+ })
+ Name (BUF2, Buffer(16)
+ {
+ 0xC3, 0xAD, 0xE7, 0xA9, 0xD0, 0x8C, 0x9A, 0x42, //Guid_0
+ 0x89, 0x15, 0x10, 0x94, 0x6E, 0xBD, 0xE3, 0x18, //Guid_1
+ })
+ Name (BUF3, Buffer(16)
+ {
+ 0x14, 0xC2, 0x88, 0xB6, 0x81, 0x40, 0xEB, 0x4E, //Guid_0
+ 0x8D, 0x26, 0x1E, 0xB5, 0xA3, 0xBC, 0xF1, 0x1A, //Guid_1
+ })
+ Method (NTST)
+ {
+ \_SB.PRMB.SETV (BUF1)
+ }
+ Method (TST1)
+ {
+ \_SB.PRMB.SETV (BUF1)
+ }
+ Method (TST2)
+ {
+ \_SB.PRMB.SETV (BUF2)
+ }
+ Method (TST3)
+ {
+ \_SB.PRMB.SETV (BUF3)
+ }
+ }
+ }
+
+} // End of Definition Block
+
+
+