From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.groups.io with SMTP id smtpd.web10.12438.1582886361900863563 for ; Fri, 28 Feb 2020 02:39:22 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@akeo-ie.20150623.gappssmtp.com header.s=20150623 header.b=uv7N7NQA; spf=none, err=permanent DNS error (domain: akeo.ie, ip: 209.85.221.68, mailfrom: pete@akeo.ie) Received: by mail-wr1-f68.google.com with SMTP id x7so2426696wrr.0 for ; Fri, 28 Feb 2020 02:39:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PwwrOeYd6YL7VD8188W1cJnP5fU9oBD/fyXQxEBICvk=; b=uv7N7NQAqDf9K2/pqZBrLBqnPJq0bwalXDgnwR/BPtgCDCAFSLHosFI8Xt6ny/7kSk +hR1BG2nHyJOJzLODnPSzbB/RZpCyBzO37JGG326pw2W44Lkjw0ULAz3bmU3mUSkWbYQ 44I721Vs4qHhDi4l+sMYf4nxqoWJWUt+Zd3PDu0fhtV42V9kHNI+ZI7mqjSNjtMLRoYM HibETtnCWNISlCtHTJcZ9+caZqpYy/H81Ti6aacKv2ta4WZE+Bp2T3IEfMglLFb0FgdQ Jf2cxarIC7gLaRoZGZVSz5t2Gd1MOZ+L87J5vZxus8ZrqvHuK69ZXRXMoT3gQ6zQo/km c/3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PwwrOeYd6YL7VD8188W1cJnP5fU9oBD/fyXQxEBICvk=; b=Ig527cirpJCjIEKCx0YkdxmjeISzKnLH0KBd/y2exLXU2Hn8TmndzFqvGIQ8N8QUcE gCloIq6iXwVr2ZYs6o4LGOH0uHhnpJTxEYXKKpczQZ7nnN5h+9eNczPP+H0qSy9Ud6Bz N7Vo/RcNZpkTnHPVCx4lAIhV7tReqjKsE9iZQ8qnBocU76I5lxxLQ0jqyHzeIXIxM62a mgG6Dp5Jpe2Sb5xMEFLtDc3BW3jfuTPq37oHHXslSCqtrOIpTOGPP/XBPvG0dKtMvlQy n5Qdc8+4L78/md++h3qZ2Ly2hSC9eMKnFMz82WPk/uW/cRPqGHDroAkWWP5kXiFChDO/ OE0A== X-Gm-Message-State: APjAAAXBW6kNU1yeN9ZNZSkxv7RBiDITHnpflwHNOUZFfmYsFMcHkX0D HN+P85+Wsnb8v8TdZsJ2immuJWYOQf0= X-Google-Smtp-Source: APXvYqxHPYyaw74nHnnESVKR5A7zi6PzKGf+1txZ731pqRzJkU4Qubhtxbejg6b/8GG+XzwRin+i6Q== X-Received: by 2002:adf:914e:: with SMTP id j72mr4296485wrj.109.1582886360165; Fri, 28 Feb 2020 02:39:20 -0800 (PST) Return-Path: Received: from localhost.localdomain ([84.203.56.244]) by smtp.gmail.com with ESMTPSA id s8sm12341061wrt.57.2020.02.28.02.39.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Feb 2020 02:39:19 -0800 (PST) From: "Pete Batard" To: devel@edk2.groups.io Cc: ard.biesheuvel@linaro.org, leif@nuviainc.com, philmd@redhat.com Subject: [edk2-platforms][PATCH 08/15] Platform/RPi3: Update CSRT table to ACPI 5.1 Date: Fri, 28 Feb 2020 10:38:48 +0000 Message-Id: <20200228103855.11352-9-pete@akeo.ie> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20200228103855.11352-1-pete@akeo.ie> References: <20200228103855.11352-1-pete@akeo.ie> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit This brings this table in line with what we have for Pi 4 and will enable factorization of ACPI code between the two platforms. Signed-off-by: Pete Batard --- Platform/RaspberryPi/RPi3/AcpiTables/AcpiTables.h | 24 ++++++++++++++++---- Platform/RaspberryPi/RPi3/AcpiTables/Csrt.aslc | 14 ++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Platform/RaspberryPi/RPi3/AcpiTables/AcpiTables.h b/Platform/RaspberryPi/RPi3/AcpiTables/AcpiTables.h index 3e68923d3c05..9c76624e4ac8 100644 --- a/Platform/RaspberryPi/RPi3/AcpiTables/AcpiTables.h +++ b/Platform/RaspberryPi/RPi3/AcpiTables/AcpiTables.h @@ -2,6 +2,7 @@ * * RPi3 defines for constructing ACPI tables * + * Copyright (c) 2019, ARM Ltd. All rights reserved. * Copyright (c) 2018, Andrei Warkentin * Copyright (c) Microsoft Corporation. All rights reserved. * @@ -12,7 +13,7 @@ #ifndef __ACPITABLES_H__ #define __ACPITABLES_H__ -#include +#include // The ASL compiler can't perform arithmetic on MEMORY32SETBASE () // parameters so you can't pass a constant like BASE + OFFSET (the @@ -29,6 +30,21 @@ #define EFI_ACPI_CREATOR_REVISION 0x00000097 #define EFI_ACPI_VENDOR_ID SIGNATURE_32 ('M','S','F','T') + +// A macro to initialise the common header part of EFI ACPI tables as defined by +// EFI_ACPI_DESCRIPTION_HEADER structure. +#define ACPI_HEADER(Signature, Type, Revision) { \ + Signature, /* UINT32 Signature */ \ + sizeof (Type), /* UINT32 Length */ \ + Revision, /* UINT8 Revision */ \ + 0, /* UINT8 Checksum */ \ + EFI_ACPI_OEM_ID, /* UINT8 OemId[6] */ \ + EFI_ACPI_OEM_TABLE_ID, /* UINT64 OemTableId */ \ + EFI_ACPI_OEM_REVISION, /* UINT32 OemRevision */ \ + EFI_ACPI_CREATOR_ID, /* UINT32 CreatorId */ \ + EFI_ACPI_CREATOR_REVISION /* UINT32 CreatorRevision */ \ + } + #define EFI_ACPI_CSRT_REVISION 0x00000005 #define EFI_ACPI_CSRT_DEVICE_ID_DMA 0x00000009 // Fixed id #define EFI_ACPI_CSRT_RESOURCE_ID_IN_DMA_GRP 0x0 // Count up from 0 @@ -36,7 +52,7 @@ #define RPI3_DMA_CHANNEL_COUNT 10 // All 10 DMA channels are listed, including the reserved ones #define RPI3_DMA_USED_CHANNEL_COUNT 5 // Use 5 DMA channels -#define EFI_ACPI_5_0_CSRT_REVISION 0x00000000 +#define EFI_ACPI_5_1_CSRT_REVISION 0x00000000 typedef enum { @@ -68,7 +84,7 @@ typedef struct UINT16 Revision; // 2 bytes UINT16 Reserved; // 2 bytes UINT32 SharedInfoLength; // 4 bytes -} EFI_ACPI_5_0_CSRT_RESOURCE_GROUP_HEADER; +} EFI_ACPI_5_1_CSRT_RESOURCE_GROUP_HEADER; //------------------------------------------------------------------------ // CSRT Resource Descriptor 12 bytes total @@ -79,6 +95,6 @@ typedef struct UINT16 ResourceType; // 2 bytes UINT16 ResourceSubType; // 2 bytes UINT32 UID; // 4 bytes -} EFI_ACPI_5_0_CSRT_RESOURCE_DESCRIPTOR_HEADER; +} EFI_ACPI_5_1_CSRT_RESOURCE_DESCRIPTOR_HEADER; #endif // __ACPITABLES_H__ diff --git a/Platform/RaspberryPi/RPi3/AcpiTables/Csrt.aslc b/Platform/RaspberryPi/RPi3/AcpiTables/Csrt.aslc index 62f1a1fbdf19..0a8393a8076b 100644 --- a/Platform/RaspberryPi/RPi3/AcpiTables/Csrt.aslc +++ b/Platform/RaspberryPi/RPi3/AcpiTables/Csrt.aslc @@ -39,7 +39,7 @@ typedef struct //------------------------------------------------------------------------ typedef struct { - EFI_ACPI_5_0_CSRT_RESOURCE_DESCRIPTOR_HEADER DmaControllerHeader; + EFI_ACPI_5_1_CSRT_RESOURCE_DESCRIPTOR_HEADER DmaControllerHeader; DMA_CONTROLLER_VENDOR_DATA ControllerVendorData; } RD_DMA_CONTROLLER; @@ -59,7 +59,7 @@ typedef struct //------------------------------------------------------------------------ typedef struct { - EFI_ACPI_5_0_CSRT_RESOURCE_DESCRIPTOR_HEADER DmaChannelHeader; + EFI_ACPI_5_1_CSRT_RESOURCE_DESCRIPTOR_HEADER DmaChannelHeader; DMA_CHANNEL_VENDOR_DATA ChannelVendorData; } RD_DMA_CHANNEL; @@ -69,7 +69,7 @@ typedef struct typedef struct { - EFI_ACPI_5_0_CSRT_RESOURCE_GROUP_HEADER ResGroupHeader; + EFI_ACPI_5_1_CSRT_RESOURCE_GROUP_HEADER ResGroupHeader; RD_DMA_CONTROLLER DmaController; RD_DMA_CHANNEL DmaChannels[RPI3_DMA_CHANNEL_COUNT]; } RG_DMA; @@ -85,17 +85,17 @@ typedef struct // DMA Resource Group RG_DMA DmaResourceGroup; -} EFI_ACPI_5_0_CSRT_TABLE; +} EFI_ACPI_5_1_CSRT_TABLE; -EFI_ACPI_5_0_CSRT_TABLE Csrt = +EFI_ACPI_5_1_CSRT_TABLE Csrt = { //------------------------------------------------------------------------ // ACPI Table Header //------------------------------------------------------------------------ { - EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE, // Signature "CSRT" + EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE, // Signature "CSRT" sizeof (EFI_ACPI_DESCRIPTION_HEADER) + sizeof (RG_DMA), // Length - EFI_ACPI_5_0_CSRT_REVISION, // Revision + EFI_ACPI_5_1_CSRT_REVISION, // Revision 0x00, // Checksum calculated at runtime. EFI_ACPI_OEM_ID, // OEMID is a 6 bytes long field "BC2836" EFI_ACPI_OEM_TABLE_ID, // OEM table identification(8 bytes long) "RPI3EDK2" -- 2.21.0.windows.1