From nobody Tue Feb 10 07:42:29 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+76943+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+76943+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624448501; cv=none; d=zohomail.com; s=zohoarc; b=ZzH3hpPdODIutfmfX3lf2oVhxLRg1PSrJfLjF6Kf+NL4g0qnZsIUb6G2NkVTZRCM0AQPvHm4j4sMyxBFIqXq9W+vIlXJGyW8Xu7WWTjYjTcwo4lOC58SBXBbZHWh1PY9sunUSEQjCjttFU47phIfAEHLrnaWpHN+NchafCz4nE4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624448501; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=CQhoiQle0aG4cdWYbyT4zdBBvjG4LxdB8XVPwnCcgEw=; b=RrgTu1Jma5o38oDGRL8Tueh1lctdfQfognCjFMef2/KWHjG81CxTq42+d1l8DcCjwZiRmfGcJSzDNUVz7OSH9IOUUAbUrgqrTO+ILNrRR3lNFwRGrlOwJ75MwUksJMB5BLEGxZs3nyie7NOc4VJWu3IRrju6q57YWaSsH0w8fSw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+76943+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1624448501465397.1575136385552; Wed, 23 Jun 2021 04:41:41 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id dzWRYY1788612xvIIunEaWZo; Wed, 23 Jun 2021 04:41:41 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.6438.1624448495532089260 for ; Wed, 23 Jun 2021 04:41:35 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 25A7031B; Wed, 23 Jun 2021 04:41:35 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 03E6C3F719; Wed, 23 Jun 2021 04:41:33 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Alexei Fedorov Cc: Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 02/13] DynamicTablesPkg: AML Code generation for Register() Date: Wed, 23 Jun 2021 12:40:27 +0100 Message-Id: <20210623114039.24491-3-Pierre.Gondois@arm.com> In-Reply-To: <20210623114039.24491-1-Pierre.Gondois@arm.com> References: <20210623114039.24491-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,pierre.gondois@arm.com X-Gm-Message-State: ALeT42eFfzdnPEgjJwgldpkUx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624448501; bh=jyMIffxLt2xJeicaeFjz3fRoOparEAh4IX1KJzSbdAA=; h=Cc:Date:From:Reply-To:Subject:To; b=bxE9teFE8UrvngJHLGhH5bMpTbwVGvGnUFGlqr+EcdsATX1TPI0OuRoHjRIx9RWnwIx ks6+yQlpnZN84eJl17rD7OP7FefK9J6QaFf/bysnI5dSEB8Zs+bcQNd/RqN3j71Xlrcc3 fwCDjsBAjKeFXkJXtaKdZ/V+gSya0HFrqcw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Pierre Gondois Add AmlCodeGenRegister() to generate AML code for the Generic Register Resource Descriptor. This function is equivalent to the ASL macro Register(). Signed-off-by: Pierre Gondois Reviewed-by: Sami Mujawar --- .../AmlLib/CodeGen/AmlResourceDataCodeGen.c | 87 +++++++++++++++++++ .../AmlLib/CodeGen/AmlResourceDataCodeGen.h | 49 +++++++++++ 2 files changed, 136 insertions(+) diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceData= CodeGen.c b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC= odeGen.c index 089597a6c906..07a96725a4ef 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen= .c +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen= .c @@ -187,6 +187,93 @@ AmlCodeGenRdInterrupt ( return LinkRdNode (RdNode, NameOpNode, NewRdNode); } =20 +/** Code generation for the "Register ()" ASL function. + + The Resource Data effectively created is a Generic Register Descriptor. + Data. Cf ACPI 6.4: + - s6.4.3.7 "Generic Register Descriptor". + - s19.6.114 "Register". + + The created resource data node can be: + - appended to the list of resource data elements of the NameOpNode. + In such case NameOpNode must be defined by a the "Name ()" ASL statem= ent + and initially contain a "ResourceTemplate ()". + - returned through the NewRdNode parameter. + + @param [in] AddressSpace Address space where the register exists. + Can be one of I/O space, System Memory, etc. + @param [in] BitWidth Number of bits in the register. + @param [in] BitOffset Offset in bits from the start of the regist= er + indicated by the Address. + @param [in] Address Register address. + @param [in] AccessSize Size of data values used when accessing the + address space. Can be one of: + 0 - Undefined, legacy (EFI_ACPI_6_3_UNDEF= INED) + 1 - Byte access (EFI_ACPI_6_3_BYTE) + 2 - Word access (EFI_ACPI_6_3_WORD) + 3 - DWord access (EFI_ACPI_6_3_DWORD) + 4 - QWord access (EFI_ACPI_6_3_QWORD) + @param [in] NameOpNode NameOp object node defining a named objec= t. + If provided, append the new resource data= node + to the list of resource data elements of = this + node. + @param [out] NewRdNode If provided and success, + contain the created node. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenRdRegister ( + IN UINT8 AddressSpace, + IN UINT8 BitWidth, + IN UINT8 BitOffset, + IN UINT64 Address, + IN UINT8 AccessSize, + IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL + OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL + ) +{ + EFI_STATUS Status; + AML_DATA_NODE * RdNode; + EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR RdRegister; + + if ((AccessSize > EFI_ACPI_6_3_QWORD) || + ((NameOpNode =3D=3D NULL) && (NewRdNode =3D=3D NULL))) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + // Header + RdRegister.Header.Header.Bits.Name =3D + ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME; + RdRegister.Header.Header.Bits.Type =3D ACPI_LARGE_ITEM_FLAG; + RdRegister.Header.Length =3D sizeof (EFI_ACPI_GENERIC_REGISTER_DESCRIPTO= R) - + sizeof (ACPI_LARGE_RESOURCE_HEADER); + + // Body + RdRegister.AddressSpaceId =3D AddressSpace; + RdRegister.RegisterBitWidth =3D BitWidth; + RdRegister.RegisterBitOffset =3D BitOffset; + RdRegister.AddressSize =3D AccessSize; + RdRegister.RegisterAddress =3D Address; + + Status =3D AmlCreateDataNode ( + EAmlNodeDataTypeResourceData, + (UINT8*)&RdRegister, + sizeof (EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR), + &RdNode + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + return LinkRdNode (RdNode, NameOpNode, NewRdNode); +} + // DEPRECATED APIS #ifndef DISABLE_NEW_DEPRECATED_INTERFACES =20 diff --git a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceData= CodeGen.h b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataC= odeGen.h index 764051e3d7c9..3c9217d9ddab 100644 --- a/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen= .h +++ b/DynamicTablesPkg/Library/Common/AmlLib/CodeGen/AmlResourceDataCodeGen= .h @@ -55,4 +55,53 @@ AmlCodeGenRdInterrupt ( OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL ); =20 +/** Code generation for the "Register ()" ASL function. + + The Resource Data effectively created is a Generic Register Descriptor. + Data. Cf ACPI 6.4: + - s6.4.3.7 "Generic Register Descriptor". + - s19.6.114 "Register". + + The created resource data node can be: + - appended to the list of resource data elements of the NameOpNode. + In such case NameOpNode must be defined by a the "Name ()" ASL statem= ent + and initially contain a "ResourceTemplate ()". + - returned through the NewRdNode parameter. + + @param [in] AddressSpace Address space where the register exists. + Can be one of I/O space, System Memory, etc. + @param [in] BitWidth Number of bits in the register. + @param [in] BitOffset Offset in bits from the start of the regist= er + indicated by the Address. + @param [in] Address Register address. + @param [in] AccessSize Size of data values used when accessing the + address space. Can be one of: + 0 - Undefined, legacy (EFI_ACPI_6_3_UNDEF= INED) + 1 - Byte access (EFI_ACPI_6_3_BYTE) + 2 - Word access (EFI_ACPI_6_3_WORD) + 3 - DWord access (EFI_ACPI_6_3_DWORD) + 4 - QWord access (EFI_ACPI_6_3_QWORD) + @param [in] NameOpNode NameOp object node defining a named objec= t. + If provided, append the new resource data= node + to the list of resource data elements of = this + node. + @param [out] NewRdNode If provided and success, + contain the created node. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. + @retval EFI_OUT_OF_RESOURCES Could not allocate memory. +**/ +EFI_STATUS +EFIAPI +AmlCodeGenRdRegister ( + IN UINT8 AddressSpace, + IN UINT8 BitWidth, + IN UINT8 BitOffset, + IN UINT64 Address, + IN UINT8 AccessSize, + IN AML_OBJECT_NODE_HANDLE NameOpNode, OPTIONAL + OUT AML_DATA_NODE_HANDLE *NewRdNode OPTIONAL + ); + #endif // AML_RESOURCE_DATA_CODE_GEN_H_ --=20 2.17.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76943): https://edk2.groups.io/g/devel/message/76943 Mute This Topic: https://groups.io/mt/83735650/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-