From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by mx.groups.io with SMTP id smtpd.web12.9386.1581614062213116865 for ; Thu, 13 Feb 2020 09:14:22 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nuviainc-com.20150623.gappssmtp.com header.s=20150623 header.b=cTqJ0rUL; spf=pass (domain: nuviainc.com, ip: 209.85.128.67, mailfrom: leif@nuviainc.com) Received: by mail-wm1-f67.google.com with SMTP id a9so7629410wmj.3 for ; Thu, 13 Feb 2020 09:14:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuviainc-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Og4kP9vB56bnVLTqwP0EjpUpUNCTa0Pifa9aOo5A2tc=; b=cTqJ0rULAmMjltVLX6fDEMjOfkdEueV4Tph7MzZrO1j1dNOeqS0QsuizHhOKGp+zPj bDpjW3hWYCVHH8X7WsVLjwAWxEh0np8uhpgHux8a7TXFALSI68ZI2sbNFSdjysUfq1Wz wM8Pw1VYgocdT056mdi+XjLAZwrOyuW6q/0sbU+CKseK1oy0pmNePek3UobGnX+qKPGu QvaZ/PYTOdPHXjenyUJmLhriZ18FzSiQUInSQ7KvLa5ZY2XU05DfIj6RmLPWWaDRGDww 1yZt2wkzZBG352CCHIeUGayOe6//23ggzVTOFYIr1jBy/7HfCXZn+jWsRMu+rEL1Vo9+ yj/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Og4kP9vB56bnVLTqwP0EjpUpUNCTa0Pifa9aOo5A2tc=; b=rAs+nKeu/X73XNTp3w8bmRHN0+y5CkuMwt8dJNqH2NhWLw4DY8v1r3fN3hZKm673dU 7YMrS1sSs4/eCVb1CTfmVhuFcwuVO7ya7zCWefDjqSuUZ4/uB5kbMDH4e4DBNB8EBEor vXoOo72+0JWXIbZeKzxXvoOQOdSyDPCLYRiMhYVOp5UWD1YDB3ldLyAr4o60anV1B12A yZWoGacxM1Ml6Dr4qfvHpfGggNJMK7UkrafnOK6OAP53yE8WdmSzqcYz79liyHxv2W7R 1OF3Sg192Wqsw6uMOjHtRw3p5h59iapR6D11Hn6BdyWGBybY9X32OdqrhA8woaC04A2u h+Hg== X-Gm-Message-State: APjAAAWptizYGo4GGu9Nr1+taJBdougTZsmC7f2MjuzCbvib9d+bLXl8 klqqLkl+od4j6uwi1jLSx1PJOw== X-Google-Smtp-Source: APXvYqx/ZE+DXd2bjm4kdv8H0//NtdjhochNeOPGJZQGu8mC0/pb7GCZYEF6xzhuT9UwLBowFcAadg== X-Received: by 2002:a1c:8055:: with SMTP id b82mr6959904wmd.127.1581614060620; Thu, 13 Feb 2020 09:14:20 -0800 (PST) Return-Path: Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id a198sm3665778wme.12.2020.02.13.09.14.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Feb 2020 09:14:20 -0800 (PST) Date: Thu, 13 Feb 2020 17:14:18 +0000 From: "Leif Lindholm" To: Vijayenthiran Subramaniam Cc: devel@edk2.groups.io, michael.d.kinney@intel.com, Ard.Biesheuvel@arm.com, thomas.abraham@arm.com Subject: Re: [edk2-platforms] [PATCH v2 2/5] Platform/ARM/SgiPkg: Use lookup table to install ACPI table Message-ID: <20200213171418.GM23627@bivouac.eciton.net> References: <1581514167-1340-1-git-send-email-vijayenthiran.subramaniam@arm.com> <1581514167-1340-3-git-send-email-vijayenthiran.subramaniam@arm.com> MIME-Version: 1.0 In-Reply-To: <1581514167-1340-3-git-send-email-vijayenthiran.subramaniam@arm.com> User-Agent: Mutt/1.10.1 (2018-07-13) Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Wed, Feb 12, 2020 at 18:59:24 +0530, Vijayenthiran Subramaniam wrote: > Use lookup table to identify the platform and install corresponding ACPI > tables. As the number of supported platforms grow, the existing platform > identification using if..else does not scale well. > > Signed-off-by: Vijayenthiran Subramaniam > --- > Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c | 49 ++++++++++++++++---- > 1 file changed, 39 insertions(+), 10 deletions(-) > > diff --git a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > index 09e00e5d538b..4ab0dd768cd1 100644 > --- a/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > +++ b/Platform/ARM/SgiPkg/Drivers/PlatformDxe/PlatformDxe.c > @@ -11,6 +11,35 @@ > #include > #include > > +typedef struct { > + SGI_PLATFORM_DESCRIPTOR SgiPlafromDescriptor; > + CONST EFI_GUID* AcpiTableGuid; > +} SGI_PLATFORM_ACPI_TABLE_GUID_LOOKUP; > + > +// Macro to construct the SGI_PLATFORM_ACPI_TABLE_GUID_LOOKUP structure > +#define ACPI_GUID_LOOKUP(PART_NUM, CONFIG_NUM, GUID) \ > +{ \ > + { \ > + PART_NUM, CONFIG_NUM \ > + }, \ > + GUID \ > +} \ > + > +STATIC SGI_PLATFORM_ACPI_TABLE_GUID_LOOKUP AcpiTableGuidLookup[] = { > + ACPI_GUID_LOOKUP ( > + SGI575_PART_NUM, > + SGI575_CONF_NUM, > + &gSgi575AcpiTablesFileGuid), > + ACPI_GUID_LOOKUP ( > + RD_N1E1_EDGE_PART_NUM, > + RD_N1_EDGE_CONF_ID, > + &gRdN1EdgeAcpiTablesFileGuid), > + ACPI_GUID_LOOKUP ( > + RD_N1E1_EDGE_PART_NUM, > + RD_E1_EDGE_CONF_ID, > + &gRdE1EdgeAcpiTablesFileGuid), > +}; > + > VOID > InitVirtioDevices ( > VOID > @@ -26,6 +55,7 @@ ArmSgiPkgEntryPoint ( > EFI_STATUS Status; > VOID *SystemIdHob; > SGI_PLATFORM_DESCRIPTOR *HobData; > + UINT8 i; Type should be UINTN. "Index" or "Idx" would be more idiomatic. / Leif > UINT32 ConfigId; > UINT32 PartNum; > > @@ -40,16 +70,15 @@ ArmSgiPkgEntryPoint ( > PartNum = HobData->PlatformId; > ConfigId = HobData->ConfigId; > > - if ((PartNum == SGI575_PART_NUM) && (ConfigId == SGI575_CONF_NUM)) { > - Status = LocateAndInstallAcpiFromFv (&gSgi575AcpiTablesFileGuid); > - } else if ((PartNum == RD_N1E1_EDGE_PART_NUM) && > - (ConfigId == RD_N1_EDGE_CONF_ID)) { > - Status = LocateAndInstallAcpiFromFv (&gRdN1EdgeAcpiTablesFileGuid); > - } else if ((PartNum == RD_N1E1_EDGE_PART_NUM) && > - (ConfigId == RD_E1_EDGE_CONF_ID)) { > - Status = LocateAndInstallAcpiFromFv (&gRdE1EdgeAcpiTablesFileGuid); > - } else { > - Status = EFI_UNSUPPORTED; > + Status = EFI_UNSUPPORTED; > + > + // Walk through the AcpiTableGuidLookup lookup array > + for (i = 0; i < ARRAY_SIZE (AcpiTableGuidLookup); i++) { > + if ((PartNum == AcpiTableGuidLookup[i].SgiPlafromDescriptor.PlatformId) && > + (ConfigId == AcpiTableGuidLookup[i].SgiPlafromDescriptor.ConfigId)) { > + Status = LocateAndInstallAcpiFromFv (AcpiTableGuidLookup[i].AcpiTableGuid); > + break; > + } > } > > if (EFI_ERROR (Status)) { > -- > 2.7.4 >