From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by mx.groups.io with SMTP id smtpd.web11.2218.1576063461533246565 for ; Wed, 11 Dec 2019 03:24:22 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@akeo-ie.20150623.gappssmtp.com header.s=20150623 header.b=VTIDrdTO; spf=none, err=permanent DNS error (domain: akeo.ie, ip: 209.85.128.68, mailfrom: pete@akeo.ie) Received: by mail-wm1-f68.google.com with SMTP id f129so6575740wmf.2 for ; Wed, 11 Dec 2019 03:24: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=6feIFz+SLBKSldfEFbB8gzjBesoa6i0P1Cze2U9xAv4=; b=VTIDrdTO6s0Tn+XtLhS7M3JbruBSCV0Cm4B/lekQeD09hHan3ZU8zHvrrUoG/0j8Vq mGp0Q1sE9BQzRSxl10JIRnaTeI8JxJ5BQ5+4m+yfu3WEGgC80CeY5VcSPv30PYG8Q/mr RS3roFbL+Q8kI1J4cFEJBtosRgkqWPOuwqUylVdzQCLvVWorFV6s3WYzZQVBigFDALWp ObH1HkJzKw6WJjQOVBqRm4ximIVFsn7GSPYFXX9AWF1RlTejibRfj3JVwImcDFy05UkQ PbPdQFl//QhE5zrS76/xTIwBOy0fmudMiEfU5IgHdcaD8YSPsgsxhJrbtOGCzcrEzcb8 v/mg== 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=6feIFz+SLBKSldfEFbB8gzjBesoa6i0P1Cze2U9xAv4=; b=QtiManqpxgb7EUN7PBzzG3A8lz7pz8pjy/GIUdPoPIZqLv1EmmuSvY5aHCxV3h7IPr 7lnrGjvRJFNsi1jo0KLUb4Fg/ISdjnWSMtQV5GQLj7gFu9BmJ4imltWn3A2wkVZRXyIf OP1hCH1K3w2k86/4dFvcxQ+Q21TdtCb1ad6gnlfaTFeUgeepGYSUsZZeD7OCAsjm6+pN Qx9Mwa5SMh2iaw9/I0iD/cN3+8Nax75evQWf1pVHQ5gJMFEg8BFDp36xY4qFqiUerQxv i0wVc1Uat+RHVIn0BRV1WKq2V6HEEq6np6vp5W3WY4SWVSU8RdTgVn4m3J1l6jV015gd odCw== X-Gm-Message-State: APjAAAWMHsASL+V3ZzK6YIQ2nb/bqrbiXGopxdS9HU8KhS4q8HNHPRXP ZxI+GdPfZ/WbFDXqp/wHVpVexI2D+Bc= X-Google-Smtp-Source: APXvYqxMny2gcORmgIu5eyqV1jTRinbKYfCWX78vlUi7cNe/vhKvcofFz3DWKqn4borGqyotmGsoBg== X-Received: by 2002:a7b:c552:: with SMTP id j18mr3073540wmk.123.1576063458146; Wed, 11 Dec 2019 03:24:18 -0800 (PST) Return-Path: Received: from localhost.localdomain ([84.203.45.230]) by smtp.gmail.com with ESMTPSA id f1sm1902145wru.6.2019.12.11.03.24.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Dec 2019 03:24:17 -0800 (PST) From: "Pete Batard" To: devel@edk2.groups.io Cc: ard.biesheuvel@linaro.org, leif.lindholm@linaro.org, philmd@redhat.com Subject: [edk2-non-osi][PATCH 2/2] Platforms/RPi4: Add Trusted Firmware binaries Date: Wed, 11 Dec 2019 11:24:00 +0000 Message-Id: <20191211112400.1872-3-pete@akeo.ie> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20191211112400.1872-1-pete@akeo.ie> References: <20191211112400.1872-1-pete@akeo.ie> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Similar to what is the case with the Raspberry Pi 3, the Raspberry Pi 4 UEFI firmware requires the provision of a Trusted Firmware binary (TF-A). The binary is built for a dtb base address of 0x00020000 and a UEFI payload base address of 0x00030000. Binaries are built using a custom version of TF-A (the source of which is documented in the Readme), since the official repository is missing a fix to get proper baudrate when using a recent version of start4.elf, as we as the ability to switch between PL011 and mini UART. We are currently working with TF-A to upstream both these fixes so that we can switch to binaries built from official source at a later date. In order to provide the ability to switch serial I/O controllers, a feature we will be adding to the RPi4 UEFI Firmware, and not lose TF-A output, two binaries are provided, one for mini UART output and one for PL011 output. Signed-off-by: Pete Batard --- Platform/RaspberryPi/RPi4/TrustedFirmware/License.txt | 26 ++++++++++++++++++++ Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md | 12 +++++++++ Platform/RaspberryPi/RPi4/TrustedFirmware/bl31_miniuart.bin | Bin 0 -> 41072 bytes Platform/RaspberryPi/RPi4/TrustedFirmware/bl31_pl011.bin | Bin 0 -> 41072 bytes 4 files changed, 38 insertions(+) diff --git a/Platform/RaspberryPi/RPi4/TrustedFirmware/License.txt b/Platform/RaspberryPi/RPi4/TrustedFirmware/License.txt new file mode 100644 index 000000000000..48429979fec2 --- /dev/null +++ b/Platform/RaspberryPi/RPi4/TrustedFirmware/License.txt @@ -0,0 +1,26 @@ +Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +* Neither the name of ARM nor the names of its contributors may be used to + endorse or promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md b/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md new file mode 100644 index 000000000000..7f1749dfc3a0 --- /dev/null +++ b/Platform/RaspberryPi/RPi4/TrustedFirmware/Readme.md @@ -0,0 +1,12 @@ +ARM Trusted Firmware for Raspberry Pi 4 +======================================= + +The `bl31_#####.bin` TF-A binaries found in this repository were built on a Debian 10.2 system +from https://github.com/pbatard/arm-trusted-firmware/tree/pi4 (pi4 branch) using the command: + +``` +make PLAT=rpi4 RPI3_PRELOADED_DTB_BASE=0x20000 PRELOADED_BL33_BASE=0x30000 SUPPORT_VFP=1 [RPI3_USE_PL011_UART=1] DEBUG=0 all +``` + +The only difference between these firmwares is that the `RPI3_USE_PL011_UART=1` option was added +to build `bl31_pl011.bin` so that it uses PL011 for serial output rather than the "mini UART". diff --git a/Platform/RaspberryPi/RPi4/TrustedFirmware/bl31_miniuart.bin b/Platform/RaspberryPi/RPi4/TrustedFirmware/bl31_miniuart.bin new file mode 100644 index 0000000000000000000000000000000000000000..e53aa0ef40fd2a8a66fee22439de2860813aa42f GIT binary patch literal 41072 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 L7sBM91MmL=wAOXu literal 0 HcmV?d00001 -- 2.21.0.windows.1