From: "Sami Mujawar" <sami.mujawar@arm.com>
To: Pierre.Gondois@arm.com, devel@edk2.groups.io,
Alexei Fedorov <Alexei.Fedorov@arm.com>
Cc: Akanksha Jain <akanksha.jain2@arm.com>,
Alexandru Elisei <alexandru.elisei@arm.com>, nd <nd@arm.com>
Subject: Re: [PATCH v1 6/7] DynamicTablesPkg: Add Pci related objects
Date: Wed, 6 Oct 2021 16:18:14 +0100 [thread overview]
Message-ID: <9d57f9b1-9b53-310c-4213-058f7e1a974c@arm.com> (raw)
In-Reply-To: <20210623115834.907-7-Pierre.Gondois@arm.com>
Hi Pierre,
This patch looks good to me.
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Regards,
Sami Mujawar
On 23/06/2021 12:58 PM, Pierre.Gondois@arm.com wrote:
> From: Pierre Gondois <Pierre.Gondois@arm.com>
>
> Introduce the following CmObj in the ArmNameSpaceObjects:
> - CM_ARM_PCI_ADDRESS_MAP_INFO
> - CM_ARM_PCI_INTERRUPT_MAP_INFO
>
> These objects allow to describe address range mapping
> of Pci busses and interrupt mapping of Pci devices.
>
> Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
> ---
> .../Include/ArmNameSpaceObjects.h | 78 +++++++++++++++++++
> .../ConfigurationManagerObjectParser.c | 28 ++++++-
> 2 files changed, 105 insertions(+), 1 deletion(-)
>
> diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
> index 9c49091def59..b3779f828c17 100644
> --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
> +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h
> @@ -59,6 +59,8 @@ typedef enum ArmObjectID {
> EArmObjSerialPortInfo, ///< 35 - Generic Serial Port Info
> EArmObjCmn600Info, ///< 36 - CMN-600 Info
> EArmObjLpiInfo, ///< 37 - Lpi Info
> + EArmObjPciAddressMapInfo, ///< 38 - Pci Address Map Info
> + EArmObjPciInterruptMapInfo, ///< 39 - Pci Interrupt Map Info
> EArmObjMax
> } EARM_OBJECT_ID;
>
> @@ -433,6 +435,14 @@ typedef struct CmArmPciConfigSpaceInfo {
>
> /// The end bus number
> UINT8 EndBusNumber;
> +
> + /// Optional field: Reference Token for address mapping.
> + /// Token identifying a CM_ARM_OBJ_REF structure.
> + CM_OBJECT_TOKEN AddressMapToken;
> +
> + /// Optional field: Reference Token for interrupt mapping.
> + /// Token identifying a CM_ARM_OBJ_REF structure.
> + CM_OBJECT_TOKEN InterruptMapToken;
> } CM_ARM_PCI_CONFIG_SPACE_INFO;
>
> /** A structure that describes the
> @@ -666,6 +676,10 @@ typedef struct CmArmGenericInterrupt {
> UINT32 Interrupt;
>
> /// Flags
> + /// BIT0: 0: Interrupt is Level triggered
> + /// 1: Interrupt is Edge triggered
> + /// BIT1: 0: Interrupt is Active high
> + /// 1: Interrupt is Active low
> UINT32 Flags;
> } CM_ARM_GENERIC_INTERRUPT;
>
> @@ -946,6 +960,70 @@ typedef struct CmArmLpiInfo {
> CHAR8 StateName[16];
> } CM_ARM_LPI_INFO;
>
> +/** A structure that describes a PCI Address Map.
> +
> + The memory-ranges used by the PCI bus are described by this object.
> +
> + ID: EArmObjPciAddressMapInfo
> +*/
> +typedef struct CmArmPciAddressMapInfo {
> + /** Pci address space code
> +
> + Available values are:
> + - 0: Configuration Space
> + - 1: I/O Space
> + - 2: 32-bit-address Memory Space
> + - 3: 64-bit-address Memory Space
> + */
> + UINT8 SpaceCode;
> +
> + /// PCI address
> + UINT64 PciAddress;
> +
> + /// Cpu address
> + UINT64 CpuAddress;
> +
> + /// Address size
> + UINT64 AddressSize;
> +} CM_ARM_PCI_ADDRESS_MAP_INFO;
> +
> +/** A structure that describes a PCI Interrupt Map.
> +
> + The legacy PCI interrupts used by PCI devices are described by this object.
> +
> + Cf Devicetree Specification - Release v0.3
> + s2.4.3 "Interrupt Nexus Properties"
> +
> + ID: EArmObjPciInterruptMapInfo
> +*/
> +typedef struct CmArmPciInterruptMapInfo {
> + /// Pci Bus.
> + /// Value on 8 bits (max 255).
> + UINT8 PciBus;
> +
> + /// Pci Bus.
> + /// Value on 5 bits (max 31).
> + UINT8 PciDevice;
> +
> + /** PCI interrupt
> +
> + ACPI bindings are used:
> + Cf. ACPI 6.4, s6.2.13 _PRT (PCI Routing Table):
> + "0-INTA, 1-INTB, 2-INTC, 3-INTD"
> +
> + Device-tree bindings are shifted by 1:
> + "INTA=1, INTB=2, INTC=3, INTD=4"
> + */
> + UINT8 PciInterrupt;
> +
> + /** Interrupt controller interrupt.
> +
> + Cf Devicetree Specification - Release v0.3
> + s2.4.3 "Interrupt Nexus Properties": "parent interrupt specifier"
> + */
> + CM_ARM_GENERIC_INTERRUPT IntcInterrupt;
> +} CM_ARM_PCI_INTERRUPT_MAP_INFO;
> +
> #pragma pack()
>
> #endif // ARM_NAMESPACE_OBJECTS_H_
> diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
> index da5f5846edd9..0ba4e6e5faff 100644
> --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
> +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c
> @@ -152,7 +152,9 @@ STATIC CONST CM_OBJ_PARSER CmArmPciConfigSpaceInfoParser[] = {
> {"BaseAddress", 8, "0x%llx", NULL},
> {"PciSegmentGroupNumber", 2, "0x%x", NULL},
> {"StartBusNumber", 1, "0x%x", NULL},
> - {"EndBusNumber", 1, "0x%x", NULL}
> + {"EndBusNumber", 1, "0x%x", NULL},
> + {"AddressMapToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL},
> + {"InterruptMapToken", sizeof (CM_OBJECT_TOKEN), "0x%p", NULL},
> };
>
> /** A parser for EArmObjHypervisorVendorIdentity.
> @@ -401,6 +403,26 @@ STATIC CONST CM_OBJ_PARSER CmArmLpiInfoParser[] = {
> {"StateName", 16, "0x%a", NULL},
> };
>
> +/** A parser for EArmObjPciAddressMapInfo.
> +*/
> +STATIC CONST CM_OBJ_PARSER CmArmPciAddressMapInfoParser[] = {
> + {"SpaceCode", 1, "%d", NULL},
> + {"PciAddress", 8, "0x%llx", NULL},
> + {"CpuAddress", 8, "0x%llx", NULL},
> + {"AddressSize", 8, "0x%llx", NULL},
> +};
> +
> +/** A parser for EArmObjPciInterruptMapInfo.
> +*/
> +STATIC CONST CM_OBJ_PARSER CmPciInterruptMapInfoParser[] = {
> + {"PciBus", 1, "0x%x", NULL},
> + {"PciDevice", 1, "0x%x", NULL},
> + {"PciInterrupt", 1, "0x%x", NULL},
> + {"IntcInterrupt", sizeof (CM_ARM_GENERIC_INTERRUPT),
> + NULL, NULL, CmArmGenericInterruptParser,
> + ARRAY_SIZE (CmArmGenericInterruptParser)},
> +};
> +
> /** A parser for Arm namespace objects.
> */
> STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
> @@ -475,6 +497,10 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] = {
> ARRAY_SIZE (CmArmCmn600InfoParser)},
> {"EArmObjLpiInfo", CmArmLpiInfoParser,
> ARRAY_SIZE (CmArmLpiInfoParser)},
> + {"EArmObjPciAddressMapInfo", CmArmPciAddressMapInfoParser,
> + ARRAY_SIZE (CmArmPciAddressMapInfoParser)},
> + {"EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser,
> + ARRAY_SIZE (CmPciInterruptMapInfoParser)},
> {"EArmObjMax", NULL, 0},
> };
>
next prev parent reply other threads:[~2021-10-06 15:18 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-23 11:58 [PATCH v1 0/7] Create a SSDT PCIe generator PierreGondois
2021-06-23 11:58 ` [PATCH v1 1/7] DynamicTablesPkg: AML Code generation for memory ranges PierreGondois
2021-10-06 15:14 ` Sami Mujawar
2021-06-23 11:58 ` [PATCH v1 2/7] DynamicTablesPkg: AML Code generation to create a named Package() PierreGondois
2021-10-06 15:15 ` Sami Mujawar
2021-06-23 11:58 ` [PATCH v1 3/7] DynamicTablesPkg: AML Code generation to create a named ResourceTemplate() PierreGondois
2021-10-06 15:16 ` Sami Mujawar
2021-06-23 11:58 ` [PATCH v1 4/7] DynamicTablesPkg: AML Code generation to add _PRT entries PierreGondois
2021-10-06 15:17 ` Sami Mujawar
2021-06-23 11:58 ` [PATCH v1 5/7] DynamicTablesPkg: Add AmlAttachNode() PierreGondois
2021-10-06 15:17 ` Sami Mujawar
2021-06-23 11:58 ` [PATCH v1 6/7] DynamicTablesPkg: Add Pci related objects PierreGondois
2021-10-06 15:18 ` Sami Mujawar [this message]
2021-06-23 11:58 ` [PATCH v1 7/7] DynamicTablesPkg: SSDT Pci express generator PierreGondois
2021-10-07 11:11 ` Sami Mujawar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9d57f9b1-9b53-310c-4213-058f7e1a974c@arm.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox