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.web12.11400.1576680413363869715 for ; Wed, 18 Dec 2019 06:46:53 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@linaro.org header.s=google header.b=PLP6/1Ep; spf=pass (domain: linaro.org, ip: 209.85.221.68, mailfrom: ard.biesheuvel@linaro.org) Received: by mail-wr1-f68.google.com with SMTP id q10so2565508wrm.11 for ; Wed, 18 Dec 2019 06:46:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=i6+53VJTv5cS556OUNYM4YTrw8Syly+Y9aVeSuJxOCQ=; b=PLP6/1EpEa1grK4fe4DNqCmNrrZ3B48MMQY5FUZx1gFl644niixw7tTwGjFIxjLPvt E2K9Qbo5zdU/xanjX305anJ9tD7SjAjuO5tXOCl21wPZhEE0wVvr9b6JjOczpXBS3Nqt DypbfqRsMk7QkllxDQyQC1x6k4r08asm5tFV6WVBfmPjz0oj4sJpQD1HJH+CdTlsLEsp 3lxoVx0H0ft/FeB5sn02CJLSYYN0fDftdnX065pN6TALZKYQ8Vc/MmoCS+wTedd8o2H1 Kl3qmUQnSCFdEyYc2B02fdJifKmiE8AKHYscgdrsqdGs9KjrDR8dLGpJbKAlyJ6s0qL2 bXbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=i6+53VJTv5cS556OUNYM4YTrw8Syly+Y9aVeSuJxOCQ=; b=ngJe/KIrfKj4EEVWqTSpNfM7cAFQxOmv+ZhqSq2TGk7KsyDgvlHnr/DSY60YYrfKe7 lKsbVHiT/9U2Jr9WJOs0JCmc2KyYV9mDz8DvDJWB0dycvsHakAYcbK/U1YwHWDd3ffCT F8vttNOBQdI+fmmxMuydCZwMSHEw+aAfjIiqg/xjba2tjufpPc+LFuI4gQqtCoNKEE9L LLl+YTTyhbb9fVzncL6fNzw/KIzvvnnVdF9eRpfNAp+2HFKkgE1Ru/GJwsz7tnXaR92v 6GTAq7Hd5HJsohNqIY7DgPCZSmj2ErIcmyfCR3RA6EWmL7f8fESPq+qEN7kFro3q1M5t eoQg== X-Gm-Message-State: APjAAAVkumsDCRKxuBgZ7xizjdOmr9wI55mXqHQlBcZ17wv2evOKY+Fl SLGJQ7FIRvN+GGBbtb+eeff/qY+3duh2FRjQTLPEeQ== X-Google-Smtp-Source: APXvYqzkK3zp+pOs7N06R0ng5kondzNOaCmSkXLFuMzaCy0CgLH8QDd81/MNsD6YvV0jLazyN1rtnf9TSqvwgN1P6tw= X-Received: by 2002:a5d:43c7:: with SMTP id v7mr3146723wrr.32.1576680411753; Wed, 18 Dec 2019 06:46:51 -0800 (PST) MIME-Version: 1.0 References: <20191218114156.9036-1-pete@akeo.ie> <20191218114156.9036-3-pete@akeo.ie> In-Reply-To: <20191218114156.9036-3-pete@akeo.ie> From: "Ard Biesheuvel" Date: Wed, 18 Dec 2019 14:46:43 +0000 Message-ID: Subject: Re: [edk2-platforms][PATCH 2/6] Platform/RPi4: Improve FADT ACPI table generation To: Pete Batard Cc: edk2-devel-groups-io , Leif Lindholm , =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= Content-Type: text/plain; charset="UTF-8" Hi Pete, On Wed, 18 Dec 2019 at 13:42, Pete Batard wrote: > > Use a proper aslc source to build the table. > > Note that we use ACPI 5.1 for this table to match the MADT > constraints. > > Signed-off-by: Pete Batard > --- > Platform/RaspberryPi/RPi4/AcpiTables/Fadt.aslc | 104 ++++++++++++++------ > 1 file changed, 76 insertions(+), 28 deletions(-) > > diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/Fadt.aslc b/Platform/RaspberryPi/RPi4/AcpiTables/Fadt.aslc > index 3ef877fde5f4..2d851794b989 100644 > --- a/Platform/RaspberryPi/RPi4/AcpiTables/Fadt.aslc > +++ b/Platform/RaspberryPi/RPi4/AcpiTables/Fadt.aslc > @@ -2,6 +2,7 @@ > * > * Fixed ACPI Description Table (FADT) > * > + * Copyright (c) 2019, Pete Batard > * Copyright (c) 2018, Andrey Warkentin > * Copyright (c) Microsoft Corporation. All rights reserved. > * > @@ -9,34 +10,81 @@ > * > **/ > > -UINT8 Fadt[268] = { > - 0x46, 0x41, 0x43, 0x50, 0x0C, 0x01, 0x00, 0x00, 0x05, 0x00, /* 0 */ > - 0x42, 0x43, 0x32, 0x38, 0x33, 0x36, 0x45, 0x44, 0x4B, 0x32, /* 10 */ > - 0x20, 0x20, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x53, /* 20 */ > - 0x46, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 30 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, /* 40 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 50 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 60 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 70 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 80 */ > - 0x00, 0x04, 0x00, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x00, 0x00, /* 90 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, /* 100 */ > - 0x00, 0x00, 0x21, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, /* 110 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, /* 120 */ > - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 130 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 140 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 150 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 160 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 170 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 180 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 190 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 200 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 210 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 220 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 230 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 240 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 250 */ > - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 268 */ > +#include > +#include > +#include > + > +#include "AcpiTables.h" > + > +#define RPI_DSDT_BASE_ADDRESS 0x33CD0000 DSDTs have no compile time base addresses - they end up wherever the AcpiPlatformDxe driver puts them. > +#define RPI_PM_TIMER_BLOCK_LEN 0x04 > +#define RPI_CST_VALUE 0xE3 Any idea what these mean? > + > +/* > + * Note: Use ACPI 5.1 since we need to match MADT ACPI requirements > + */ > +EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE Fadt = { > + ACPI_HEADER ( > + EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, > + EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE, > + EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION > + ), > + 0, // UINT32 FirmwareCtrl > + RPI_DSDT_BASE_ADDRESS, // UINT32 Dsdt Just put 0 here > + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0 > + EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC, // UINT8 PreferredPmProfile > + 0, // UINT16 SciInt > + 0, // UINT32 SmiCmd > + 0, // UINT8 AcpiEnable > + 0, // UINT8 AcpiDisable > + 0, // UINT8 S4BiosReq > + 0, // UINT8 PstateCnt > + 0, // UINT32 Pm1aEvtBlk > + 0, // UINT32 Pm1bEvtBlk > + 0, // UINT32 Pm1aCntBlk > + 0, // UINT32 Pm1bCntBlk > + 0, // UINT32 Pm2CntBlk > + 0, // UINT32 PmTmrBlk > + 0, // UINT32 Gpe0Blk > + 0, // UINT32 Gpe1Blk > + 0, // UINT8 Pm1EvtLen > + 0, // UINT8 Pm1CntLen > + 0, // UINT8 Pm2CntLen > + RPI_PM_TIMER_BLOCK_LEN, // UINT8 PmTmrLen and here > + 0, // UINT8 Gpe0BlkLen > + 0, // UINT8 Gpe1BlkLen > + 0, // UINT8 Gpe1Base > + RPI_CST_VALUE, // UINT8 CstCnt and here > + 0, // UINT16 PLvl2Lat > + 0, // UINT16 PLvl3Lat > + 0, // UINT16 FlushSize > + 0, // UINT16 FlushStride > + 0, // UINT8 DutyOffset > + 0, // UINT8 DutyWidth > + 0, // UINT8 DayAlrm > + 0, // UINT8 MonAlrm > + 0, // UINT8 Century > + EFI_ACPI_5_1_VGA_NOT_PRESENT | EFI_ACPI_5_1_MSI_NOT_SUPPORTED | // UINT16 IaPcBootArch > + EFI_ACPI_5_1_PCIE_ASPM_CONTROLS | EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT, IaPcBootArch is RES0 on ARM, so put 0 here as well please > + EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1 > + EFI_ACPI_5_1_WBINVD | EFI_ACPI_5_1_SLP_BUTTON | // UINT32 Flags > + EFI_ACPI_5_1_HW_REDUCED_ACPI, > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ResetReg > + 0, // UINT8 ResetValue > + EFI_ACPI_5_1_ARM_PSCI_COMPLIANT, // UINT16 ArmBootArchFlags > + EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION, // UINT8 MinorRevision > + 0, // UINT64 XFirmwareCtrl > + RPI_DSDT_BASE_ADDRESS, // UINT64 XDsdt Put 0 here > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk > + NULL_GAS, // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg > + NULL_GAS // EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg > }; > > // > -- > 2.21.0.windows.1 >