From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by mx.groups.io with SMTP id smtpd.web11.12882.1576686966938423600 for ; Wed, 18 Dec 2019 08:36:07 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@akeo-ie.20150623.gappssmtp.com header.s=20150623 header.b=W9+7HyVK; spf=none, err=permanent DNS error (domain: akeo.ie, ip: 209.85.221.65, mailfrom: pete@akeo.ie) Received: by mail-wr1-f65.google.com with SMTP id z3so3016255wru.3 for ; Wed, 18 Dec 2019 08:36:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akeo-ie.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=VK78iR29uoTXVprvCH8phHPVqzkVPVVNuCrPWK1Q3Kw=; b=W9+7HyVKzqYSayGhOyF1WMo3CnSceiyklrPwsbLOtpTt+ZFZruFwmOtjp3I8fcCO3N SgOF+LQUHz/hz8awWbEujpjWLdlVw1Dkpef1o5gKV89V1bzXeJpaloYKN7fLCx8XcgtL J3zp3TWlaqxRpuxHSTYIa14mvxs2/ZkasyYtxDPXreLHLafhmJzi8/jT8OE8MgnQD1EG iG2bKQYdj9e8cmPhkiUtKHrKWkqo93roCkzaikAke8FInhK5LNvQEcqCQPwnjNkjrQQv S+tEz1VPKJd2p+Be7UEIiUdWcB1qZoWLnSe1JbKhIx3yxrY5Be9KWJpfS6M3lEuc35tT M7uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=VK78iR29uoTXVprvCH8phHPVqzkVPVVNuCrPWK1Q3Kw=; b=q/FVeP1EkOuclmeF7WYJTRISKwWaQNhT1KkIxoe60UeCP578Zxe4hh5peMWlrKG3p8 7jrucDCL+qkGSYz9gDd+vOdd2xl9LQHKqiJNuSJmiHRHDWolNwNIfVxXaRVlylvXF4iN fk1/a0Sj4/q6obdocyvcwlG2NESiPQ17G+pjzEHAStgOiKDly05i0SstaGOjFBVEipNM YLlvoR7JWuPqRVHl//+jZYOeeHC5r26bfvgNdJOBKeWwpS0GG67Z+6M6x1vftLvgfUx5 g2275G5vOpIHhQuGmpfvzRjZ7Dd3Aqi53MVJlvbIvdpKXh+bP5SUEWaIiYjWO3NWsiNV kmOg== X-Gm-Message-State: APjAAAUqjdBxQ+kUkIFzkq5HrAjRzTE0YdSCfm7oF3xeNU53eW/lTDJ8 l25CDtFmWTJV1mZPNkGvOwXFPw== X-Google-Smtp-Source: APXvYqw/FkjKK1cS0WG6UrNF3/iYNj9ZhIQEN+4uR91agJ22k6iB490G7V59va5Ola/iCLXQeMZqjA== X-Received: by 2002:adf:81e3:: with SMTP id 90mr3812011wra.23.1576686965448; Wed, 18 Dec 2019 08:36:05 -0800 (PST) Return-Path: Received: from [10.0.0.122] ([84.203.77.210]) by smtp.googlemail.com with ESMTPSA id b10sm3110685wrt.90.2019.12.18.08.36.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Dec 2019 08:36:04 -0800 (PST) Subject: Re: [edk2-platforms][PATCH 3/6] Platform/RPi4: Improve SPCR and DBG2 ACPI table generation To: =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= , devel@edk2.groups.io Cc: ard.biesheuvel@linaro.org, leif.lindholm@linaro.org References: <20191218114156.9036-1-pete@akeo.ie> <20191218114156.9036-4-pete@akeo.ie> <1771aae3-dee9-ed27-5134-962434db5f57@redhat.com> From: "Pete Batard" Message-ID: Date: Wed, 18 Dec 2019 16:36:03 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 In-Reply-To: <1771aae3-dee9-ed27-5134-962434db5f57@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit Hi Philippe, On 2019.12.18 15:57, Philippe Mathieu-Daudé wrote: > On 12/18/19 12:41 PM, Pete Batard wrote: >> Use code derived from JunoPkg to generate our serial tables and >> also use PCDs where possible. >> >> Signed-off-by: Pete Batard >> --- >>   Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.inf |   4 +- >>   Platform/RaspberryPi/RPi4/AcpiTables/Dbg2.aslc      | 100 >> +++++++++++++++++--- >>   Platform/RaspberryPi/RPi4/AcpiTables/Spcr.asl       |  48 ---------- >>   Platform/RaspberryPi/RPi4/AcpiTables/Spcr.aslc      |  94 >> ++++++++++++++++++ >>   4 files changed, 183 insertions(+), 63 deletions(-) >> >> diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.inf >> b/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.inf >> index 50c9f7694d84..6b1155d66444 100644 >> --- a/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.inf >> +++ b/Platform/RaspberryPi/RPi4/AcpiTables/AcpiTables.inf >> @@ -31,7 +31,7 @@ [Sources] >>     Gtdt.aslc >>     Dsdt.asl >>     Csrt.aslc >> -  Spcr.asl >> +  Spcr.aslc >>   [Packages] >>     ArmPkg/ArmPkg.dec >> @@ -47,4 +47,6 @@ [FixedPcd] >>     gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum >>     gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase >>     gArmTokenSpaceGuid.PcdGicDistributorBase >> +  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase >> +  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate >>     gEmbeddedTokenSpaceGuid.PcdInterruptBaseAddress >> diff --git a/Platform/RaspberryPi/RPi4/AcpiTables/Dbg2.aslc >> b/Platform/RaspberryPi/RPi4/AcpiTables/Dbg2.aslc >> index 849cf5134793..589a5c2cbd71 100644 >> --- a/Platform/RaspberryPi/RPi4/AcpiTables/Dbg2.aslc >> +++ b/Platform/RaspberryPi/RPi4/AcpiTables/Dbg2.aslc >> @@ -2,27 +2,99 @@ >>    * >>    *  Debug Port Table (DBG2) >>    * >> - *  Copyright (c) Microsoft Corporation. All rights reserved. >> + *  Copyright (c) 2019, Pete Batard >> + *  Copyright (c) 2012-2016, ARM Limited. All rights reserved. >>    * >>    *  SPDX-License-Identifier: BSD-2-Clause-Patent >>    * >>    **/ >> -UINT8 Dbg2[92] = { >> -  0x44, 0x42, 0x47, 0x32, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, >> -  0x4D, 0x53, 0x46, 0x54, 0x20, 0x20, 0x45, 0x44, 0x4B, 0x32, >> -  0x20, 0x20, 0x20, 0x20, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x53, >> -  0x46, 0x54, 0x01, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, >> -  0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x0A, 0x00, >> -  0x26, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x10, 0x00, >> -  0x00, 0x00, 0x16, 0x00, 0x22, 0x00, 0x00, 0x20, 0x00, 0x10, >> -  0x00, 0x50, 0x21, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x00, >> -  0x00, 0x00, '\\',  '_',  'S',  'B',  '.',  'U',  'R',  'T', >> -  'M', 0x00, >> +#include >> +#include >> +#include >> +#include >> + >> +#include "AcpiTables.h" >> + >> +#pragma pack(1) >> + >> +#define RPI_DBG2_NUM_DEBUG_PORTS                        1 >> +#define RPI_DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS    1 >> +#define RPI_DBG2_NAMESPACESTRING_FIELD_SIZE             10 >> + >> +// >> +// When using the miniUART, PcdSerialRegisterBase points to the 8250 >> base address, >> +// which is offset by 0x40 from the actual Bcm2835 base address > > Actually this is the other way around, the 8250 is at AUX + 0x40. > > Can we clean that up or is it too late? Yeah, re-reading this I admit the comment is not too clear. Let me try to rephrase this better in v2. Regards, /Pete > >> +// >> +#define RPI_UART_BASE_ADDRESS >> (FixedPcdGet64 (PcdSerialRegisterBase) - 0x40) >> +#define RPI_UART_LENGTH                                 0x70 >> +// >> +// RPI_UART_STR should match the value used Uart.asl >> +// >> +#define RPI_UART_STR                                    { '\\', '_', >> 'S', 'B', '.', 'U', 'R', 'T', 'M', 0x00 } >> + >> +typedef struct { >> +  EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT         Dbg2Device; >> +  EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE >> BaseAddressRegister; >> +  UINT32                                                AddressSize; >> +  UINT8 >> NameSpaceString[RPI_DBG2_NAMESPACESTRING_FIELD_SIZE]; >> +} DBG2_DEBUG_DEVICE_INFORMATION; >> + >> +typedef struct { >> +  EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE               Description; >> +  DBG2_DEBUG_DEVICE_INFORMATION >> Dbg2DeviceInfo[RPI_DBG2_NUM_DEBUG_PORTS]; >> +} DBG2_TABLE; >> + >> + >> +#define DBG2_DEBUG_PORT_DDI(NumReg, SubType, UartBase, UartAddrLen, >> UartNameStr) {                                    \ >> + >> { >> \ >> +      EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION, >> /* UINT8     Revision */                        \ >> +      sizeof (DBG2_DEBUG_DEVICE_INFORMATION), >> /* UINT16    Length */                          \ >> +      NumReg, >> /* UINT8     NumberofGenericAddressRegisters */ \ >> +      RPI_DBG2_NAMESPACESTRING_FIELD_SIZE, >> /* UINT16    NameSpaceStringLength */           \ >> +      OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, NameSpaceString), >> /* UINT16    NameSpaceStringOffset */           \ >> +      0, >> /* UINT16    OemDataLength */                   \ >> +      0, >> /* UINT16    OemDataOffset */                   \ >> +      EFI_ACPI_DBG2_PORT_TYPE_SERIAL, >> /* UINT16    Port Type */                       \ >> +      SubType, >> /* UINT16    Port Subtype */                    \ >> +      {EFI_ACPI_RESERVED_BYTE, EFI_ACPI_RESERVED_BYTE}, >> /* UINT8     Reserved[2] */                     \ >> +      OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, BaseAddressRegister), >> /* UINT16    BaseAddressRegister Offset */      \ >> +      OFFSET_OF (DBG2_DEBUG_DEVICE_INFORMATION, AddressSize) >> /* UINT16    AddressSize Offset */              \ >> + >> }, >> \ >> +    ARM_GAS32 (UartBase),                            /* >> EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE BaseAddressRegister */ \ >> +    UartAddrLen,                                     /* UINT32 >> AddressSize */                                        \ >> +    UartNameStr                                      /* UINT8 >> NameSpaceString[MAX_DBG2_NAME_LEN] */                 \ >> +  } >> + >> + >> +STATIC DBG2_TABLE Dbg2 = { >> +  { >> +    ACPI_HEADER ( >> +      EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE, >> +      DBG2_TABLE, >> +      EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION >> +    ), >> +    OFFSET_OF (DBG2_TABLE, Dbg2DeviceInfo), >> +    RPI_DBG2_NUM_DEBUG_PORTS >> /* UINT32  NumberDbgDeviceInfo */ >> +  }, >> +  { >> +    /* >> +     * Kernel Debug Port >> +     */ >> +    DBG2_DEBUG_PORT_DDI ( >> +      RPI_DBG2_NUMBER_OF_GENERIC_ADDRESS_REGISTERS, >> +      EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_BCM2835_UART, >> +      RPI_UART_BASE_ADDRESS, >> +      RPI_UART_LENGTH, >> +      RPI_UART_STR >> +    ), >> +  } >>   }; > [...] >