From patchwork Mon Dec 4 22:22:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120602 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434325edb; Mon, 4 Dec 2017 14:22:59 -0800 (PST) X-Google-Smtp-Source: AGs4zMbvp1rTXA6rlODsV62T2bmoztkpu/sUtazmvtMFAzMzFa/Gfdl6e7nB2SM62GJUaZot2PNG X-Received: by 10.84.240.1 with SMTP id y1mr16295582plk.391.1512426179093; Mon, 04 Dec 2017 14:22:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426179; cv=none; d=google.com; s=arc-20160816; b=FHQiuZwVTl5HOcGrT4zNA82AOhqCDimfwBb/w9+zxL/NgS8W/OCPlk6tEmBtUyQFu+ 4rN/uOnouepjgBSVzhQ9314XwajKzIC08MQwDM0Vrl28KTtOwYPhnTpyGu3y8qb2BXZs oA1+53PVTHYL95q6xr0U22aX4PPWl16prO7bGaBlZLZCA6xFownZ2CwFFUTgYOaxfa9E bl/+vtYQTYz4zSL/Z6womGOV6KgP1q8Y+yS8K3H8tZryftnztdmT/KJ7sp0w3rip4l47 S3zGH5LCfU5izJ40wOOjBFUzF+Xg9R+kKNV6Sd/L80Zvgg+0T+bbBt119hyAj4K2qbcg RT9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=8+YWRZHnAJpQkj2jPSWsIVOThePLPORGDRI1bm2gNCg=; b=JX8ePKT2m4hzCI/GdZQXzFgvAc+ZvwrkhoGe6BJoMKa64tb6z1z3EHkz91Z14D+qJx Tvpg2lytiQkERrxNUsc7GQXU+OtyCzRL8by4OiH0LSFbqzaT/lyrAqZ1AT5wrU8kFvVe FMVd9uKW0qZo/gCuttHLPvF3KCiiB/lDj08y07pTKbOB3li0Te7bbdHilgWbMwce/vcM lh4L+XWbfKFX0sFDkqVaZN06WCt69DI0o99hlk0qrFzWuPcrBalcH99my5d6Gj5tuOGG Swx7wkicZ1UkZml2ky0KYOChk8+oMYlYnEM5rSS9WJTlk39X/2OUFXNw8Jfz/JQWwgMO M8YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JwJGAYW5; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id u29si10970146pfj.188.2017.12.04.14.22.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:22:59 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=JwJGAYW5; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 54424221523A6; Mon, 4 Dec 2017 14:18:28 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::241; helo=mail-wm0-x241.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DF243220EE086 for ; Mon, 4 Dec 2017 14:18:26 -0800 (PST) Received: by mail-wm0-x241.google.com with SMTP id g75so8680792wme.0 for ; Mon, 04 Dec 2017 14:22:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lm4gbmE8o5rlO4rXVpFc5hx+YHJfxm8E6cWv9uCg8YM=; b=JwJGAYW5vu8ZC6ofNg+tpiD7CZ/+OLX9H3LXhyA8yOhoHcOu9ELMtW2LtlcY6IC6Uy /3FqwJFYmJjBRswo5ovsrXfn0rpj22tncDa63sUeX4RQg4P4ABsOE0114g+9NVpnr2ab I3AZwfNoyzJQGiWtxnrVWOIIvwNe4Z9KCHkvM= 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; bh=lm4gbmE8o5rlO4rXVpFc5hx+YHJfxm8E6cWv9uCg8YM=; b=tO+jIe3fkbuTKH7NPV6qm2ON1XL9AdWwiKFu3qwHr3SIXrXHTF9Oq/ATnLZ1sLD0iR +0fX0+5uBtfBnTLaBL1JkACcXTdXdfQ9H9YPFSGFwpDVRMm8uUuKIwlJ/CA92g6J4hiJ VsbkK/et0WR4DQXzQSRTyY7k5zdy8P9dBWmN5K5LN3wVxHcumVxbBac/BaSxcBiYOraj 61nVZPe5WESNm8s022ZpaUgdxKV+NtHR05req3Apf7MsrslT6L58cDygjWIsQ+OL2HGu hdvnWtFjMYot8g7JEkMKlcxH8jiQrzduqYbqsOi/TnS8VDjGc9xW3O1E8yjniPYPiZr5 5ulw== X-Gm-Message-State: AJaThX6XeYQMyR8awnOGMpmoq0Ey1e5ATIZCf7AcPiyC+utZOkgC/Uz/ ac0XKckYjbDPcoWl2UKemBNzufZEkgg= X-Received: by 10.28.48.150 with SMTP id w144mr8130141wmw.23.1512426175335; Mon, 04 Dec 2017 14:22:55 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.22.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:22:54 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:31 +0000 Message-Id: <20171204222243.15950-2-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 01/13] ArmPlatformPkg: remove NorFlashArmVExpressLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Remove NorFlashArmVExpressLib now that it has been moved into edk2-platforms where it belongs. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c | 84 -------------------- ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf | 32 -------- 2 files changed, 116 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c b/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c deleted file mode 100644 index a136bff4a1d6..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpress.c +++ /dev/null @@ -1,84 +0,0 @@ -/** @file - - Copyright (c) 2011-2014, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - **/ - -#include -#include -#include -#include -#include - -#define NOR_FLASH_DEVICE_COUNT 4 - -NOR_FLASH_DESCRIPTION mNorFlashDevices[NOR_FLASH_DEVICE_COUNT] = { - { // BootMon - ARM_VE_SMB_NOR0_BASE, - ARM_VE_SMB_NOR0_BASE, - SIZE_256KB * 255, - SIZE_256KB, - { 0xE7223039, 0x5836, 0x41E1, { 0xB5, 0x42, 0xD7, 0xEC, 0x73, 0x6C, 0x5E, 0x59 } } - }, - { // BootMon non-volatile storage - ARM_VE_SMB_NOR0_BASE, - ARM_VE_SMB_NOR0_BASE + SIZE_256KB * 255, - SIZE_64KB * 4, - SIZE_64KB, - { 0x02118005, 0x9DA7, 0x443A, { 0x92, 0xD5, 0x78, 0x1F, 0x02, 0x2A, 0xED, 0xBB } } - }, - { // UEFI - ARM_VE_SMB_NOR1_BASE, - ARM_VE_SMB_NOR1_BASE, - SIZE_256KB * 255, - SIZE_256KB, - { 0x1F15DA3C, 0x37FF, 0x4070, { 0xB4, 0x71, 0xBB, 0x4A, 0xF1, 0x2A, 0x72, 0x4A } } - }, - { // UEFI Variable Services non-volatile storage - ARM_VE_SMB_NOR1_BASE, - ARM_VE_SMB_NOR1_BASE + SIZE_256KB * 255, - SIZE_64KB * 3, //FIXME: Set 3 blocks because I did not succeed to copy 4 blocks into the ARM Versatile Express NOR Flash in the last NOR Flash. It should be 4 blocks - SIZE_64KB, - { 0xCC2CBF29, 0x1498, 0x4CDD, { 0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09 } } - } -}; - -EFI_STATUS -NorFlashPlatformInitialization ( - VOID - ) -{ - // Everything seems ok so far, so now we need to disable the platform-specific - // flash write protection for Versatile Express - if ((MmioRead32 (ARM_VE_SYS_FLASH) & 0x1) == 0) { - // Writing to NOR FLASH is disabled, so enable it - MmioWrite32 (ARM_VE_SYS_FLASH,1); - DEBUG((DEBUG_BLKIO, "NorFlashWriteBlocks: informational - Had to enable HSYS_FLASH flag.\n" )); - } - - return EFI_SUCCESS; -} - -EFI_STATUS -NorFlashPlatformGetDevices ( - OUT NOR_FLASH_DESCRIPTION **NorFlashDevices, - OUT UINT32 *Count - ) -{ - if ((NorFlashDevices == NULL) || (Count == NULL)) { - return EFI_INVALID_PARAMETER; - } - - *NorFlashDevices = mNorFlashDevices; - *Count = NOR_FLASH_DEVICE_COUNT; - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf deleted file mode 100644 index 0798cc30d8fc..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf +++ /dev/null @@ -1,32 +0,0 @@ -#/** @file -# -# Copyright (c) 2011, ARM Ltd. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = NorFlashArmVExpressLib - FILE_GUID = c0f5dfa0-7599-11e0-9665-0002a5d5c51b - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = NorFlashPlatformLib - -[Sources.common] - NorFlashArmVExpress.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - BaseLib - DebugLib - IoLib From patchwork Mon Dec 4 22:22:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120604 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434394edb; Mon, 4 Dec 2017 14:23:05 -0800 (PST) X-Google-Smtp-Source: AGs4zMbDdCp0ZNKF3EEeULgbo4zFHWLPND+0ZI9QzHBDHedh1GUtGF3sfdxKwneL+0aw4tbTksSl X-Received: by 10.84.252.134 with SMTP id y6mr3449344pll.204.1512426185650; Mon, 04 Dec 2017 14:23:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426185; cv=none; d=google.com; s=arc-20160816; b=vcC8iM/lcUfZqWmM7vahuBEqbaY1aKy4FsK1ey8O/BaYau6fbP1t+SMQJoBUuLvmLm Dy0F1AS3tjOHRNGcXwSMFfjE6ElHUra5umnx8x/aRA74ThPiHir6R/5QRfy8jt/J7xdQ 1MAsR1UEy/pX1FH3OQKpIZ6sNCEwlC9MOPhGo/3jc0kKUOvJkqHCqYOoWeX8fdbyVBPJ 2O3Fv1yEOBpdjCHVY25LTP1UTJ2RUNmx/+qqnFOHHcnYZnOsvy6F6jHb7n/vX3hFE8j1 qoqMlmdjd3qnMaha0wFpVVAFRgh6Suw81wFUncc+vegY36c8r34qeCA8n6EaBabRebUG d3lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=vRNwwU4BtU49wzHuSJEkyHRN8PYzvMXtEevxHmeobbM=; b=URIHwHfYpYLySO3rqy1jkL4QZH75PpSgvJghVDCh0ZbTVYCeFDrGZ60ajkQkOpczi1 js9d0zJ1e1nZDdr1tVmx89jyHG0Y6KiPPzD/FcJ50E8zAMbvtQiMTDA6kvd5gSOZjY4W 6YYGuKkKotBMDWLwG8usZChwuDdGp9IUoZpDoLZawJSK1OCoTdOVl3tZC3d2PUAO4JTs TJDUQK/PnHKX1VSCBO1zr0uEB7nhMULFZrZGXRXfRPx/sKxh0SLkMLKtLgQIRqZo73wS NDaS3sh4ymBzReHa7yFWKWqXLhyXs6HI2RTZ6lf2qaWg8g6jQQbAAFzRYs98gDF4H7Vi efsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=jReSRGfV; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id z28si10056460pgc.625.2017.12.04.14.23.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:05 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=jReSRGfV; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id DC20D22162297; Mon, 4 Dec 2017 14:18:34 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::22a; helo=mail-wm0-x22a.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x22a.google.com (mail-wm0-x22a.google.com [IPv6:2a00:1450:400c:c09::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 559DB220EE086 for ; Mon, 4 Dec 2017 14:18:32 -0800 (PST) Received: by mail-wm0-x22a.google.com with SMTP id f206so10850094wmf.5 for ; Mon, 04 Dec 2017 14:23:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=XB+k4VzlTX1VBBcsBB2PLGMN4OnXRgX/CLVzv1I8IuY=; b=jReSRGfVVnX2eF6nN6eXqyTHXFtvpyml6+I59z5Ph3JpkA2yz7txJ7zAx3Z0U53tzB dU96dzKUcftDqkadJk8fGkTuSdRzbLgiTUmrHWFuABf6AuDMX9E77MascW5ix2W43kbM 2HQD7n+VxrRzYbN6IGhe5DoSmlsmpYwOYvMVI= 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; bh=XB+k4VzlTX1VBBcsBB2PLGMN4OnXRgX/CLVzv1I8IuY=; b=djpPDdvTzaaozZoREbEnj7JpByCgDNoFSWmgbqbqp7BvP5YAMaq8xv0lZEUJAhuXX4 ytKcDLlOQgyViC+M6bING2fjrIvRsmWguy6mx7orD3V/T/UG05ZbNiH9anWNkPEDMQCb +f30IrYVFSY5n4R+P8CqHokz0xki/g+J5RKvaZGwBrAodHCErnYHN4sng63COGgpd36G WF20slDM+bpsbNpQwjAdkxmwstb2EBqI70wFpGPJgSJZJpjRkx3wfM0QI94k1tot3wbw +8mu3uewm+5VIkq+DDGBemQ8bgyRuhFB/eFHbNYm8o5HmntyiCI9CTpOMwnv2qP53inf wXWw== X-Gm-Message-State: AKGB3mKBv+C55gqImiU6u7fo7jtDxtHtOAqHfkPOt38NTDp472UdmPD6 uNOv4slUHexY2ROTW6iORkA+i2v5rkI= X-Received: by 10.28.74.147 with SMTP id n19mr2849879wmi.134.1512426178484; Mon, 04 Dec 2017 14:22:58 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.22.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:22:57 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:32 +0000 Message-Id: <20171204222243.15950-3-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 02/13] ArmPlatformPkg: remove ArmVExpressPkg X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Remove ArmVExpressPkg from EDK2 now that its contents have moved into edk2-platforms/Platform/ARM where they belong. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c | 90 ---- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf | 38 -- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.c | 38 -- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.inf | 37 -- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c | 519 -------------------- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBootDxe.inf | 51 -- ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec | 53 -- ArmPlatformPkg/ArmVExpressPkg/Include/Platform/CTA15-A7/ArmPlatform.h | 154 ------ ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM/ArmPlatform.h | 79 --- ArmPlatformPkg/ArmVExpressPkg/Include/VExpressMotherBoard.h | 140 ------ ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/ArmVExpressLib.inf | 53 -- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7.c | 182 ------- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.S | 81 --- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.asm | 96 ---- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Mem.c | 182 ------- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/AArch64/RTSMHelper.S | 61 --- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S | 97 ---- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm | 118 ----- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf | 62 --- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf | 59 --- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSM.c | 195 -------- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c | 161 ------ ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfig.c | 273 ---------- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf | 35 -- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c | 283 ----------- ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf | 37 -- ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c | 285 ----------- ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpressLib.inf | 45 -- ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c | 370 -------------- ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf | 44 -- ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c | 111 ----- ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf | 35 -- 32 files changed, 4064 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c deleted file mode 100644 index 7827c50d8bbf..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c +++ /dev/null @@ -1,90 +0,0 @@ -/** @file - - Copyright (c) 2013-2015, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include -#include -#include - -#include - -#define ARM_FVP_BASE_VIRTIO_BLOCK_BASE 0x1c130000 - -#pragma pack(1) -typedef struct { - VENDOR_DEVICE_PATH Vendor; - EFI_DEVICE_PATH_PROTOCOL End; -} VIRTIO_BLK_DEVICE_PATH; -#pragma pack() - -VIRTIO_BLK_DEVICE_PATH mVirtioBlockDevicePath = -{ - { - { - HARDWARE_DEVICE_PATH, - HW_VENDOR_DP, - { - (UINT8)( sizeof(VENDOR_DEVICE_PATH) ), - (UINT8)((sizeof(VENDOR_DEVICE_PATH)) >> 8) - } - }, - EFI_CALLER_ID_GUID, - }, - { - END_DEVICE_PATH_TYPE, - END_ENTIRE_DEVICE_PATH_SUBTYPE, - { - sizeof (EFI_DEVICE_PATH_PROTOCOL), - 0 - } - } -}; - -/** - * Generic UEFI Entrypoint for 'ArmFvpDxe' driver - * See UEFI specification for the details of the parameters - */ -EFI_STATUS -EFIAPI -ArmFvpInitialise ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - Status = gBS->InstallProtocolInterface (&ImageHandle, - &gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE, - &mVirtioBlockDevicePath); - if (EFI_ERROR (Status)) { - return Status; - } - - // Declare the Virtio BlockIo device - Status = VirtioMmioInstallDevice (ARM_FVP_BASE_VIRTIO_BLOCK_BASE, ImageHandle); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "ArmFvpDxe: Failed to install Virtio block device\n")); - } - - // Install dynamic Shell command to run baremetal binaries. - Status = ShellDynCmdRunAxfInstall (ImageHandle); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "ArmFvpDxe: Failed to install ShellDynCmdRunAxf\n")); - } - - return Status; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf deleted file mode 100644 index a0dd9cba19a9..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.inf +++ /dev/null @@ -1,38 +0,0 @@ -#/** @file -# -# Copyright (c) 2013-2015, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010006 - BASE_NAME = ArmFvpDxe - FILE_GUID = 405b2307-6839-4d52-aeb9-bece64252800 - MODULE_TYPE = UEFI_DRIVER - VERSION_STRING = 1.0 - ENTRY_POINT = ArmFvpInitialise - -[Sources.common] - ArmFvpDxe.c - -[Packages] - MdePkg/MdePkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - OvmfPkg/OvmfPkg.dec - -[LibraryClasses] - ArmShellCmdRunAxfLib - BaseMemoryLib - UefiDriverEntryPoint - UefiBootServicesTableLib - VirtioMmioDeviceLib - diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.c b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.c deleted file mode 100644 index 19efa3c23dea..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.c +++ /dev/null @@ -1,38 +0,0 @@ -/** @file - - Copyright (c) 2013-2015, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include - -/** - * Generic UEFI Entrypoint for 'ArmHwDxe' driver - * See UEFI specification for the details of the parameters - */ -EFI_STATUS -EFIAPI -ArmHwInitialise ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - // Install dynamic Shell command to run baremetal binaries. - Status = ShellDynCmdRunAxfInstall (ImageHandle); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "ArmHwDxe: Failed to install ShellDynCmdRunAxf\n")); - } - - return Status; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.inf b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.inf deleted file mode 100644 index 1ecdbb0b231e..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmHwDxe.inf +++ /dev/null @@ -1,37 +0,0 @@ -#/** @file -# -# Copyright (c) 2013-2015, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010006 - BASE_NAME = ArmHwDxe - FILE_GUID = fe61bb5f-1b67-4c24-b346-73db42e873e5 - MODULE_TYPE = UEFI_DRIVER - VERSION_STRING = 1.0 - ENTRY_POINT = ArmHwInitialise - -[Sources.common] - ArmHwDxe.c - -[Packages] - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec - -[LibraryClasses] - ArmShellCmdRunAxfLib - DxeServicesTableLib - MemoryAllocationLib - UefiDriverEntryPoint - -[Protocols] - gEfiDevicePathProtocolGuid diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c deleted file mode 100644 index a01bf3c671ad..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBoot.c +++ /dev/null @@ -1,519 +0,0 @@ -/** @file - - Copyright (c) 2014, ARM Ltd. All rights reserved.
- Copyright (c) 2016, Linaro Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -/* - Implementation of the Android Fastboot Platform protocol, to be used by the - Fastboot UEFI application, for ARM Versatile Express platforms. -*/ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#define FLASH_DEVICE_PATH_SIZE(DevPath) ( GetDevicePathSize (DevPath) - \ - sizeof (EFI_DEVICE_PATH_PROTOCOL)) - -#define PARTITION_NAME_MAX_LENGTH 72/2 - -#define IS_ALPHA(Char) (((Char) <= L'z' && (Char) >= L'a') || \ - ((Char) <= L'Z' && (Char) >= L'Z')) - -typedef struct _FASTBOOT_PARTITION_LIST { - LIST_ENTRY Link; - CHAR16 PartitionName[PARTITION_NAME_MAX_LENGTH]; - EFI_HANDLE PartitionHandle; -} FASTBOOT_PARTITION_LIST; - -STATIC LIST_ENTRY mPartitionListHead; - -/* - Helper to free the partition list -*/ -STATIC -VOID -FreePartitionList ( - VOID - ) -{ - FASTBOOT_PARTITION_LIST *Entry; - FASTBOOT_PARTITION_LIST *NextEntry; - - Entry = (FASTBOOT_PARTITION_LIST *) GetFirstNode (&mPartitionListHead); - while (!IsNull (&mPartitionListHead, &Entry->Link)) { - NextEntry = (FASTBOOT_PARTITION_LIST *) GetNextNode (&mPartitionListHead, &Entry->Link); - - RemoveEntryList (&Entry->Link); - FreePool (Entry); - - Entry = NextEntry; - } -} -/* - Read the PartitionName fields from the GPT partition entries, putting them - into an allocated array that should later be freed. -*/ -STATIC -EFI_STATUS -ReadPartitionEntries ( - IN EFI_BLOCK_IO_PROTOCOL *BlockIo, - OUT EFI_PARTITION_ENTRY **PartitionEntries - ) -{ - UINTN EntrySize; - UINTN NumEntries; - UINTN BufferSize; - UINT32 MediaId; - EFI_PARTITION_TABLE_HEADER *GptHeader; - EFI_STATUS Status; - - MediaId = BlockIo->Media->MediaId; - - // - // Read size of Partition entry and number of entries from GPT header - // - - GptHeader = AllocatePool (BlockIo->Media->BlockSize); - if (GptHeader == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Status = BlockIo->ReadBlocks (BlockIo, MediaId, 1, BlockIo->Media->BlockSize, (VOID *) GptHeader); - if (EFI_ERROR (Status)) { - return Status; - } - - // Check there is a GPT on the media - if (GptHeader->Header.Signature != EFI_PTAB_HEADER_ID || - GptHeader->MyLBA != 1) { - DEBUG ((EFI_D_ERROR, - "Fastboot platform: No GPT on flash. " - "Fastboot on Versatile Express does not support MBR.\n" - )); - return EFI_DEVICE_ERROR; - } - - EntrySize = GptHeader->SizeOfPartitionEntry; - NumEntries = GptHeader->NumberOfPartitionEntries; - - FreePool (GptHeader); - - ASSERT (EntrySize != 0); - ASSERT (NumEntries != 0); - - BufferSize = ALIGN_VALUE (EntrySize * NumEntries, BlockIo->Media->BlockSize); - *PartitionEntries = AllocatePool (BufferSize); - if (PartitionEntries == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Status = BlockIo->ReadBlocks (BlockIo, MediaId, 2, BufferSize, (VOID *) *PartitionEntries); - if (EFI_ERROR (Status)) { - FreePool (PartitionEntries); - return Status; - } - - return Status; -} - - -/* - Do any initialisation that needs to be done in order to be able to respond to - commands. - - @retval EFI_SUCCESS Initialised successfully. - @retval !EFI_SUCCESS Error in initialisation. -*/ -STATIC -EFI_STATUS -ArmFastbootPlatformInit ( - VOID - ) -{ - EFI_STATUS Status; - EFI_DEVICE_PATH_PROTOCOL *FlashDevicePath; - EFI_DEVICE_PATH_PROTOCOL *FlashDevicePathDup; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_DEVICE_PATH_PROTOCOL *NextNode; - HARDDRIVE_DEVICE_PATH *PartitionNode; - UINTN NumHandles; - EFI_HANDLE *AllHandles; - UINTN LoopIndex; - EFI_HANDLE FlashHandle; - EFI_BLOCK_IO_PROTOCOL *FlashBlockIo; - EFI_PARTITION_ENTRY *PartitionEntries; - FASTBOOT_PARTITION_LIST *Entry; - - InitializeListHead (&mPartitionListHead); - - // - // Get EFI_HANDLES for all the partitions on the block devices pointed to by - // PcdFastbootFlashDevicePath, also saving their GPT partition labels. - // We will use these labels as the key in ArmFastbootPlatformFlashPartition. - // There's no way to find all of a device's children, so we get every handle - // in the system supporting EFI_BLOCK_IO_PROTOCOL and then filter out ones - // that don't represent partitions on the flash device. - // - - FlashDevicePath = ConvertTextToDevicePath ((CHAR16*)FixedPcdGetPtr (PcdAndroidFastbootNvmDevicePath)); - - // - // Open the Disk IO protocol on the flash device - this will be used to read - // partition names out of the GPT entries - // - // Create another device path pointer because LocateDevicePath will modify it. - FlashDevicePathDup = FlashDevicePath; - Status = gBS->LocateDevicePath (&gEfiBlockIoProtocolGuid, &FlashDevicePathDup, &FlashHandle); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "Warning: Couldn't locate Android NVM device (status: %r)\n", Status)); - // Failing to locate partitions should not prevent to do other Android FastBoot actions - return EFI_SUCCESS; - } - - Status = gBS->OpenProtocol ( - FlashHandle, - &gEfiBlockIoProtocolGuid, - (VOID **) &FlashBlockIo, - gImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "Fastboot platform: Couldn't open Android NVM device (status: %r)\n", Status)); - return EFI_DEVICE_ERROR; - } - - // Read the GPT partition entry array into memory so we can get the partition names - Status = ReadPartitionEntries (FlashBlockIo, &PartitionEntries); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "Warning: Failed to read partitions from Android NVM device (status: %r)\n", Status)); - // Failing to locate partitions should not prevent to do other Android FastBoot actions - return EFI_SUCCESS; - } - - // Get every Block IO protocol instance installed in the system - Status = gBS->LocateHandleBuffer ( - ByProtocol, - &gEfiBlockIoProtocolGuid, - NULL, - &NumHandles, - &AllHandles - ); - ASSERT_EFI_ERROR (Status); - - // Filter out handles that aren't children of the flash device - for (LoopIndex = 0; LoopIndex < NumHandles; LoopIndex++) { - // Get the device path for the handle - Status = gBS->OpenProtocol ( - AllHandles[LoopIndex], - &gEfiDevicePathProtocolGuid, - (VOID **) &DevicePath, - gImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - ASSERT_EFI_ERROR (Status); - - // Check if it is a sub-device of the flash device - if (!CompareMem (DevicePath, FlashDevicePath, FLASH_DEVICE_PATH_SIZE (FlashDevicePath))) { - // Device path starts with path of flash device. Check it isn't the flash - // device itself. - NextNode = NextDevicePathNode (DevicePath); - if (IsDevicePathEndType (NextNode)) { - continue; - } - - // Assert that this device path node represents a partition. - ASSERT (NextNode->Type == MEDIA_DEVICE_PATH && - NextNode->SubType == MEDIA_HARDDRIVE_DP); - - PartitionNode = (HARDDRIVE_DEVICE_PATH *) NextNode; - - // Assert that the partition type is GPT. ReadPartitionEntries checks for - // presence of a GPT, so we should never find MBR partitions. - // ("MBRType" is a misnomer - this field is actually called "Partition - // Format") - ASSERT (PartitionNode->MBRType == MBR_TYPE_EFI_PARTITION_TABLE_HEADER); - - // The firmware may install a handle for "partition 0", representing the - // whole device. Ignore it. - if (PartitionNode->PartitionNumber == 0) { - continue; - } - - // - // Add the partition handle to the list - // - - // Create entry - Entry = AllocatePool (sizeof (FASTBOOT_PARTITION_LIST)); - if (Entry == NULL) { - Status = EFI_OUT_OF_RESOURCES; - FreePartitionList (); - goto Exit; - } - - // Copy handle and partition name - Entry->PartitionHandle = AllHandles[LoopIndex]; - CopyMem ( - Entry->PartitionName, - PartitionEntries[PartitionNode->PartitionNumber - 1].PartitionName, // Partition numbers start from 1. - PARTITION_NAME_MAX_LENGTH - ); - InsertTailList (&mPartitionListHead, &Entry->Link); - - // Print a debug message if the partition label is empty or looks like - // garbage. - if (!IS_ALPHA (Entry->PartitionName[0])) { - DEBUG ((EFI_D_ERROR, - "Warning: Partition %d doesn't seem to have a GPT partition label. " - "You won't be able to flash it with Fastboot.\n", - PartitionNode->PartitionNumber - )); - } - } - } - -Exit: - FreePool (PartitionEntries); - FreePool (FlashDevicePath); - FreePool (AllHandles); - return Status; - -} - -/* - To be called when Fastboot is finished and we aren't rebooting or booting an - image. Undo initialisation, free resrouces. -*/ -STATIC -VOID -ArmFastbootPlatformUnInit ( - VOID - ) -{ - FreePartitionList (); -} - -/* - Flash the partition named (according to a platform-specific scheme) - PartitionName, with the image pointed to by Buffer, whose size is BufferSize. - - @param[in] PartitionName Null-terminated name of partition to write. - @param[in] BufferSize Size of Buffer in byets. - @param[in] Buffer Data to write to partition. - - @retval EFI_NOT_FOUND No such partition. - @retval EFI_DEVICE_ERROR Flashing failed. -*/ -STATIC -EFI_STATUS -ArmFastbootPlatformFlashPartition ( - IN CHAR8 *PartitionName, - IN UINTN Size, - IN VOID *Image - ) -{ - EFI_STATUS Status; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - EFI_DISK_IO_PROTOCOL *DiskIo; - UINT32 MediaId; - UINTN PartitionSize; - FASTBOOT_PARTITION_LIST *Entry; - CHAR16 PartitionNameUnicode[60]; - BOOLEAN PartitionFound; - - AsciiStrToUnicodeStrS (PartitionName, PartitionNameUnicode, - ARRAY_SIZE (PartitionNameUnicode)); - - PartitionFound = FALSE; - Entry = (FASTBOOT_PARTITION_LIST *) GetFirstNode (&(mPartitionListHead)); - while (!IsNull (&mPartitionListHead, &Entry->Link)) { - // Search the partition list for the partition named by PartitionName - if (StrCmp (Entry->PartitionName, PartitionNameUnicode) == 0) { - PartitionFound = TRUE; - break; - } - - Entry = (FASTBOOT_PARTITION_LIST *) GetNextNode (&mPartitionListHead, &(Entry)->Link); - } - if (!PartitionFound) { - return EFI_NOT_FOUND; - } - - Status = gBS->OpenProtocol ( - Entry->PartitionHandle, - &gEfiBlockIoProtocolGuid, - (VOID **) &BlockIo, - gImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR, "Fastboot platform: couldn't open Block IO for flash: %r\n", Status)); - return EFI_NOT_FOUND; - } - - // Check image will fit on device - PartitionSize = (BlockIo->Media->LastBlock + 1) * BlockIo->Media->BlockSize; - if (PartitionSize < Size) { - DEBUG ((EFI_D_ERROR, "Partition not big enough.\n")); - DEBUG ((EFI_D_ERROR, "Partition Size:\t%d\nImage Size:\t%d\n", PartitionSize, Size)); - - return EFI_VOLUME_FULL; - } - - MediaId = BlockIo->Media->MediaId; - - Status = gBS->OpenProtocol ( - Entry->PartitionHandle, - &gEfiDiskIoProtocolGuid, - (VOID **) &DiskIo, - gImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - ASSERT_EFI_ERROR (Status); - - Status = DiskIo->WriteDisk (DiskIo, MediaId, 0, Size, Image); - if (EFI_ERROR (Status)) { - return Status; - } - - BlockIo->FlushBlocks(BlockIo); - - return Status; -} - -/* - Erase the partition named PartitionName. - - @param[in] PartitionName Null-terminated name of partition to erase. - - @retval EFI_NOT_FOUND No such partition. - @retval EFI_DEVICE_ERROR Erasing failed. -*/ -STATIC -EFI_STATUS -ArmFastbootPlatformErasePartition ( - IN CHAR8 *Partition - ) -{ - return EFI_SUCCESS; -} - -/* - If the variable referred to by Name exists, copy it (as a null-terminated - string) into Value. If it doesn't exist, put the Empty string in Value. - - Variable names and values may not be larger than 60 bytes, excluding the - terminal null character. This is a limitation of the Fastboot protocol. - - The Fastboot application will handle platform-nonspecific variables - (Currently "version" is the only one of these.) - - @param[in] Name Null-terminated name of Fastboot variable to retrieve. - @param[out] Value Caller-allocated buffer for null-terminated value of - variable. - - @retval EFI_SUCCESS The variable was retrieved, or it doesn't exist. - @retval EFI_DEVICE_ERROR There was an error looking up the variable. This - does _not_ include the variable not existing. -*/ -STATIC -EFI_STATUS -ArmFastbootPlatformGetVar ( - IN CHAR8 *Name, - OUT CHAR8 *Value - ) -{ - if (AsciiStrCmp (Name, "product")) { - AsciiStrCpyS (Value, 61, FixedPcdGetPtr (PcdFirmwareVendor)); - } else { - *Value = '\0'; - } - return EFI_SUCCESS; -} - -/* - React to an OEM-specific command. - - Future versions of this function might want to allow the platform to do some - extra communication with the host. A way to do this would be to add a function - to the FASTBOOT_TRANSPORT_PROTOCOL that allows the implementation of - DoOemCommand to replace the ReceiveEvent with its own, and to restore the old - one when it's finished. - - However at the moment although the specification allows it, the AOSP fastboot - host application doesn't handle receiving any data from the client, and it - doesn't support a data phase for OEM commands. - - @param[in] Command Null-terminated command string. - - @retval EFI_SUCCESS The command executed successfully. - @retval EFI_NOT_FOUND The command wasn't recognised. - @retval EFI_DEVICE_ERROR There was an error executing the command. -*/ -STATIC -EFI_STATUS -ArmFastbootPlatformOemCommand ( - IN CHAR8 *Command - ) -{ - CHAR16 CommandUnicode[65]; - - AsciiStrToUnicodeStrS (Command, CommandUnicode, ARRAY_SIZE (CommandUnicode)); - - if (AsciiStrCmp (Command, "Demonstrate") == 0) { - DEBUG ((EFI_D_ERROR, "ARM OEM Fastboot command 'Demonstrate' received.\n")); - return EFI_SUCCESS; - } else { - DEBUG ((EFI_D_ERROR, - "VExpress: Unrecognised Fastboot OEM command: %s\n", - CommandUnicode - )); - return EFI_NOT_FOUND; - } -} - -STATIC FASTBOOT_PLATFORM_PROTOCOL mPlatformProtocol = { - ArmFastbootPlatformInit, - ArmFastbootPlatformUnInit, - ArmFastbootPlatformFlashPartition, - ArmFastbootPlatformErasePartition, - ArmFastbootPlatformGetVar, - ArmFastbootPlatformOemCommand -}; - -EFI_STATUS -EFIAPI -ArmAndroidFastbootPlatformEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - return gBS->InstallProtocolInterface ( - &ImageHandle, - &gAndroidFastbootPlatformProtocolGuid, - EFI_NATIVE_INTERFACE, - &mPlatformProtocol - ); -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBootDxe.inf b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBootDxe.inf deleted file mode 100644 index 70cf04f4bd66..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressFastBootDxe/ArmVExpressFastBootDxe.inf +++ /dev/null @@ -1,51 +0,0 @@ -#/** @file -# -# Copyright (c) 2014, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVExpressFastBootDxe - FILE_GUID = 4004e454-89a0-11e3-89aa-97ef9d942abc - MODULE_TYPE = UEFI_DRIVER - VERSION_STRING = 1.0 - ENTRY_POINT = ArmAndroidFastbootPlatformEntryPoint - -[Sources.common] - ArmVExpressFastBoot.c - -[LibraryClasses] - BaseLib - BaseMemoryLib - DebugLib - DevicePathLib - MemoryAllocationLib - PcdLib - UefiBootServicesTableLib - UefiDriverEntryPoint - -[Protocols] - gAndroidFastbootPlatformProtocolGuid - gEfiBlockIoProtocolGuid - gEfiDiskIoProtocolGuid - -[Packages] - EmbeddedPkg/EmbeddedPkg.dec - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec - ArmPkg/ArmPkg.dec - -[Pcd] - gArmVExpressTokenSpaceGuid.PcdAndroidFastbootNvmDevicePath - gArmPlatformTokenSpaceGuid.PcdFirmwareVendor diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec deleted file mode 100644 index 3814513c2241..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec +++ /dev/null @@ -1,53 +0,0 @@ -#/** @file -# Arm Versatile Express package. -# -# Copyright (c) 2012-2015, ARM Limited. All rights reserved. -# -# This program and the accompanying materials are licensed and made available -# under the terms and conditions of the BSD License which accompanies this -# distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - DEC_SPECIFICATION = 0x00010005 - PACKAGE_NAME = ArmVExpressPkg - PACKAGE_GUID = 9c0aaed4-74c5-4043-b417-a3223814ce76 - PACKAGE_VERSION = 0.1 - -################################################################################ -# -# Include Section - list of Include Paths that are provided by this package. -# Comments are used for Keywords and Module Types. -# -# Supported Module Types: -# BASE SEC PEI_CORE PEIM DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_SAL_DRIVER UEFI_DRIVER UEFI_APPLICATION -# -################################################################################ -[Includes.common] - Include # Root include for the package - -[Guids.common] - gArmVExpressTokenSpaceGuid = { 0x9c0aaed4, 0x74c5, 0x4043, { 0xb4, 0x17, 0xa3, 0x22, 0x38, 0x14, 0xce, 0x76 } } - -[PcdsFeatureFlag.common] - -[PcdsFixedAtBuild.common] - # - # MaxMode must be one number higher than the actual max mode, - # i.e. for actual maximum mode 2, set the value to 3. - # - # For a list of mode numbers look in LcdArmVExpress.c - # - gArmVExpressTokenSpaceGuid.PcdPL111LcdMaxMode|3|UINT32|0x00000001 - gArmVExpressTokenSpaceGuid.PcdPL111LcdVideoModeOscId|1|UINT32|0x00000002 - gArmVExpressTokenSpaceGuid.PcdHdLcdVideoModeOscId|0|UINT32|0x00000003 - - # - # Device path of block device on which Fastboot will flash partitions - # - gArmVExpressTokenSpaceGuid.PcdAndroidFastbootNvmDevicePath|""|VOID*|0x00000004 diff --git a/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/CTA15-A7/ArmPlatform.h b/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/CTA15-A7/ArmPlatform.h deleted file mode 100644 index b52f89a5cbf8..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/CTA15-A7/ArmPlatform.h +++ /dev/null @@ -1,154 +0,0 @@ -/** @file -* Header defining Versatile Express constants (Base addresses, sizes, flags) -* -* Copyright (c) 2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __ARM_VEXPRESS_CTA15A7_H__ -#define __ARM_VEXPRESS_CTA15A7_H__ - -#include - -/*********************************************************************************** -// Platform Memory Map -************************************************************************************/ - -// Motherboard Peripheral and On-chip peripheral -#define ARM_VE_BOARD_PERIPH_BASE 0x1C010000 - -#ifdef ARM_BIGLITTLE_TC2 - -// Secure NOR Flash -#define ARM_VE_SEC_NOR0_BASE 0x00000000 -#define ARM_VE_SEC_NOR0_SZ SIZE_64MB - -// Secure RAM -#define ARM_VE_SEC_RAM0_BASE 0x04000000 -#define ARM_VE_SEC_RAM0_SZ SIZE_64MB - -#endif - -// NOR Flash 0 -#define ARM_VE_SMB_NOR0_BASE 0x08000000 -#define ARM_VE_SMB_NOR0_SZ SIZE_64MB -// NOR Flash 1 -#define ARM_VE_SMB_NOR1_BASE 0x0C000000 -#define ARM_VE_SMB_NOR1_SZ SIZE_64MB - -// SRAM -#define ARM_VE_SMB_SRAM_BASE 0x14000000 -#define ARM_VE_SMB_SRAM_SZ SIZE_32MB - -// USB, Ethernet, VRAM -#ifdef ARM_BIGLITTLE_TC2 -#define ARM_VE_SMB_PERIPH_BASE 0x18000000 -#define ARM_VE_SMB_PERIPH_SZ (SIZE_64MB + SIZE_32MB + SIZE_16MB) -#else -#define ARM_VE_SMB_PERIPH_BASE 0x1C000000 -#define ARM_VE_SMB_PERIPH_SZ (SIZE_64MB + SIZE_16MB) -#endif -#define PL111_CLCD_VRAM_MOTHERBOARD_BASE ARM_VE_SMB_PERIPH_BASE - -// On-Chip non-secure ROM -#ifdef ARM_BIGLITTLE_TC2 -#define ARM_VE_TC2_NON_SECURE_ROM_BASE 0x1F000000 -#define ARM_VE_TC2_NON_SECURE_ROM_SZ SIZE_16MB -#endif - -// On-Chip Peripherals -#define ARM_VE_ONCHIP_PERIPH_BASE 0x20000000 -#define ARM_VE_ONCHIP_PERIPH_SZ 0x10000000 - -// On-Chip non-secure SRAM -#ifdef ARM_BIGLITTLE_TC2 -#define ARM_VE_TC2_NON_SECURE_SRAM_BASE 0x2E000000 -#define ARM_VE_TC2_NON_SECURE_SRAM_SZ SIZE_64KB -#endif - -// Allocate a section for the VRAM (Video RAM) -// If 0 then allow random memory allocation -#define LCD_VRAM_CORE_TILE_BASE 0 - -// Define SEC phase sync point -#define ARM_SEC_EVENT_BOOT_IMAGE_TABLE_IS_AVAILABLE (ARM_SEC_EVENT_MAX + 1) - -/*********************************************************************************** - Core Tile memory-mapped Peripherals -************************************************************************************/ - -// PL354 Static Memory Controller Base -#ifdef ARM_BIGLITTLE_TC2 -#define ARM_VE_SMC_CTRL_BASE 0x7FFD0000 -#else -#define ARM_VE_SMC_CTRL_BASE (ARM_VE_BOARD_PERIPH_BASE + 0xE1000) -#endif - -#define ARM_CTA15A7_SCC_BASE 0x7FFF0000 -#define ARM_CTA15A7_SCC_CFGREG48 (ARM_CTA15A7_SCC_BASE + 0x700) - -#define ARM_CTA15A7_SCC_SYSINFO ARM_CTA15A7_SCC_CFGREG48 - -#define ARM_CTA15A7_SCC_SYSINFO_CLUSTER_A7_NUM_CPU(val) (((val) >> 20) & 0xF) -#define ARM_CTA15A7_SCC_SYSINFO_CLUSTER_A15_NUM_CPU(val) (((val) >> 16) & 0xF) -#define ARM_CTA15A7_SCC_SYSINFO_ACTIVE_CLUSTER_A15 (1 << 0) -#define ARM_CTA15A7_SCC_SYSINFO_ACTIVE_CLUSTER_A7 (1 << 1) -#define ARM_CTA15A7_SCC_SYSINFO_UEFI_RESTORE_DEFAULT_NORFLASH (1 << 4) - -#define ARM_CTA15A7_SPC_BASE 0x7FFF0B00 -#define ARM_CTA15A7_SPC_WAKE_INT_MASK (ARM_CTA15A7_SPC_BASE + 0x24) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT (ARM_CTA15A7_SPC_BASE + 0x3C) -#define ARM_CTA15A7_SPC_A15_BX_ADDR0 (ARM_CTA15A7_SPC_BASE + 0x68) -#define ARM_CTA15A7_SPC_A15_BX_ADDR1 (ARM_CTA15A7_SPC_BASE + 0x6C) -#define ARM_CTA15A7_SPC_A15_BX_ADDR2 (ARM_CTA15A7_SPC_BASE + 0x70) -#define ARM_CTA15A7_SPC_A15_BX_ADDR3 (ARM_CTA15A7_SPC_BASE + 0x74) -#define ARM_CTA15A7_SPC_A7_BX_ADDR0 (ARM_CTA15A7_SPC_BASE + 0x78) -#define ARM_CTA15A7_SPC_A7_BX_ADDR1 (ARM_CTA15A7_SPC_BASE + 0x7C) -#define ARM_CTA15A7_SPC_A7_BX_ADDR2 (ARM_CTA15A7_SPC_BASE + 0x80) -#define ARM_CTA15A7_SPC_A7_BX_ADDR3 (ARM_CTA15A7_SPC_BASE + 0x84) - -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_IRQ_A15_MASK_0 (1 << 0) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_IRQ_A15_MASK_1 (1 << 1) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_FIQ_A15_MASK_0 (1 << 2) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_FIQ_A15_MASK_1 (1 << 3) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_IRQ_A7_MASK_0 (1 << 4) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_IRQ_A7_MASK_1 (1 << 5) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_IRQ_A7_MASK_2 (1 << 6) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_FIQ_A7_MASK_0 (1 << 7) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_FIQ_A7_MASK_1 (1 << 8) -#define ARM_CTA15A7_SPC_WAKE_INT_MASK_FIQ_A7_MASK_2 (1 << 9) - -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A15_0 (1 << 0) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A15_1 (1 << 1) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A15_L2 (1 << 2) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A7_0 (1 << 3) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A7_1 (1 << 4) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A7_2 (1 << 5) -#define ARM_CTA15A7_SPC_STANDBYWFI_STAT_A7_L2 (1 << 6) - - -/*********************************************************************************** -// Memory-mapped peripherals -************************************************************************************/ - -/*// SP810 Controller -#undef SP810_CTRL_BASE -#define SP810_CTRL_BASE 0x1C020000 - -// PL111 Colour LCD Controller -#define PL111_CLCD_SITE ARM_VE_MOTHERBOARD_SITE -#define PL111_CLCD_MOTHERBOARD_VIDEO_MODE_OSC_ID 1 -#define PL111_CLCD_CORE_TILE_VIDEO_MODE_OSC_ID 1 - -// VRAM offset for the PL111 Colour LCD Controller on the motherboard -#define VRAM_MOTHERBOARD_BASE (ARM_VE_SMB_PERIPH_BASE + 0x00000)*/ - -#endif diff --git a/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM/ArmPlatform.h b/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM/ArmPlatform.h deleted file mode 100644 index d856b6daa1d7..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Include/Platform/RTSM/ArmPlatform.h +++ /dev/null @@ -1,79 +0,0 @@ -/** @file -* Header defining Versatile Express constants (Base addresses, sizes, flags) -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __ARM_VEXPRESS_H__ -#define __ARM_VEXPRESS_H__ - -#include - -/*********************************************************************************** -// Platform Memory Map -************************************************************************************/ - -// Can be NOR0, NOR1, DRAM -#define ARM_VE_REMAP_BASE 0x00000000 -#define ARM_VE_REMAP_SZ SIZE_64MB - -// Motherboard Peripheral and On-chip peripheral -#define ARM_VE_BOARD_PERIPH_BASE 0x1C010000 - -// NOR Flash 1 -// There is typo in the reference manual for the Base address of NOR Flash 1 -#define ARM_VE_SMB_NOR0_BASE 0x08000000 -#define ARM_VE_SMB_NOR0_SZ SIZE_64MB -// NOR Flash 2 -#define ARM_VE_SMB_NOR1_BASE 0x0C000000 -#define ARM_VE_SMB_NOR1_SZ SIZE_64MB -// SRAM -#define ARM_VE_SMB_SRAM_BASE 0x2E000000 -#define ARM_VE_SMB_SRAM_SZ SIZE_64KB -// USB, Ethernet, VRAM -#define ARM_VE_SMB_PERIPH_BASE 0x18800000 -#define ARM_VE_SMB_PERIPH_SZ (SIZE_64MB - SIZE_8MB) - -#define PL111_CLCD_VRAM_MOTHERBOARD_BASE 0x18000000 -#define PL111_CLCD_VRAM_MOTHERBOARD_SIZE 0x800000 - -// DRAM -#define ARM_VE_DRAM_BASE PcdGet64 (PcdSystemMemoryBase) -#define ARM_VE_DRAM_SZ PcdGet64 (PcdSystemMemorySize) - -// This can be any value since we only support motherboard PL111 -#define LCD_VRAM_CORE_TILE_BASE 0x00000000 - -// On-chip peripherals (Snoop Control Unit etc...) -#define ARM_VE_ON_CHIP_PERIPH_BASE 0x2C000000 -// Note: The TRM says not all the peripherals are implemented -#define ARM_VE_ON_CHIP_PERIPH_SZ SIZE_256MB - - -// External AXI between daughterboards (Logic Tile) -#define ARM_VE_EXT_AXI_BASE 0x2E010000 // Not modelled -#define ARM_VE_EXT_AXI_SZ 0x20000000 /* 512 MB */ - -/*********************************************************************************** -// Memory-mapped peripherals -************************************************************************************/ - -// SP810 Controller -#undef SP810_CTRL_BASE -#define SP810_CTRL_BASE 0x1C020000 - -// PL111 Colour LCD Controller -#define PL111_CLCD_SITE ARM_VE_MOTHERBOARD_SITE -#define PL111_CLCD_MOTHERBOARD_VIDEO_MODE_OSC_ID 1 -#define PL111_CLCD_CORE_TILE_VIDEO_MODE_OSC_ID 1 - -#endif diff --git a/ArmPlatformPkg/ArmVExpressPkg/Include/VExpressMotherBoard.h b/ArmPlatformPkg/ArmVExpressPkg/Include/VExpressMotherBoard.h deleted file mode 100644 index 38691c35828b..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Include/VExpressMotherBoard.h +++ /dev/null @@ -1,140 +0,0 @@ -/** @file -* Header defining Versatile Express constants (Base addresses, sizes, flags) -* -* Copyright (c) 2011-2015, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __VEXPRESSMOTHERBOARD_H_ -#define __VEXPRESSMOTHERBOARD_H_ - -#include - -/*********************************************************************************** -// Motherboard memory-mapped peripherals -************************************************************************************/ - -// Define MotherBoard SYS flags offsets (from ARM_VE_BOARD_PERIPH_BASE) -#define ARM_VE_SYS_ID_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00000) -#define ARM_VE_SYS_SW_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00004) -#define ARM_VE_SYS_LED_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00008) -#define ARM_VE_SYS_FLAGS_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00030) -#define ARM_VE_SYS_FLAGS_SET_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00030) -#define ARM_VE_SYS_FLAGS_CLR_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00034) -#define ARM_VE_SYS_FLAGS_NV_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00038) -#define ARM_VE_SYS_FLAGS_NV_SET_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00038) -#define ARM_VE_SYS_FLAGS_NV_CLR_REG (ARM_VE_BOARD_PERIPH_BASE + 0x0003C) -#define ARM_VE_SYS_FLASH (ARM_VE_BOARD_PERIPH_BASE + 0x0004C) -#define ARM_VE_SYS_CFGSWR_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00058) -#define ARM_VE_SYS_MISC (ARM_VE_BOARD_PERIPH_BASE + 0x00060) -#define ARM_VE_SYS_PROCID0_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00084) -#define ARM_VE_SYS_PROCID1_REG (ARM_VE_BOARD_PERIPH_BASE + 0x00088) -#define ARM_VE_SYS_CFGDATA_REG (ARM_VE_BOARD_PERIPH_BASE + 0x000A0) -#define ARM_VE_SYS_CFGCTRL_REG (ARM_VE_BOARD_PERIPH_BASE + 0x000A4) -#define ARM_VE_SYS_CFGSTAT_REG (ARM_VE_BOARD_PERIPH_BASE + 0x000A8) - -// SP810 Controller -#ifndef SP810_CTRL_BASE -#define SP810_CTRL_BASE (ARM_VE_BOARD_PERIPH_BASE + 0x01000) -#endif - -// PL111 Colour LCD Controller - motherboard -#define PL111_CLCD_MOTHERBOARD_BASE (ARM_VE_BOARD_PERIPH_BASE + 0x1F000) -#define PL111_CLCD_MOTHERBOARD_VIDEO_MODE_OSC_ID 1 - -// VRAM offset for the PL111 Colour LCD Controller on the motherboard -#define VRAM_MOTHERBOARD_BASE (ARM_VE_SMB_PERIPH_BASE + 0x00000) - -#define ARM_VE_SYS_PROC_ID_HBI 0xFFF -#define ARM_VE_SYS_PROC_ID_MASK (UINT32)(0xFFU << 24) -#define ARM_VE_SYS_PROC_ID_UNSUPPORTED (UINT32)(0xFFU << 24) -#define ARM_VE_SYS_PROC_ID_CORTEX_A9 (UINT32)(0x0CU << 24) -#define ARM_VE_SYS_PROC_ID_CORTEX_A5 (UINT32)(0x12U << 24) -#define ARM_VE_SYS_PROC_ID_CORTEX_A15 (UINT32)(0x14U << 24) -#define ARM_VE_SYS_PROC_ID_CORTEX_A7 (UINT32)(0x18U << 24) -#define ARM_VE_SYS_PROC_ID_CORTEX_A12 (UINT32)(0x1CU << 24) - -// Boot Master Select: -// 0 = Site 1 boot master -// 1 = Site 2 boot master -#define ARM_VE_SYS_MISC_MASTERSITE (1 << 14) -// -// Sites where the peripheral is fitted -// -#define ARM_VE_UNSUPPORTED ~0 -#define ARM_VE_MOTHERBOARD_SITE 0 -#define ARM_VE_DAUGHTERBOARD_1_SITE 1 -#define ARM_VE_DAUGHTERBOARD_2_SITE 2 - -#define VIRTUAL_SYS_CFG(site,func) (((site) << 24) | (func)) - -// -// System Configuration Control Functions -// -#define SYS_CFG_OSC 1 -#define SYS_CFG_VOLT 2 -#define SYS_CFG_AMP 3 -#define SYS_CFG_TEMP 4 -#define SYS_CFG_RESET 5 -#define SYS_CFG_SCC 6 -#define SYS_CFG_MUXFPGA 7 -#define SYS_CFG_SHUTDOWN 8 -#define SYS_CFG_REBOOT 9 -#define SYS_CFG_DVIMODE 11 -#define SYS_CFG_POWER 12 -// Oscillator for Site 1 -#define SYS_CFG_OSC_SITE1 VIRTUAL_SYS_CFG(ARM_VE_DAUGHTERBOARD_1_SITE,SYS_CFG_OSC) -// Oscillator for Site 2 -#define SYS_CFG_OSC_SITE2 VIRTUAL_SYS_CFG(ARM_VE_DAUGHTERBOARD_2_SITE,SYS_CFG_OSC) -// Can not access the battery backed-up hardware clock on the Versatile Express motherboard -#define SYS_CFG_RTC VIRTUAL_SYS_CFG(ARM_VE_UNSUPPORTED,1) - -// -// System ID -// -// All RTSM VE models have the same System ID : 0x225F500 -// -// FVP models have a different System ID. -// Default Base model System ID : 0x00201100 -// [31:28] Rev - Board revision: 0x0 = Rev A -// [27:16] HBI - HBI board number in BCD: 0x020 = v8 Base Platform -// [15:12] Variant - Build variant of board: 0x1 = Variant B. (GIC 64k map) -// [11:8] Plat - Platform type: 0x1 = Model -// [7:0] FPGA - FPGA build, BCD coded: 0x00 -// -//HBI = 010 = Foundation Model -//HBI = 020 = Base Platform -// -// And specifically, the GIC register banks start at the following -// addresses: -// Variant = 0 Variant = 1 -//GICD 0x2c001000 0x2f000000 -//GICC 0x2c002000 0x2c000000 -//GICH 0x2c004000 0x2c010000 -//GICV 0x2c006000 0x2c020000 - -#define ARM_FVP_BASE_BOARD_SYS_ID (0x00200100) -#define ARM_FVP_FOUNDATION_BOARD_SYS_ID (0x00100100) - -#define ARM_FVP_SYS_ID_REV_MASK (UINT32)(0xFUL << 28) -#define ARM_FVP_SYS_ID_HBI_MASK (UINT32)(0xFFFUL << 16) -#define ARM_FVP_SYS_ID_VARIANT_MASK (UINT32)(0xFUL << 12) -#define ARM_FVP_SYS_ID_PLAT_MASK (UINT32)(0xFUL << 8 ) -#define ARM_FVP_SYS_ID_FPGA_MASK (UINT32)(0xFFUL << 0 ) -#define ARM_FVP_GIC_VE_MMAP 0x0 -#define ARM_FVP_GIC_BASE_MMAP (UINT32)(1 << 12) - -// The default SYS_IDs. These can be changed when starting the model. -#define ARM_RTSM_SYS_ID (0x225F500) -#define ARM_FVP_BASE_SYS_ID (ARM_FVP_BASE_BOARD_SYS_ID | ARM_FVP_GIC_BASE_MMAP) -#define ARM_FVP_FOUNDATION_SYS_ID (ARM_FVP_FOUNDATION_BOARD_SYS_ID | ARM_FVP_GIC_BASE_MMAP) - -#endif /* VEXPRESSMOTHERBOARD_H_ */ diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/ArmVExpressLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/ArmVExpressLib.inf deleted file mode 100644 index 3f98cb22c54f..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/ArmVExpressLib.inf +++ /dev/null @@ -1,53 +0,0 @@ -#/* @file -# -# Copyright (c) 2011-2012, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = CTA15A7ArmVExpressLib - FILE_GUID = b98a6cb7-d472-4128-ad62-a7347f85ce13 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - EmbeddedPkg/EmbeddedPkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - IoLib - ArmLib - MemoryAllocationLib - SerialPortLib - -[Sources.common] - CTA15-A7.c - CTA15-A7Mem.c - CTA15-A7Helper.asm | RVCT - CTA15-A7Helper.S | GCC - -[FeaturePcd] - gEmbeddedTokenSpaceGuid.PcdCacheEnable - -[FixedPcd] - gArmPlatformTokenSpaceGuid.PcdCoreCount - - gArmTokenSpaceGuid.PcdSystemMemoryBase - gArmTokenSpaceGuid.PcdSystemMemorySize - gArmTokenSpaceGuid.PcdFvBaseAddress - -[Ppis] - gArmMpCoreInfoPpiGuid diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7.c deleted file mode 100644 index a6ddd1b792c9..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7.c +++ /dev/null @@ -1,182 +0,0 @@ -/** @file -* -* Copyright (c) 2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include - -#include - -#include - -ARM_CORE_INFO mVersatileExpressCTA15A7InfoTable[] = { - { - // Cluster 0, Core 0 - 0x0, 0x0, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR0, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR0, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR0, - (UINT64)0 - }, - { - // Cluster 0, Core 1 - 0x0, 0x1, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR1, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR1, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR1, - (UINT64)0 - }, -#ifndef ARM_BIGLITTLE_TC2 - { - // Cluster 0, Core 2 - 0x0, 0x2, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR2, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR2, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR2, - (UINT64)0 - }, - { - // Cluster 0, Core 3 - 0x0, 0x3, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR3, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR3, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A15_BX_ADDR3, - (UINT64)0 - }, -#endif - { - // Cluster 1, Core 0 - 0x1, 0x0, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR0, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR0, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR0, - (UINT64)0 - }, - { - // Cluster 1, Core 1 - 0x1, 0x1, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR1, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR1, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR1, - (UINT64)0 - }, - { - // Cluster 1, Core 2 - 0x1, 0x2, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR2, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR2, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR2, - (UINT64)0 - } -#ifndef ARM_BIGLITTLE_TC2 - ,{ - // Cluster 1, Core 3 - 0x1, 0x3, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR3, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR3, - (EFI_PHYSICAL_ADDRESS)ARM_CTA15A7_SPC_A7_BX_ADDR3, - (UINT64)0 - } -#endif -}; - -/** - Return the current Boot Mode - - This function returns the boot reason on the platform - - @return Return the current Boot Mode of the platform - -**/ -EFI_BOOT_MODE -ArmPlatformGetBootMode ( - VOID - ) -{ - if (MmioRead32(ARM_CTA15A7_SCC_SYSINFO) & ARM_CTA15A7_SCC_SYSINFO_UEFI_RESTORE_DEFAULT_NORFLASH) { - return BOOT_WITH_DEFAULT_SETTINGS; - } else { - return BOOT_WITH_FULL_CONFIGURATION; - } -} - -/** - Initialize controllers that must setup in the normal world - - This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim - in the PEI phase. - -**/ -RETURN_STATUS -ArmPlatformInitialize ( - IN UINTN MpId - ) -{ - if (!ArmPlatformIsPrimaryCore (MpId)) { - return RETURN_SUCCESS; - } - - // Nothing to do here - - return RETURN_SUCCESS; -} - -EFI_STATUS -PrePeiCoreGetMpCoreInfo ( - OUT UINTN *CoreCount, - OUT ARM_CORE_INFO **ArmCoreTable - ) -{ - // Only support one cluster - *CoreCount = sizeof(mVersatileExpressCTA15A7InfoTable) / sizeof(ARM_CORE_INFO); - *ArmCoreTable = mVersatileExpressCTA15A7InfoTable; - return EFI_SUCCESS; -} - -ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo }; - -EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { - { - EFI_PEI_PPI_DESCRIPTOR_PPI, - &gArmMpCoreInfoPpiGuid, - &mMpCoreInfoPpi - } -}; - -VOID -ArmPlatformGetPlatformPpiList ( - OUT UINTN *PpiListSize, - OUT EFI_PEI_PPI_DESCRIPTOR **PpiList - ) -{ - *PpiListSize = sizeof(gPlatformPpiTable); - *PpiList = gPlatformPpiTable; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.S b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.S deleted file mode 100644 index 3719a5ace604..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.S +++ /dev/null @@ -1,81 +0,0 @@ -// -// Copyright (c) 2012-2013, ARM Limited. All rights reserved. -// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// - -#include -#include - -#include - -ASM_FUNC(ArmPlatformPeiBootAction) - bx lr - -//UINTN -//ArmPlatformGetCorePosition ( -// IN UINTN MpId -// ); -ASM_FUNC(ArmPlatformGetCorePosition) - and r1, r0, #ARM_CORE_MASK - and r0, r0, #ARM_CLUSTER_MASK - add r0, r1, r0, LSR #7 - bx lr - -//UINTN -//ArmPlatformIsPrimaryCore ( -// IN UINTN MpId -// ); -ASM_FUNC(ArmPlatformIsPrimaryCore) - // Extract cpu_id and cluster_id from ARM_SCC_CFGREG48 - // with cpu_id[0:3] and cluster_id[4:7] - MOV32 (r1, ARM_CTA15A7_SCC_CFGREG48) - ldr r1, [r1] - lsr r1, #24 - - // Shift the SCC value to get the cluster ID at the offset #8 - lsl r2, r1, #4 - and r2, r2, #0xF00 - - // Keep only the cpu ID from the original SCC - and r1, r1, #0x0F - // Add the Cluster ID to the Cpu ID - orr r1, r1, r2 - - // Keep the Cluster ID and Core ID from the MPID - MOV32 (r2, ARM_CLUSTER_MASK | ARM_CORE_MASK) - and r0, r0, r2 - - // Compare mpid and boot cpu from ARM_SCC_CFGREG48 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - -//UINTN -//ArmPlatformGetPrimaryCoreMpId ( -// VOID -// ); -ASM_FUNC(ArmPlatformGetPrimaryCoreMpId) - // Extract cpu_id and cluster_id from ARM_SCC_CFGREG48 - // with cpu_id[0:3] and cluster_id[4:7] - MOV32 (r0, ARM_CTA15A7_SCC_CFGREG48) - ldr r0, [r0] - lsr r0, #24 - - // Shift the SCC value to get the cluster ID at the offset #8 - lsl r1, r0, #4 - and r1, r1, #0xF00 - - // Keep only the cpu ID from the original SCC - and r0, r0, #0x0F - // Add the Cluster ID to the Cpu ID - orr r0, r0, r1 - bx lr diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.asm b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.asm deleted file mode 100644 index c035843da078..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Helper.asm +++ /dev/null @@ -1,96 +0,0 @@ -// -// Copyright (c) 2012-2013, ARM Limited. All rights reserved. -// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// - -#include - -#include - - INCLUDE AsmMacroIoLib.inc - - EXPORT ArmPlatformPeiBootAction - EXPORT ArmPlatformGetCorePosition - EXPORT ArmPlatformIsPrimaryCore - EXPORT ArmPlatformGetPrimaryCoreMpId - - PRESERVE8 - AREA CTA15A7Helper, CODE, READONLY - -ArmPlatformPeiBootAction FUNCTION - bx lr - ENDFUNC - -//UINTN -//ArmPlatformGetCorePosition ( -// IN UINTN MpId -// ); -ArmPlatformGetCorePosition FUNCTION - and r1, r0, #ARM_CORE_MASK - and r0, r0, #ARM_CLUSTER_MASK - add r0, r1, r0, LSR #7 - bx lr - ENDFUNC - -//UINTN -//ArmPlatformIsPrimaryCore ( -// IN UINTN MpId -// ); -ArmPlatformIsPrimaryCore FUNCTION - // Extract cpu_id and cluster_id from ARM_SCC_CFGREG48 - // with cpu_id[0:3] and cluster_id[4:7] - mov32 r1, ARM_CTA15A7_SCC_CFGREG48 - ldr r1, [r1] - lsr r1, #24 - - // Shift the SCC value to get the cluster ID at the offset #8 - lsl r2, r1, #4 - and r2, r2, #0xF00 - - // Keep only the cpu ID from the original SCC - and r1, r1, #0x0F - // Add the Cluster ID to the Cpu ID - orr r1, r1, r2 - - // Keep the Cluster ID and Core ID from the MPID - mov32 r2, ARM_CLUSTER_MASK :OR: ARM_CORE_MASK - and r0, r0, r2 - - // Compare mpid and boot cpu from ARM_SCC_CFGREG48 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ENDFUNC - -//UINTN -//ArmPlatformGetPrimaryCoreMpId ( -// VOID -// ); -ArmPlatformGetPrimaryCoreMpId FUNCTION - // Extract cpu_id and cluster_id from ARM_SCC_CFGREG48 - // with cpu_id[0:3] and cluster_id[4:7] - mov32 r0, ARM_CTA15A7_SCC_CFGREG48 - ldr r0, [r0] - lsr r0, #24 - - // Shift the SCC value to get the cluster ID at the offset #8 - lsl r1, r0, #4 - and r1, r1, #0xF00 - - // Keep only the cpu ID from the original SCC - and r0, r0, #0x0F - // Add the Cluster ID to the Cpu ID - orr r0, r0, r1 - bx lr - ENDFUNC - - END diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Mem.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Mem.c deleted file mode 100644 index 4403cbacb881..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA15-A7/CTA15-A7Mem.c +++ /dev/null @@ -1,182 +0,0 @@ -/** @file -* -* Copyright (c) 2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include -#include - -#include - -#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 14 - -// DDR attributes -#define DDR_ATTRIBUTES_CACHED ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK -#define DDR_ATTRIBUTES_UNCACHED ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED - -/** - Return the Virtual Memory Map of your platform - - This Virtual Memory Map is used by MemoryInitPei Module to initialize the MMU on your platform. - - @param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR describing a Physical-to- - Virtual Memory mapping. This array must be ended by a zero-filled - entry - -**/ -VOID -ArmPlatformGetVirtualMemoryMap ( - IN ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap - ) -{ - ARM_MEMORY_REGION_ATTRIBUTES CacheAttributes; - UINTN Index = 0; - ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable; - - ASSERT (VirtualMemoryMap != NULL); - - VirtualMemoryTable = (ARM_MEMORY_REGION_DESCRIPTOR*)AllocatePages(EFI_SIZE_TO_PAGES (sizeof(ARM_MEMORY_REGION_DESCRIPTOR) * MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS)); - if (VirtualMemoryTable == NULL) { - return; - } - - if (FeaturePcdGet(PcdCacheEnable) == TRUE) { - CacheAttributes = DDR_ATTRIBUTES_CACHED; - } else { - CacheAttributes = DDR_ATTRIBUTES_UNCACHED; - } - -#ifdef ARM_BIGLITTLE_TC2 - // Secure NOR0 Flash - VirtualMemoryTable[Index].PhysicalBase = ARM_VE_SEC_NOR0_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SEC_NOR0_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SEC_NOR0_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - // Secure RAM - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SEC_RAM0_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SEC_RAM0_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SEC_RAM0_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; -#endif - - // SMB CS0 - NOR0 Flash - VirtualMemoryTable[Index].PhysicalBase = ARM_VE_SMB_NOR0_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_NOR0_BASE; - VirtualMemoryTable[Index].Length = SIZE_256KB * 255; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - // Environment Variables region - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_NOR0_BASE + (SIZE_256KB * 255); - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_NOR0_BASE + (SIZE_256KB * 255); - VirtualMemoryTable[Index].Length = SIZE_64KB * 4; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - - // SMB CS1 or CS4 - NOR1 Flash - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_NOR1_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_NOR1_BASE; - VirtualMemoryTable[Index].Length = SIZE_256KB * 255; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - // Environment Variables region - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_NOR1_BASE + (SIZE_256KB * 255); - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_NOR1_BASE + (SIZE_256KB * 255); - VirtualMemoryTable[Index].Length = SIZE_64KB * 4; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - - // SMB CS3 or CS1 - PSRAM - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_SRAM_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_SRAM_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SMB_SRAM_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // Motherboard peripherals - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_PERIPH_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_PERIPH_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SMB_PERIPH_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - -#ifdef ARM_BIGLITTLE_TC2 - // Non-secure ROM - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_TC2_NON_SECURE_ROM_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_TC2_NON_SECURE_ROM_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_TC2_NON_SECURE_ROM_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; -#endif - - // OnChip peripherals - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_ONCHIP_PERIPH_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_ONCHIP_PERIPH_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_ONCHIP_PERIPH_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - - // SCC Region - VirtualMemoryTable[++Index].PhysicalBase = ARM_CTA15A7_SCC_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_CTA15A7_SCC_BASE; - VirtualMemoryTable[Index].Length = SIZE_64KB; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - -#ifdef ARM_BIGLITTLE_TC2 - // TC2 OnChip non-secure SRAM - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_TC2_NON_SECURE_SRAM_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_TC2_NON_SECURE_SRAM_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_TC2_NON_SECURE_SRAM_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; -#endif - -#ifndef ARM_BIGLITTLE_TC2 - // Workaround for SRAM bug in RTSM - if (PcdGet64 (PcdSystemMemoryBase) != 0x80000000) { - VirtualMemoryTable[++Index].PhysicalBase = 0x80000000; - VirtualMemoryTable[Index].VirtualBase = 0x80000000; - VirtualMemoryTable[Index].Length = PcdGet64 (PcdSystemMemoryBase) - 0x80000000; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - } -#endif - - // DDR - VirtualMemoryTable[++Index].PhysicalBase = PcdGet64 (PcdSystemMemoryBase); - VirtualMemoryTable[Index].VirtualBase = PcdGet64 (PcdSystemMemoryBase); - VirtualMemoryTable[Index].Length = PcdGet64 (PcdSystemMemorySize); - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // Detect if it is a 1GB or 2GB Test Chip - // [16:19]: 0=1GB TC2, 1=2GB TC2 - if (MmioRead32(ARM_VE_SYS_PROCID0_REG) & (0xF << 16)) { - DEBUG((EFI_D_ERROR,"Info: 2GB Test Chip 2 detected.\n")); - BuildResourceDescriptorHob ( - EFI_RESOURCE_SYSTEM_MEMORY, - EFI_RESOURCE_ATTRIBUTE_PRESENT | EFI_RESOURCE_ATTRIBUTE_INITIALIZED | EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_TESTED, - PcdGet64 (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize), - SIZE_1GB - ); - - // Map the additional 1GB into the MMU - VirtualMemoryTable[++Index].PhysicalBase = PcdGet64 (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize); - VirtualMemoryTable[Index].VirtualBase = PcdGet64 (PcdSystemMemoryBase) + PcdGet64 (PcdSystemMemorySize); - VirtualMemoryTable[Index].Length = SIZE_1GB; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - } - - // End of Table - VirtualMemoryTable[++Index].PhysicalBase = 0; - VirtualMemoryTable[Index].VirtualBase = 0; - VirtualMemoryTable[Index].Length = 0; - VirtualMemoryTable[Index].Attributes = (ARM_MEMORY_REGION_ATTRIBUTES)0; - - ASSERT((Index + 1) <= MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS); - - *VirtualMemoryMap = VirtualMemoryTable; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/AArch64/RTSMHelper.S b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/AArch64/RTSMHelper.S deleted file mode 100644 index db6d83c3cce9..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/AArch64/RTSMHelper.S +++ /dev/null @@ -1,61 +0,0 @@ -# -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# - -#include -#include - -ASM_FUNC(ArmPlatformPeiBootAction) - ret - -//UINTN -//ArmPlatformGetPrimaryCoreMpId ( -// VOID -// ); -ASM_FUNC(ArmPlatformGetPrimaryCoreMpId) - MOV32 (w0, FixedPcdGet32 (PcdArmPrimaryCore)) - ret - -# IN None -# OUT x0 = number of cores present in the system -ASM_FUNC(ArmGetCpuCountPerCluster) - MOV32 (w0, FixedPcdGet32 (PcdCoreCount)) - ret - -//UINTN -//ArmPlatformIsPrimaryCore ( -// IN UINTN MpId -// ); -ASM_FUNC(ArmPlatformIsPrimaryCore) - MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCoreMask)) - and x0, x0, x1 - MOV32 (w1, FixedPcdGet32 (PcdArmPrimaryCore)) - cmp w0, w1 - b.ne 1f - mov x0, #1 - ret -1: - mov x0, #0 - ret - -//UINTN -//ArmPlatformGetCorePosition ( -// IN UINTN MpId -// ); -// With this function: CorePos = (ClusterId * 4) + CoreId -ASM_FUNC(ArmPlatformGetCorePosition) - and x1, x0, #ARM_CORE_MASK - and x0, x0, #ARM_CLUSTER_MASK - add x0, x1, x0, LSR #6 - ret - -ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S deleted file mode 100644 index 35743b08dc88..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.S +++ /dev/null @@ -1,97 +0,0 @@ -# -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# - -#include -#include - -#include - -ASM_FUNC(ArmPlatformPeiBootAction) - bx lr - -# IN None -# OUT r0 = SCU Base Address -ASM_FUNC(ArmGetScuBaseAddress) - # Read Configuration Base Address Register. ArmCBar cannot be called to get - # the Configuration BAR as a stack is not necessary setup. The SCU is at the - # offset 0x0000 from the Private Memory Region. - mrc p15, 4, r0, c15, c0, 0 - bx lr - -//UINTN -//ArmPlatformGetPrimaryCoreMpId ( -// VOID -// ); -ASM_FUNC(ArmPlatformGetPrimaryCoreMpId) - MOV32 (r0, FixedPcdGet32 (PcdArmPrimaryCore)) - bx lr - -# IN None -# OUT r0 = number of cores present in the system -ASM_FUNC(ArmGetCpuCountPerCluster) - stmfd SP!, {r1-r2} - - # Read CP15 MIDR - mrc p15, 0, r1, c0, c0, 0 - - # Check if the CPU is A15 - mov r1, r1, LSR #4 - MOV32 (r0, ARM_CPU_TYPE_MASK) - and r1, r1, r0 - - MOV32 (r0, ARM_CPU_TYPE_A15) - cmp r1, r0 - beq _Read_cp15_reg - -_CPU_is_not_A15: - mov r2, lr @ Save link register - bl ArmGetScuBaseAddress @ Read SCU Base Address - mov lr, r2 @ Restore link register val - ldr r0, [r0, #A9_SCU_CONFIG_OFFSET] @ Read SCU Config reg to get CPU count - b _Return - -_Read_cp15_reg: - mrc p15, 1, r0, c9, c0, 2 @ Read C9 register of CP15 to get CPU count - lsr r0, #24 - -_Return: - and r0, r0, #3 - # Add '1' to the number of CPU on the Cluster - add r0, r0, #1 - ldmfd SP!, {r1-r2} - bx lr - -//UINTN -//ArmPlatformIsPrimaryCore ( -// IN UINTN MpId -// ); -ASM_FUNC(ArmPlatformIsPrimaryCore) - MOV32 (r1, FixedPcdGet32 (PcdArmPrimaryCoreMask)) - and r0, r0, r1 - MOV32 (r1, FixedPcdGet32 (PcdArmPrimaryCore)) - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - -//UINTN -//ArmPlatformGetCorePosition ( -// IN UINTN MpId -// ); -ASM_FUNC(ArmPlatformGetCorePosition) - and r1, r0, #ARM_CORE_MASK - and r0, r0, #ARM_CLUSTER_MASK - add r0, r1, r0, LSR #7 - bx lr - -ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm deleted file mode 100644 index 66068e6595db..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/Arm/RTSMHelper.asm +++ /dev/null @@ -1,118 +0,0 @@ -// -// Copyright (c) 2011-2013, ARM Limited. All rights reserved. -// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// - -#include -#include -#include - -#include - -#include - - INCLUDE AsmMacroIoLib.inc - - EXPORT ArmPlatformPeiBootAction - EXPORT ArmGetCpuCountPerCluster - EXPORT ArmPlatformIsPrimaryCore - EXPORT ArmPlatformGetPrimaryCoreMpId - EXPORT ArmPlatformGetCorePosition - - AREA RTSMHelper, CODE, READONLY - -ArmPlatformPeiBootAction FUNCTION - bx lr - ENDFUNC - -// IN None -// OUT r0 = SCU Base Address -ArmGetScuBaseAddress FUNCTION - // Read Configuration Base Address Register. ArmCBar cannot be called to get - // the Configuration BAR as a stack is not necessary setup. The SCU is at the - // offset 0x0000 from the Private Memory Region. - mrc p15, 4, r0, c15, c0, 0 - bx lr - ENDFUNC - -//UINTN -//ArmPlatformGetPrimaryCoreMpId ( -// VOID -// ); -ArmPlatformGetPrimaryCoreMpId FUNCTION - mov32 r0, FixedPcdGet32(PcdArmPrimaryCore) - bx lr - ENDFUNC - -// IN None -// OUT r0 = number of cores present in the system -ArmGetCpuCountPerCluster FUNCTION - stmfd SP!, {r1-r2} - - // Read CP15 MIDR - mrc p15, 0, r1, c0, c0, 0 - - // Check if the CPU is A15 - mov r1, r1, LSR #4 - mov r0, #ARM_CPU_TYPE_MASK - and r1, r1, r0 - - mov r0, #ARM_CPU_TYPE_A15 - cmp r1, r0 - beq _Read_cp15_reg - -_CPU_is_not_A15 - mov r2, lr ; Save link register - bl ArmGetScuBaseAddress ; Read SCU Base Address - mov lr, r2 ; Restore link register val - ldr r0, [r0, #A9_SCU_CONFIG_OFFSET] ; Read SCU Config reg to get CPU count - b _Return - -_Read_cp15_reg - mrc p15, 1, r0, c9, c0, 2 ; Read C9 register of CP15 to get CPU count - lsr r0, #24 - - -_Return - and r0, r0, #3 - // Add '1' to the number of CPU on the Cluster - add r0, r0, #1 - ldmfd SP!, {r1-r2} - bx lr - ENDFUNC - -//UINTN -//ArmPlatformIsPrimaryCore ( -// IN UINTN MpId -// ); -ArmPlatformIsPrimaryCore FUNCTION - mov32 r1, FixedPcdGet32(PcdArmPrimaryCoreMask) - and r0, r0, r1 - mov32 r1, FixedPcdGet32(PcdArmPrimaryCore) - ldr r1, [r1] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - ENDFUNC - -//UINTN -//ArmPlatformGetCorePosition ( -// IN UINTN MpId -// ); -ArmPlatformGetCorePosition FUNCTION - and r1, r0, #ARM_CORE_MASK - and r0, r0, #ARM_CLUSTER_MASK - add r0, r1, r0, LSR #7 - bx lr - ENDFUNC - - END diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf deleted file mode 100644 index 9b16f7f0c473..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLib.inf +++ /dev/null @@ -1,62 +0,0 @@ -#/* @file -# Copyright (c) 2011-2014, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = RTSMArmVExpressLib - FILE_GUID = b98a6cb7-d472-4128-ad62-a7347f85ce13 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - EmbeddedPkg/EmbeddedPkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - IoLib - ArmLib - MemoryAllocationLib - SerialPortLib - HobLib - -[Sources.common] - RTSM.c - RTSMMem.c - -[Sources.ARM] - Arm/RTSMHelper.asm | RVCT - Arm/RTSMHelper.S | GCC - -[Sources.AARCH64] - AArch64/RTSMHelper.S - -[FeaturePcd] - gEmbeddedTokenSpaceGuid.PcdCacheEnable - gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping - -[FixedPcd] - gArmTokenSpaceGuid.PcdSystemMemoryBase - gArmTokenSpaceGuid.PcdSystemMemorySize - gArmTokenSpaceGuid.PcdFvBaseAddress - - gArmTokenSpaceGuid.PcdArmPrimaryCoreMask - gArmTokenSpaceGuid.PcdArmPrimaryCore - - gArmPlatformTokenSpaceGuid.PcdCoreCount - -[Ppis] - gArmMpCoreInfoPpiGuid diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf deleted file mode 100644 index e659f44ad232..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/ArmVExpressLibSec.inf +++ /dev/null @@ -1,59 +0,0 @@ -#/* @file -# Copyright (c) 2011-2012, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = RTSMArmVExpressLibSec - FILE_GUID = a79eed97-4b98-4974-9690-37b32d6a5b56 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - EmbeddedPkg/EmbeddedPkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - IoLib - ArmLib - SerialPortLib - -[Sources.common] - RTSM.c - -[Sources.ARM] - Arm/RTSMHelper.asm | RVCT - Arm/RTSMHelper.S | GCC - -[Sources.AARCH64] - AArch64/RTSMHelper.S - -[FeaturePcd] - gEmbeddedTokenSpaceGuid.PcdCacheEnable - gArmPlatformTokenSpaceGuid.PcdNorFlashRemapping - -[FixedPcd] - gArmTokenSpaceGuid.PcdSystemMemoryBase - gArmTokenSpaceGuid.PcdSystemMemorySize - gArmTokenSpaceGuid.PcdFvBaseAddress - - gArmTokenSpaceGuid.PcdArmPrimaryCoreMask - gArmTokenSpaceGuid.PcdArmPrimaryCore - - gArmPlatformTokenSpaceGuid.PcdCoreCount - -[Ppis] - gArmMpCoreInfoPpiGuid diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSM.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSM.c deleted file mode 100644 index 7760e8252125..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSM.c +++ /dev/null @@ -1,195 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2013, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include - -#include - -#include - -/** - Return the core per cluster. The method may differ per core type - - This function might be called from assembler before any stack is set. - - @return Return the core count per cluster - -**/ -UINTN -ArmGetCpuCountPerCluster ( - VOID - ); - -ARM_CORE_INFO mVersatileExpressMpCoreInfoTable[] = { - { - // Cluster 0, Core 0 - 0x0, 0x0, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 0, Core 1 - 0x0, 0x1, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 0, Core 2 - 0x0, 0x2, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 0, Core 3 - 0x0, 0x3, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 1, Core 0 - 0x1, 0x0, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 1, Core 1 - 0x1, 0x1, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 1, Core 2 - 0x1, 0x2, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - }, - { - // Cluster 1, Core 3 - 0x1, 0x3, - - // MP Core MailBox Set/Get/Clear Addresses and Clear Value - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_SET_REG, - (EFI_PHYSICAL_ADDRESS)ARM_VE_SYS_FLAGS_CLR_REG, - (UINT64)0xFFFFFFFF - } -}; - -/** - Return the current Boot Mode - - This function returns the boot reason on the platform - - @return Return the current Boot Mode of the platform - -**/ -EFI_BOOT_MODE -ArmPlatformGetBootMode ( - VOID - ) -{ - return BOOT_WITH_FULL_CONFIGURATION; -} - -/** - Initialize controllers that must setup in the normal world - - This function is called by the ArmPlatformPkg/Pei or ArmPlatformPkg/Pei/PlatformPeim - in the PEI phase. - -**/ -RETURN_STATUS -ArmPlatformInitialize ( - IN UINTN MpId - ) -{ - if (!ArmPlatformIsPrimaryCore (MpId)) { - return RETURN_SUCCESS; - } - - // Disable memory remapping and return to normal mapping - MmioOr32 (SP810_CTRL_BASE, BIT8); - - return RETURN_SUCCESS; -} - -EFI_STATUS -PrePeiCoreGetMpCoreInfo ( - OUT UINTN *CoreCount, - OUT ARM_CORE_INFO **ArmCoreTable - ) -{ - UINT32 ProcType; - - ProcType = MmioRead32 (ARM_VE_SYS_PROCID0_REG) & ARM_VE_SYS_PROC_ID_MASK; - if ((ProcType == ARM_VE_SYS_PROC_ID_CORTEX_A9) || (ProcType == ARM_VE_SYS_PROC_ID_CORTEX_A15)) { - // Only support one cluster on all but ARMv8 FVP platform. FVP still uses CortexA9 ID. - *CoreCount = ArmGetCpuCountPerCluster (); - *ArmCoreTable = mVersatileExpressMpCoreInfoTable; - return EFI_SUCCESS; - } else { - return EFI_UNSUPPORTED; - } -} - -ARM_MP_CORE_INFO_PPI mMpCoreInfoPpi = { PrePeiCoreGetMpCoreInfo }; - -EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { - { - EFI_PEI_PPI_DESCRIPTOR_PPI, - &gArmMpCoreInfoPpiGuid, - &mMpCoreInfoPpi - } -}; - -VOID -ArmPlatformGetPlatformPpiList ( - OUT UINTN *PpiListSize, - OUT EFI_PEI_PPI_DESCRIPTOR **PpiList - ) -{ - *PpiListSize = sizeof(gPlatformPpiTable); - *PpiList = gPlatformPpiTable; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c deleted file mode 100644 index 6379e81751fc..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c +++ /dev/null @@ -1,161 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2016, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include -#include -#include - -// Number of Virtual Memory Map Descriptors -#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS 9 - -// DDR attributes -#define DDR_ATTRIBUTES_CACHED ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK -#define DDR_ATTRIBUTES_UNCACHED ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED - -/** - Return the Virtual Memory Map of your platform - - This Virtual Memory Map is used by MemoryInitPei Module to initialize - the MMU on your platform. - - @param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR - describing a Physical-to-Virtual Memory - mapping. This array must be ended by a - zero-filled entry. - -**/ -VOID -ArmPlatformGetVirtualMemoryMap ( - IN ARM_MEMORY_REGION_DESCRIPTOR** VirtualMemoryMap - ) -{ - ARM_MEMORY_REGION_ATTRIBUTES CacheAttributes; - EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttributes; - UINTN Index = 0; - ARM_MEMORY_REGION_DESCRIPTOR *VirtualMemoryTable; - UINT32 SysId; - BOOLEAN HasSparseMemory; - EFI_VIRTUAL_ADDRESS SparseMemoryBase; - UINT64 SparseMemorySize; - - ASSERT (VirtualMemoryMap != NULL); - - // The FVP model has Sparse memory - SysId = MmioRead32 (ARM_VE_SYS_ID_REG); - if (SysId != ARM_RTSM_SYS_ID) { - HasSparseMemory = TRUE; - - ResourceAttributes = - EFI_RESOURCE_ATTRIBUTE_PRESENT | - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_TESTED; - - // Declared the additional DRAM from 2GB to 4GB - SparseMemoryBase = 0x0880000000; - SparseMemorySize = SIZE_2GB; - - BuildResourceDescriptorHob ( - EFI_RESOURCE_SYSTEM_MEMORY, - ResourceAttributes, - SparseMemoryBase, - SparseMemorySize); - } else { - HasSparseMemory = FALSE; - SparseMemoryBase = 0x0; - SparseMemorySize = 0x0; - } - - VirtualMemoryTable = (ARM_MEMORY_REGION_DESCRIPTOR*) - AllocatePages (EFI_SIZE_TO_PAGES (sizeof(ARM_MEMORY_REGION_DESCRIPTOR) - * MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS)); - if (VirtualMemoryTable == NULL) { - return; - } - - CacheAttributes = (FeaturePcdGet(PcdCacheEnable)) - ? DDR_ATTRIBUTES_CACHED - : DDR_ATTRIBUTES_UNCACHED; - - // ReMap (Either NOR Flash or DRAM) - VirtualMemoryTable[Index].PhysicalBase = ARM_VE_REMAP_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_REMAP_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_REMAP_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // DDR - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_DRAM_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_DRAM_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_DRAM_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // CPU peripherals. TRM. Manual says not all of them are implemented. - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_ON_CHIP_PERIPH_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_ON_CHIP_PERIPH_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_ON_CHIP_PERIPH_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - - // SMB CS0-CS1 - NOR Flash 1 & 2 - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_NOR0_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_NOR0_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SMB_NOR0_SZ + ARM_VE_SMB_NOR1_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // SMB CS2 - SRAM - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_SRAM_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_SRAM_BASE; - VirtualMemoryTable[Index].Length = ARM_VE_SMB_SRAM_SZ; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - - // Peripheral CS2 and CS3 - VirtualMemoryTable[++Index].PhysicalBase = ARM_VE_SMB_PERIPH_BASE; - VirtualMemoryTable[Index].VirtualBase = ARM_VE_SMB_PERIPH_BASE; - VirtualMemoryTable[Index].Length = 2 * ARM_VE_SMB_PERIPH_SZ; - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; - - // VRAM - VirtualMemoryTable[++Index].PhysicalBase = PL111_CLCD_VRAM_MOTHERBOARD_BASE; - VirtualMemoryTable[Index].VirtualBase = PL111_CLCD_VRAM_MOTHERBOARD_BASE; - VirtualMemoryTable[Index].Length = PL111_CLCD_VRAM_MOTHERBOARD_SIZE; - // - // Map the VRAM region as Normal Non-Cacheable memory and not device memory, - // so that we can use the accelerated string routines that may use unaligned - // accesses or DC ZVA instructions. The enum identifier is slightly awkward - // here, but it maps to a memory type that allows buffering and reordering. - // - VirtualMemoryTable[Index].Attributes = ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED; - - // Map sparse memory region if present - if (HasSparseMemory) { - VirtualMemoryTable[++Index].PhysicalBase = SparseMemoryBase; - VirtualMemoryTable[Index].VirtualBase = SparseMemoryBase; - VirtualMemoryTable[Index].Length = SparseMemorySize; - VirtualMemoryTable[Index].Attributes = CacheAttributes; - } - - // End of Table - VirtualMemoryTable[++Index].PhysicalBase = 0; - VirtualMemoryTable[Index].VirtualBase = 0; - VirtualMemoryTable[Index].Length = 0; - VirtualMemoryTable[Index].Attributes = (ARM_MEMORY_REGION_ATTRIBUTES)0; - - ASSERT (Index < MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS); - *VirtualMemoryMap = VirtualMemoryTable; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfig.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfig.c deleted file mode 100644 index 6dfbacd11762..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfig.c +++ /dev/null @@ -1,273 +0,0 @@ -/** @file ArmVExpressSysConfig.c - - Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include - -#include -#include - -// -// SYS_CFGCTRL Bits -// -#define SYS_CFGCTRL_START BIT31 -#define SYS_CFGCTRL_READ (0 << 30) -#define SYS_CFGCTRL_WRITE (1 << 30) -#define SYS_CFGCTRL_FUNCTION(fun) (((fun ) & 0x3F) << 20) -#define SYS_CFGCTRL_SITE(site) (((site) & 0x3) << 16) -#define SYS_CFGCTRL_POSITION(pos) (((pos ) & 0xF) << 12) -#define SYS_CFGCTRL_DEVICE(dev) ((dev ) & 0xFFF) - -// -// SYS_CFGSTAT Bits -// -#define SYS_CFGSTAT_ERROR BIT1 -#define SYS_CFGSTAT_COMPLETE BIT0 - -/**************************************************************************** - * - * This file makes it easier to access the System Configuration Registers - * in the ARM Versatile Express motherboard. - * - ****************************************************************************/ - -RETURN_STATUS -ArmPlatformSysConfigInitialize ( - VOID - ) -{ - return RETURN_SUCCESS; -} - -/*************************************** - * GENERAL FUNCTION: AccessSysCfgRegister - * Interacts with - * SYS_CFGSTAT - * SYS_CFGDATA - * SYS_CFGCTRL - * for setting and for reading out values - ***************************************/ - -RETURN_STATUS -AccessSysCfgRegister ( - IN UINT32 ReadWrite, - IN UINT32 Function, - IN UINT32 Site, - IN UINT32 Position, - IN UINT32 Device, - IN OUT UINT32* Data - ) -{ - UINT32 SysCfgCtrl; - - // Clear the COMPLETE bit - MmioAnd32(ARM_VE_SYS_CFGSTAT_REG, ~SYS_CFGSTAT_COMPLETE); - - // If writing, then set the data value - if(ReadWrite == SYS_CFGCTRL_WRITE) { - MmioWrite32(ARM_VE_SYS_CFGDATA_REG, *Data); - } - - // Set the control value - SysCfgCtrl = SYS_CFGCTRL_START | ReadWrite | SYS_CFGCTRL_FUNCTION(Function) | SYS_CFGCTRL_SITE(Site) | - SYS_CFGCTRL_POSITION(Position) | SYS_CFGCTRL_DEVICE(Device); - MmioWrite32(ARM_VE_SYS_CFGCTRL_REG, SysCfgCtrl); - - // Wait until the COMPLETE bit is set - while ((MmioRead32(ARM_VE_SYS_CFGSTAT_REG) & SYS_CFGSTAT_COMPLETE) == 0); - - // Check for errors - if(MmioRead32(ARM_VE_SYS_CFGSTAT_REG) & SYS_CFGSTAT_ERROR) { - return RETURN_DEVICE_ERROR; - } - - // If reading then get the data value - if(ReadWrite == SYS_CFGCTRL_READ) { - *Data = MmioRead32(ARM_VE_SYS_CFGDATA_REG); - } - - return RETURN_SUCCESS; -} - -RETURN_STATUS -ArmPlatformSysConfigGet ( - IN SYS_CONFIG_FUNCTION Function, - OUT UINT32* Value - ) -{ - UINT32 Site; - UINT32 Position; - UINT32 Device; - - Position = 0; - Device = 0; - - // Intercept some functions - switch(Function) { - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = *Value; - break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RESET: - case SYS_CFG_SCC: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_RTC: - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_READ, Function, Site, Position, Device, Value); -} - -RETURN_STATUS -ArmPlatformSysConfigGetValues ( - IN SYS_CONFIG_FUNCTION Function, - IN UINTN Size, - OUT UINT32* Values - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigSet ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Value - ) -{ - UINT32 Site; - UINT32 Position; - UINT32 Device; - - Position = 0; - Device = 0; - - // Intercept some functions - switch(Function) { - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = Value; - break; - - case SYS_CFG_RESET: - case SYS_CFG_SCC: - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RTC: - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_WRITE, Function, Site, Position, Device, &Value); -} - -RETURN_STATUS -ArmPlatformSysConfigSetDevice ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Device, - IN UINT32 Value - ) -{ - UINT32 Site; - UINT32 Position; - - Position = 0; - - // Intercept some functions - switch(Function) { - case SYS_CFG_SCC: -#ifdef ARM_VE_SCC_BASE - MmioWrite32 ((ARM_VE_SCC_BASE + (Device * 4)),Value); - return RETURN_SUCCESS; -#else - // There is no System Configuration Controller on the Model - return RETURN_UNSUPPORTED; -#endif - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = Value; - break; - - case SYS_CFG_RTC: - return RETURN_UNSUPPORTED; - //break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RESET: - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_WRITE, Function, Site, Position, Device, &Value); -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf deleted file mode 100644 index b89455a421c3..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf +++ /dev/null @@ -1,35 +0,0 @@ -#/** @file -# -# Component description file for ArmVExpressSysConfigLib module -# -# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVExpressSysConfigLib - FILE_GUID = a05b5cc0-82d2-11e0-82cb-0002a5d5c51b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformSysConfigLib|SEC DXE_DRIVER - -[Sources.common] - ArmVExpressSysConfig.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - BaseLib - IoLib diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c deleted file mode 100644 index 1f915e3b0225..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c +++ /dev/null @@ -1,283 +0,0 @@ -/** @file ArmVExpressSysConfig.c - - Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include - -#include -#include - -#include -#include - -// -// SYS_CFGCTRL Bits -// -#define SYS_CFGCTRL_START BIT31 -#define SYS_CFGCTRL_READ (0 << 30) -#define SYS_CFGCTRL_WRITE (1 << 30) -#define SYS_CFGCTRL_FUNCTION(fun) (((fun ) & 0x3F) << 20) -#define SYS_CFGCTRL_SITE(site) (((site) & 0x3) << 16) -#define SYS_CFGCTRL_POSITION(pos) (((pos ) & 0xF) << 12) -#define SYS_CFGCTRL_DEVICE(dev) ((dev ) & 0xFFF) - -// -// SYS_CFGSTAT Bits -// -#define SYS_CFGSTAT_ERROR BIT1 -#define SYS_CFGSTAT_COMPLETE BIT0 - -/**************************************************************************** - * - * This file makes it easier to access the System Configuration Registers - * in the ARM Versatile Express motherboard. - * - ****************************************************************************/ - -RETURN_STATUS -ArmPlatformSysConfigInitialize ( - VOID - ) -{ - return RETURN_SUCCESS; -} - -/*************************************** - * GENERAL FUNCTION: AccessSysCfgRegister - * Interacts with - * SYS_CFGSTAT - * SYS_CFGDATA - * SYS_CFGCTRL - * for setting and for reading out values - ***************************************/ - -RETURN_STATUS -AccessSysCfgRegister ( - IN UINT32 ReadWrite, - IN UINT32 Function, - IN UINT32 Site, - IN UINT32 Position, - IN UINT32 Device, - IN OUT UINT32* Data - ) -{ - UINT32 SysCfgCtrl; - - if (EfiAtRuntime ()) { - return RETURN_UNSUPPORTED; - } - - // Clear the COMPLETE bit - MmioAnd32(ARM_VE_SYS_CFGSTAT_REG, ~SYS_CFGSTAT_COMPLETE); - - // If writing, then set the data value - if(ReadWrite == SYS_CFGCTRL_WRITE) { - MmioWrite32(ARM_VE_SYS_CFGDATA_REG, *Data); - } - - // Set the control value - SysCfgCtrl = SYS_CFGCTRL_START | ReadWrite | SYS_CFGCTRL_FUNCTION(Function) | SYS_CFGCTRL_SITE(Site) | - SYS_CFGCTRL_POSITION(Position) | SYS_CFGCTRL_DEVICE(Device); - MmioWrite32(ARM_VE_SYS_CFGCTRL_REG, SysCfgCtrl); - - // Wait until the COMPLETE bit is set - while ((MmioRead32(ARM_VE_SYS_CFGSTAT_REG) & SYS_CFGSTAT_COMPLETE) == 0); - - // Check for errors - if(MmioRead32(ARM_VE_SYS_CFGSTAT_REG) & SYS_CFGSTAT_ERROR) { - return RETURN_DEVICE_ERROR; - } - - // If reading then get the data value - if(ReadWrite == SYS_CFGCTRL_READ) { - *Data = MmioRead32(ARM_VE_SYS_CFGDATA_REG); - } - - return RETURN_SUCCESS; -} - -RETURN_STATUS -ArmPlatformSysConfigGet ( - IN SYS_CONFIG_FUNCTION Function, - OUT UINT32* Value - ) -{ - UINT32 Site; - UINT32 Position; - UINT32 Device; - - Position = 0; - Device = 0; - - // Intercept some functions - switch(Function) { - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = *Value; - break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RESET: - case SYS_CFG_SCC: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_RTC: - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_READ, Function, Site, Position, Device, Value); -} - -RETURN_STATUS -ArmPlatformSysConfigGetValues ( - IN SYS_CONFIG_FUNCTION Function, - IN UINTN Size, - OUT UINT32* Values - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigSet ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Value - ) -{ - UINT32 Site; - UINT32 Position; - UINT32 Device; - - Position = 0; - Device = 0; - - // Intercept some functions - switch(Function) { - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = Value; - break; - - case SYS_CFG_RESET: - case SYS_CFG_SCC: - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RTC: - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_WRITE, Function, Site, Position, Device, &Value); -} - -RETURN_STATUS -ArmPlatformSysConfigSetDevice ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Device, - IN UINT32 Value - ) -{ - UINT32 Site; - UINT32 Position; - - Position = 0; - - // Intercept some functions - switch(Function) { - case SYS_CFG_SCC: -#ifdef ARM_VE_SCC_BASE - if (EfiAtRuntime ()) { - return RETURN_UNSUPPORTED; - } - MmioWrite32 ((ARM_VE_SCC_BASE + (Device * 4)),Value); - return RETURN_SUCCESS; -#else - // There is no System Configuration Controller on the Model - return RETURN_UNSUPPORTED; -#endif - - case SYS_CFG_OSC_SITE1: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_1_SITE; - break; - - case SYS_CFG_OSC_SITE2: - Function = SYS_CFG_OSC; - Site = ARM_VE_DAUGHTERBOARD_2_SITE; - break; - - case SYS_CFG_MUXFPGA: - Site = Value; - break; - - case SYS_CFG_RTC: - return RETURN_UNSUPPORTED; - //break; - - case SYS_CFG_OSC: - case SYS_CFG_VOLT: - case SYS_CFG_AMP: - case SYS_CFG_TEMP: - case SYS_CFG_RESET: - case SYS_CFG_SHUTDOWN: - case SYS_CFG_REBOOT: - case SYS_CFG_DVIMODE: - case SYS_CFG_POWER: - Site = ARM_VE_MOTHERBOARD_SITE; - break; - default: - return RETURN_UNSUPPORTED; - } - - return AccessSysCfgRegister (SYS_CFGCTRL_WRITE, Function, Site, Position, Device, &Value); -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf deleted file mode 100644 index 988250d930cb..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf +++ /dev/null @@ -1,37 +0,0 @@ -#/** @file -# -# Component description file for ArmVExpressSysConfigRuntimeLib module -# -# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
-# Copyright (c) 2015, Linaro Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVExpressSysConfigRuntimeLib - FILE_GUID = 6275b819-615c-4a36-814a-c1f330b4e5d9 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformSysConfigLib|DXE_RUNTIME_DRIVER - -[Sources.common] - ArmVExpressSysConfigRuntimeLib.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - BaseLib - IoLib - UefiRuntimeLib diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c b/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c deleted file mode 100644 index b1106ee19b98..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpress.c +++ /dev/null @@ -1,285 +0,0 @@ -/** - - Copyright (c) 2012, ARM Ltd. All rights reserved. - - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -typedef struct { - UINT32 Mode; - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - LCD_BPP Bpp; - UINT32 OscFreq; - - // These are used by HDLCD - UINT32 HSync; - UINT32 HBackPorch; - UINT32 HFrontPorch; - UINT32 VSync; - UINT32 VBackPorch; - UINT32 VFrontPorch; -} LCD_RESOLUTION; - - -LCD_RESOLUTION mResolutions[] = { - { // Mode 0 : VGA : 640 x 480 x 24 bpp - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, VGA_OSC_FREQUENCY, - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH, - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH - }, - { // Mode 1 : SVGA : 800 x 600 x 24 bpp - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, SVGA_OSC_FREQUENCY, - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH, - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH - }, - { // Mode 2 : XGA : 1024 x 768 x 24 bpp - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, XGA_OSC_FREQUENCY, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - }, - { // Mode 3 : SXGA : 1280 x 1024 x 24 bpp - SXGA, SXGA_H_RES_PIXELS, SXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (SXGA_OSC_FREQUENCY/2), - SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH, - SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH - }, - { // Mode 4 : UXGA : 1600 x 1200 x 24 bpp - UXGA, UXGA_H_RES_PIXELS, UXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (UXGA_OSC_FREQUENCY/2), - UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH, - UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH - }, - { // Mode 5 : HD : 1920 x 1080 x 24 bpp - HD, HD_H_RES_PIXELS, HD_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (HD_OSC_FREQUENCY/2), - HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH, - HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH - } -}; - -EFI_EDID_DISCOVERED_PROTOCOL mEdidDiscovered = { - 0, - NULL -}; - -EFI_EDID_ACTIVE_PROTOCOL mEdidActive = { - 0, - NULL -}; - -EFI_STATUS -LcdPlatformInitializeDisplay ( - IN EFI_HANDLE Handle - ) -{ - EFI_STATUS Status; - - // Set the FPGA multiplexer to select the video output from the motherboard or the daughterboard - Status = ArmPlatformSysConfigSet (SYS_CFG_MUXFPGA, ARM_VE_DAUGHTERBOARD_1_SITE); - if (EFI_ERROR(Status)) { - return Status; - } - - // Install the EDID Protocols - Status = gBS->InstallMultipleProtocolInterfaces ( - &Handle, - &gEfiEdidDiscoveredProtocolGuid, &mEdidDiscovered, - &gEfiEdidActiveProtocolGuid, &mEdidActive, - NULL - ); - - return Status; -} - -EFI_STATUS -LcdPlatformGetVram ( - OUT EFI_PHYSICAL_ADDRESS* VramBaseAddress, - OUT UINTN* VramSize - ) -{ - EFI_STATUS Status; - EFI_ALLOCATE_TYPE AllocationType; - - // Set the vram size - *VramSize = LCD_VRAM_SIZE; - - *VramBaseAddress = (EFI_PHYSICAL_ADDRESS)LCD_VRAM_CORE_TILE_BASE; - - // Allocate the VRAM from the DRAM so that nobody else uses it. - if (*VramBaseAddress == 0) { - AllocationType = AllocateAnyPages; - } else { - AllocationType = AllocateAddress; - } - Status = gBS->AllocatePages (AllocationType, EfiBootServicesData, EFI_SIZE_TO_PAGES(((UINTN)LCD_VRAM_SIZE)), VramBaseAddress); - if (EFI_ERROR(Status)) { - return Status; - } - - // Mark the VRAM as write-combining. The VRAM is inside the DRAM, which is cacheable. - Status = gDS->SetMemorySpaceAttributes (*VramBaseAddress, *VramSize, - EFI_MEMORY_WC); - ASSERT_EFI_ERROR(Status); - if (EFI_ERROR(Status)) { - gBS->FreePages (*VramBaseAddress, EFI_SIZE_TO_PAGES (*VramSize)); - return Status; - } - - return EFI_SUCCESS; -} - -UINT32 -LcdPlatformGetMaxMode ( - VOID - ) -{ - // - // The following line will report correctly the total number of graphics modes - // that could be supported by the graphics driver: - // - return (sizeof(mResolutions) / sizeof(LCD_RESOLUTION)); -} - -EFI_STATUS -LcdPlatformSetMode ( - IN UINT32 ModeNumber - ) -{ - EFI_STATUS Status; - - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - // Set the video mode oscillator - do { - Status = ArmPlatformSysConfigSetDevice (SYS_CFG_OSC_SITE1, PcdGet32(PcdHdLcdVideoModeOscId), mResolutions[ModeNumber].OscFreq); - } while (Status == EFI_TIMEOUT); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - - // Set the DVI into the new mode - do { - Status = ArmPlatformSysConfigSet (SYS_CFG_DVIMODE, mResolutions[ModeNumber].Mode); - } while (Status == EFI_TIMEOUT); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - - // Set the multiplexer - Status = ArmPlatformSysConfigSet (SYS_CFG_MUXFPGA, ARM_VE_DAUGHTERBOARD_1_SITE); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - - return Status; -} - -EFI_STATUS -LcdPlatformQueryMode ( - IN UINT32 ModeNumber, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - Info->Version = 0; - Info->HorizontalResolution = mResolutions[ModeNumber].HorizontalResolution; - Info->VerticalResolution = mResolutions[ModeNumber].VerticalResolution; - Info->PixelsPerScanLine = mResolutions[ModeNumber].HorizontalResolution; - - switch (mResolutions[ModeNumber].Bpp) { - case LCD_BITS_PER_PIXEL_24: - Info->PixelFormat = PixelRedGreenBlueReserved8BitPerColor; - Info->PixelInformation.RedMask = LCD_24BPP_RED_MASK; - Info->PixelInformation.GreenMask = LCD_24BPP_GREEN_MASK; - Info->PixelInformation.BlueMask = LCD_24BPP_BLUE_MASK; - Info->PixelInformation.ReservedMask = LCD_24BPP_RESERVED_MASK; - break; - - case LCD_BITS_PER_PIXEL_16_555: - case LCD_BITS_PER_PIXEL_16_565: - case LCD_BITS_PER_PIXEL_12_444: - case LCD_BITS_PER_PIXEL_8: - case LCD_BITS_PER_PIXEL_4: - case LCD_BITS_PER_PIXEL_2: - case LCD_BITS_PER_PIXEL_1: - default: - // These are not supported - ASSERT(FALSE); - break; - } - - return EFI_SUCCESS; -} - -EFI_STATUS -LcdPlatformGetTimings ( - IN UINT32 ModeNumber, - OUT UINT32* HRes, - OUT UINT32* HSync, - OUT UINT32* HBackPorch, - OUT UINT32* HFrontPorch, - OUT UINT32* VRes, - OUT UINT32* VSync, - OUT UINT32* VBackPorch, - OUT UINT32* VFrontPorch - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - *HRes = mResolutions[ModeNumber].HorizontalResolution; - *HSync = mResolutions[ModeNumber].HSync; - *HBackPorch = mResolutions[ModeNumber].HBackPorch; - *HFrontPorch = mResolutions[ModeNumber].HFrontPorch; - *VRes = mResolutions[ModeNumber].VerticalResolution; - *VSync = mResolutions[ModeNumber].VSync; - *VBackPorch = mResolutions[ModeNumber].VBackPorch; - *VFrontPorch = mResolutions[ModeNumber].VFrontPorch; - - return EFI_SUCCESS; -} - -EFI_STATUS -LcdPlatformGetBpp ( - IN UINT32 ModeNumber, - OUT LCD_BPP * Bpp - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - *Bpp = mResolutions[ModeNumber].Bpp; - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpressLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpressLib.inf deleted file mode 100644 index dff17e86fd3e..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/HdLcdArmVExpressLib/HdLcdArmVExpressLib.inf +++ /dev/null @@ -1,45 +0,0 @@ -#/** @file -# -# Component description file for HdLcdArmLib module -# -# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = HdLcdArmVExpress - FILE_GUID = 535a720e-06c0-4bb9-b563-452216abbed4 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = LcdPlatformLib - -[Sources.common] - -HdLcdArmVExpress.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec - -[LibraryClasses] - ArmPlatformSysConfigLib - BaseLib - DxeServicesTableLib - -[Protocols] - gEfiEdidDiscoveredProtocolGuid # Produced - gEfiEdidActiveProtocolGuid # Produced - -[Pcd] - gArmVExpressTokenSpaceGuid.PcdPL111LcdMaxMode - gArmVExpressTokenSpaceGuid.PcdHdLcdVideoModeOscId diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c b/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c deleted file mode 100644 index 3f3ceb3d2fa8..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpress.c +++ /dev/null @@ -1,370 +0,0 @@ -/** @file - - Copyright (c) 2011-2015, ARM Ltd. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -typedef struct { - UINT32 Mode; - UINT32 HorizontalResolution; - UINT32 VerticalResolution; - LCD_BPP Bpp; - UINT32 OscFreq; - - UINT32 HSync; - UINT32 HBackPorch; - UINT32 HFrontPorch; - UINT32 VSync; - UINT32 VBackPorch; - UINT32 VFrontPorch; -} LCD_RESOLUTION; - - -LCD_RESOLUTION mResolutions[] = { - { // Mode 0 : VGA : 640 x 480 x 24 bpp - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, VGA_OSC_FREQUENCY, - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH, - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH - }, - { // Mode 1 : SVGA : 800 x 600 x 24 bpp - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, SVGA_OSC_FREQUENCY, - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH, - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH - }, - { // Mode 2 : XGA : 1024 x 768 x 24 bpp - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, XGA_OSC_FREQUENCY, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - }, - { // Mode 3 : SXGA : 1280 x 1024 x 24 bpp - SXGA, SXGA_H_RES_PIXELS, SXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (SXGA_OSC_FREQUENCY/2), - SXGA_H_SYNC, SXGA_H_BACK_PORCH, SXGA_H_FRONT_PORCH, - SXGA_V_SYNC, SXGA_V_BACK_PORCH, SXGA_V_FRONT_PORCH - }, - { // Mode 4 : UXGA : 1600 x 1200 x 24 bpp - UXGA, UXGA_H_RES_PIXELS, UXGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (UXGA_OSC_FREQUENCY/2), - UXGA_H_SYNC, UXGA_H_BACK_PORCH, UXGA_H_FRONT_PORCH, - UXGA_V_SYNC, UXGA_V_BACK_PORCH, UXGA_V_FRONT_PORCH - }, - { // Mode 5 : HD : 1920 x 1080 x 24 bpp - HD, HD_H_RES_PIXELS, HD_V_RES_PIXELS, LCD_BITS_PER_PIXEL_24, (HD_OSC_FREQUENCY/2), - HD_H_SYNC, HD_H_BACK_PORCH, HD_H_FRONT_PORCH, - HD_V_SYNC, HD_V_BACK_PORCH, HD_V_FRONT_PORCH - }, - { // Mode 6 : VGA : 640 x 480 x 16 bpp (565 Mode) - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565, VGA_OSC_FREQUENCY, - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH, - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH - }, - { // Mode 7 : SVGA : 800 x 600 x 16 bpp (565 Mode) - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565, SVGA_OSC_FREQUENCY, - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH, - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH - }, - { // Mode 8 : XGA : 1024 x 768 x 16 bpp (565 Mode) - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_565, XGA_OSC_FREQUENCY, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - }, - { // Mode 9 : VGA : 640 x 480 x 15 bpp - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555, VGA_OSC_FREQUENCY, - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH, - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH - }, - { // Mode 10 : SVGA : 800 x 600 x 15 bpp - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555, SVGA_OSC_FREQUENCY, - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH, - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH - }, - { // Mode 11 : XGA : 1024 x 768 x 15 bpp - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555, XGA_OSC_FREQUENCY, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - }, - { // Mode 12 : XGA : 1024 x 768 x 15 bpp - All the timing info is derived from Linux Kernel Driver Settings - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_16_555, 63500000, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - }, - { // Mode 13 : VGA : 640 x 480 x 12 bpp (444 Mode) - VGA, VGA_H_RES_PIXELS, VGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444, VGA_OSC_FREQUENCY, - VGA_H_SYNC, VGA_H_BACK_PORCH, VGA_H_FRONT_PORCH, - VGA_V_SYNC, VGA_V_BACK_PORCH, VGA_V_FRONT_PORCH - }, - { // Mode 14 : SVGA : 800 x 600 x 12 bpp (444 Mode) - SVGA, SVGA_H_RES_PIXELS, SVGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444, SVGA_OSC_FREQUENCY, - SVGA_H_SYNC, SVGA_H_BACK_PORCH, SVGA_H_FRONT_PORCH, - SVGA_V_SYNC, SVGA_V_BACK_PORCH, SVGA_V_FRONT_PORCH - }, - { // Mode 15 : XGA : 1024 x 768 x 12 bpp (444 Mode) - XGA, XGA_H_RES_PIXELS, XGA_V_RES_PIXELS, LCD_BITS_PER_PIXEL_12_444, XGA_OSC_FREQUENCY, - XGA_H_SYNC, XGA_H_BACK_PORCH, XGA_H_FRONT_PORCH, - XGA_V_SYNC, XGA_V_BACK_PORCH, XGA_V_FRONT_PORCH - } -}; - -EFI_EDID_DISCOVERED_PROTOCOL mEdidDiscovered = { - 0, - NULL -}; - -EFI_EDID_ACTIVE_PROTOCOL mEdidActive = { - 0, - NULL -}; - - -EFI_STATUS -LcdPlatformInitializeDisplay ( - IN EFI_HANDLE Handle - ) -{ - EFI_STATUS Status; - - // Set the FPGA multiplexer to select the video output from the motherboard or the daughterboard - Status = ArmPlatformSysConfigSet (SYS_CFG_MUXFPGA, PL111_CLCD_SITE); - if (!EFI_ERROR(Status)) { - // Install the EDID Protocols - Status = gBS->InstallMultipleProtocolInterfaces( - &Handle, - &gEfiEdidDiscoveredProtocolGuid, &mEdidDiscovered, - &gEfiEdidActiveProtocolGuid, &mEdidActive, - NULL - ); - } - - return Status; -} - -EFI_STATUS -LcdPlatformGetVram ( - OUT EFI_PHYSICAL_ADDRESS* VramBaseAddress, - OUT UINTN* VramSize - ) -{ - EFI_STATUS Status; - - Status = EFI_SUCCESS; - - // Is it on the motherboard or on the daughterboard? - switch(PL111_CLCD_SITE) { - - case ARM_VE_MOTHERBOARD_SITE: - *VramBaseAddress = (EFI_PHYSICAL_ADDRESS) PL111_CLCD_VRAM_MOTHERBOARD_BASE; - *VramSize = LCD_VRAM_SIZE; - break; - - case ARM_VE_DAUGHTERBOARD_1_SITE: - *VramBaseAddress = (EFI_PHYSICAL_ADDRESS) LCD_VRAM_CORE_TILE_BASE; - *VramSize = LCD_VRAM_SIZE; - - // Allocate the VRAM from the DRAM so that nobody else uses it. - Status = gBS->AllocatePages( AllocateAddress, EfiBootServicesData, EFI_SIZE_TO_PAGES(((UINTN)LCD_VRAM_SIZE)), VramBaseAddress); - if (EFI_ERROR(Status)) { - return Status; - } - - // Mark the VRAM as write-combining. The VRAM is inside the DRAM, which is cacheable. - Status = gDS->SetMemorySpaceAttributes (*VramBaseAddress, *VramSize, - EFI_MEMORY_WC); - ASSERT_EFI_ERROR(Status); - if (EFI_ERROR(Status)) { - gBS->FreePages (*VramBaseAddress, EFI_SIZE_TO_PAGES(*VramSize)); - return Status; - } - break; - - default: - // Unsupported site - Status = EFI_UNSUPPORTED; - break; - } - - return Status; -} - -UINT32 -LcdPlatformGetMaxMode ( - VOID - ) -{ - // The following line will report correctly the total number of graphics modes - // supported by the PL111CLCD. - //return (sizeof(mResolutions) / sizeof(CLCD_RESOLUTION)) - 1; - - // However, on some platforms it is desirable to ignore some graphics modes. - // This could be because the specific implementation of PL111 has certain limitations. - - // Set the maximum mode allowed - return (PcdGet32(PcdPL111LcdMaxMode)); -} - -EFI_STATUS -LcdPlatformSetMode ( - IN UINT32 ModeNumber - ) -{ - EFI_STATUS Status; - UINT32 LcdSite; - UINT32 OscillatorId; - SYS_CONFIG_FUNCTION Function; - UINT32 SysId; - - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - LcdSite = PL111_CLCD_SITE; - - switch(LcdSite) { - case ARM_VE_MOTHERBOARD_SITE: - Function = SYS_CFG_OSC; - OscillatorId = PL111_CLCD_MOTHERBOARD_VIDEO_MODE_OSC_ID; - break; - case ARM_VE_DAUGHTERBOARD_1_SITE: - Function = SYS_CFG_OSC_SITE1; - OscillatorId = (UINT32)PcdGet32(PcdPL111LcdVideoModeOscId); - break; - default: - return EFI_UNSUPPORTED; - } - - // Set the video mode oscillator - Status = ArmPlatformSysConfigSetDevice (Function, OscillatorId, mResolutions[ModeNumber].OscFreq); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - - // The FVP foundation model does not have an LCD. - // On the FVP models the GIC variant in encoded in bits [15:12]. - // Note: The DVI Mode is not modelled by RTSM or FVP models. - SysId = MmioRead32 (ARM_VE_SYS_ID_REG); - if (SysId != ARM_RTSM_SYS_ID) { - // Take out the FVP GIC variant to reduce the permutations. - SysId &= ~ARM_FVP_SYS_ID_VARIANT_MASK; - if (SysId != ARM_FVP_BASE_BOARD_SYS_ID) { - // Set the DVI into the new mode - Status = ArmPlatformSysConfigSet (SYS_CFG_DVIMODE, mResolutions[ModeNumber].Mode); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - } - } - - // Set the multiplexer - Status = ArmPlatformSysConfigSet (SYS_CFG_MUXFPGA, LcdSite); - if (EFI_ERROR(Status)) { - ASSERT_EFI_ERROR (Status); - return Status; - } - - return Status; -} - -EFI_STATUS -LcdPlatformQueryMode ( - IN UINT32 ModeNumber, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - Info->Version = 0; - Info->HorizontalResolution = mResolutions[ModeNumber].HorizontalResolution; - Info->VerticalResolution = mResolutions[ModeNumber].VerticalResolution; - Info->PixelsPerScanLine = mResolutions[ModeNumber].HorizontalResolution; - - switch (mResolutions[ModeNumber].Bpp) { - case LCD_BITS_PER_PIXEL_24: - Info->PixelFormat = PixelRedGreenBlueReserved8BitPerColor; - Info->PixelInformation.RedMask = LCD_24BPP_RED_MASK; - Info->PixelInformation.GreenMask = LCD_24BPP_GREEN_MASK; - Info->PixelInformation.BlueMask = LCD_24BPP_BLUE_MASK; - Info->PixelInformation.ReservedMask = LCD_24BPP_RESERVED_MASK; - break; - - case LCD_BITS_PER_PIXEL_16_555: - case LCD_BITS_PER_PIXEL_16_565: - case LCD_BITS_PER_PIXEL_12_444: - case LCD_BITS_PER_PIXEL_8: - case LCD_BITS_PER_PIXEL_4: - case LCD_BITS_PER_PIXEL_2: - case LCD_BITS_PER_PIXEL_1: - default: - // These are not supported - ASSERT(FALSE); - break; - } - - return EFI_SUCCESS; -} - -EFI_STATUS -LcdPlatformGetTimings ( - IN UINT32 ModeNumber, - OUT UINT32* HRes, - OUT UINT32* HSync, - OUT UINT32* HBackPorch, - OUT UINT32* HFrontPorch, - OUT UINT32* VRes, - OUT UINT32* VSync, - OUT UINT32* VBackPorch, - OUT UINT32* VFrontPorch - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - *HRes = mResolutions[ModeNumber].HorizontalResolution; - *HSync = mResolutions[ModeNumber].HSync; - *HBackPorch = mResolutions[ModeNumber].HBackPorch; - *HFrontPorch = mResolutions[ModeNumber].HFrontPorch; - *VRes = mResolutions[ModeNumber].VerticalResolution; - *VSync = mResolutions[ModeNumber].VSync; - *VBackPorch = mResolutions[ModeNumber].VBackPorch; - *VFrontPorch = mResolutions[ModeNumber].VFrontPorch; - - return EFI_SUCCESS; -} - -EFI_STATUS -LcdPlatformGetBpp ( - IN UINT32 ModeNumber, - OUT LCD_BPP * Bpp - ) -{ - if (ModeNumber >= LcdPlatformGetMaxMode ()) { - return EFI_INVALID_PARAMETER; - } - - *Bpp = mResolutions[ModeNumber].Bpp; - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf deleted file mode 100644 index 658558ab1523..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf +++ /dev/null @@ -1,44 +0,0 @@ -#/** @file -# -# Component description file for ArmVeGraphicsDxe module -# -# Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL111LcdArmVExpressLib - FILE_GUID = b7f06f20-496f-11e0-a8e8-0002a5d5c51b - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = LcdPlatformLib - -[Sources.common] - PL111LcdArmVExpress.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - ArmPlatformSysConfigLib - BaseLib - DxeServicesTableLib - -[Protocols] - gEfiEdidDiscoveredProtocolGuid # Produced - gEfiEdidActiveProtocolGuid # Produced - -[Pcd] - gArmVExpressTokenSpaceGuid.PcdPL111LcdMaxMode - gArmVExpressTokenSpaceGuid.PcdPL111LcdVideoModeOscId diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c deleted file mode 100644 index d2bc4a88fa5a..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.c +++ /dev/null @@ -1,111 +0,0 @@ -/** @file - Template library implementation to support ResetSystem Runtime call. - - Fill in the templates with what ever makes you system reset. - - Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
- Copyright (c) 2013, ARM Ltd. All rights reserved.
- Copyright (c) 2017, Linaro Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include - -#include - -/** - This function causes a system-wide reset (cold reset), in which - all circuitry within the system returns to its initial state. This type of - reset is asynchronous to system operation and operates without regard to - cycle boundaries. - - If this function returns, it means that the system does not support cold - reset. -**/ -VOID -EFIAPI -ResetCold ( - VOID - ) -{ - ArmPlatformSysConfigSet (SYS_CFG_REBOOT, 0); -} - -/** - This function causes a system-wide initialization (warm reset), in which all - processors are set to their initial state. Pending cycles are not corrupted. - - If this function returns, it means that the system does not support warm - reset. -**/ -VOID -EFIAPI -ResetWarm ( - VOID - ) -{ - ResetCold (); -} - -/** - This function causes the system to enter a power state equivalent - to the ACPI G2/S5 or G3 states. - - If this function returns, it means that the system does not support shut down reset. -**/ -VOID -EFIAPI -ResetShutdown ( - VOID - ) -{ - ArmPlatformSysConfigSet (SYS_CFG_SHUTDOWN, 0); -} - -/** - This function causes the system to enter S3 and then wake up immediately. - - If this function returns, it means that the system does not support S3 - feature. -**/ -VOID -EFIAPI -EnterS3WithImmediateWake ( - VOID - ) -{ - // not implemented -} - -/** - This function causes a systemwide reset. The exact type of the reset is - defined by the EFI_GUID that follows the Null-terminated Unicode string passed - into ResetData. If the platform does not recognize the EFI_GUID in ResetData - the platform must pick a supported reset type to perform.The platform may - optionally log the parameters from any non-normal reset that occurs. - - @param[in] DataSize The size, in bytes, of ResetData. - @param[in] ResetData The data buffer starts with a Null-terminated string, - followed by the EFI_GUID. -**/ -VOID -EFIAPI -ResetPlatformSpecific ( - IN UINTN DataSize, - IN VOID *ResetData - ) -{ - ResetCold (); -} diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf b/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf deleted file mode 100644 index 780636c1de3a..000000000000 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf +++ /dev/null @@ -1,35 +0,0 @@ -#/** @file -# Reset System lib to make it easy to port new platforms -# -# Copyright (c) 2008, Apple Inc. All rights reserved.
-# Copyright (c) 2017, Linaro Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVeResetSystemLib - FILE_GUID = 36885202-0854-4373-bfd2-95d229b44d44 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ResetSystemLib - -[Sources.common] - ResetSystemLib.c - -[Packages] - MdeModulePkg/MdeModulePkg.dec - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - DebugLib - ArmPlatformSysConfigLib From patchwork Mon Dec 4 22:22:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120603 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434381edb; Mon, 4 Dec 2017 14:23:04 -0800 (PST) X-Google-Smtp-Source: AGs4zMbUxcRXx+0oZwHmcKxcySbKADtzAfCZGAE88S+YMlTCYGzN+w4s91WkPY7af+/sZz+upOUJ X-Received: by 10.159.198.4 with SMTP id f4mr15807430plo.331.1512426184340; Mon, 04 Dec 2017 14:23:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426184; cv=none; d=google.com; s=arc-20160816; b=Y7H4JzuC9C4INbGDfb3yGziGNa1eRqWeXdNzxDAnsUhrEoPcugYfr/hyeMQz3hQgCp nuPyuEK+vrnXD9bpQwDBvJvvLzwsdAM4eCYWg3Tx4QSuhCwLBikCCtbWHhCGO0/nz2GY wa5IHIjCnV3KoGf+rAzFulQiutKFY2r67RAFBGUd7BDP4x4IJ96xee9hVm5ot15F7+V+ FfTx9QpyRcb/rgJCgC35RALh2QesYstjTHLumNOnt4M1Ev3gOyVEAvFiZORaku4hBsvX QAEuZRX3HmjG66bJuqyhRJR6jaT2vhy8KhXW1sTs7QVM7CX7pkQf5Qo4uy0/4EN3NwLq nU3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=ltRXoJi13CPkqD5XhZWux78yjUzancJSYmpygzbkCPw=; b=X6on2ZKK15u5sCmBEqV79wUT0K7tzNsJJ3Vc0cJwlnB5IE67oCs5oS1F4VvrpmRl6P zrOO9+JV39rKJe4yP9FhOPN3JKyujJ3X4b/yQ+BWSy8pp9DX0iKlbFyqrnBxWyoUqTO1 3MwdiAKlcP1Z91Y7tYNHdYzyzfqasXyBgdgPd+VGIW7IC8sxDHM/mpqtb0hKRfJdiNbt xgBGk4LGbAJkQhk03dB+LzbEKkOGeB/1MQMlTZS/cBqC04+5YrF3MwiKWJc2AcxTEV9e yM61T88WOTlOA92qBBApgVaR95Y7KKuCbIKELsFfa4YCoHEzaNRyAwaS6xIari8N03et 5bsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QPxvf3+n; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id k33si170623pld.22.2017.12.04.14.23.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:04 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QPxvf3+n; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 9441E220EE086; Mon, 4 Dec 2017 14:18:33 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::242; helo=mail-wm0-x242.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1877620359E96 for ; Mon, 4 Dec 2017 14:18:32 -0800 (PST) Received: by mail-wm0-x242.google.com with SMTP id n138so8626836wmg.2 for ; Mon, 04 Dec 2017 14:23:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gjk+zer+jGgdT7nOH6BvasticQ83SiU+fh8gc6gw/iE=; b=QPxvf3+nb0beP5Kb5c6tYMDioRgrlRfka9Z3wzagloNkQAbT2qBHW0zE+drQy3RZhH IUoOkSIgBLcUVbcSojzVC7gdz465ddNPDXVbLGXXHXqKsw8Ae72CKRIXPY1GneRS9Ddl cfbGx0Z+5o/tVAQ4UDEFWQHcNhgNcJeguATko= 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; bh=gjk+zer+jGgdT7nOH6BvasticQ83SiU+fh8gc6gw/iE=; b=MU5jd4YsIxDJspga58GrxaBwkvN9ZGL9CgNqrgkU2i74zwOHt8DETGIRPDaNjXhaet 5DhOetRm1ekpCQeyJY/x1BSrrGR34vO+w1WKywI41ssV5bS2IyTwYM5UmSOYw0CtIocY u+8x9ye+31ECvSeUjH1RO/R1SIJR2OZ0MdoC39IEOt9w79W8dgQzTA5nyf1yOVqYostl HaDXgQeM9L7Gau8KOovdBls52Ezx5ZQ2w7S+ep3P3ntmG/30PhC4MoQ8LtFYz/SnpHbe OfVz/tjJ3KfIdpy3ux9Incx+WHwJoByjRryBFAdMmKRu08cKWYXK0k/VThtrNsCCDRXS CTNw== X-Gm-Message-State: AKGB3mLBo1QiLWT9knyGDlqUxcaojE6QcLyVOWxF1U2igF+zqeEqje3+ SbyTofxkT0dbdcQ6xBchigHTScnCIYE= X-Received: by 10.28.118.19 with SMTP id r19mr4581411wmc.10.1512426180623; Mon, 04 Dec 2017 14:23:00 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.22.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:22:59 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:33 +0000 Message-Id: <20171204222243.15950-4-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 03/13] ArmPlatformPkg: remove ArmPlatformSysConfigLib library class X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" The only remaining user of ArmPlatformSysConfigLib has absorbed this definition into its own edk2-platforms package, so let's remove it from the shared code. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- ArmPlatformPkg/Include/Library/ArmPlatformSysConfigLib.h | 63 --------------- ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.c | 85 -------------------- ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf | 28 ------- 3 files changed, 176 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Include/Library/ArmPlatformSysConfigLib.h b/ArmPlatformPkg/Include/Library/ArmPlatformSysConfigLib.h deleted file mode 100644 index 39a0cc7f734c..000000000000 --- a/ArmPlatformPkg/Include/Library/ArmPlatformSysConfigLib.h +++ /dev/null @@ -1,63 +0,0 @@ -/** @file ArmPlatformSysConfigLib.h - - Copyright (c) 2011-2012, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __ARM_PLATFORM_SYS_CONFIG_H__ -#define __ARM_PLATFORM_SYS_CONFIG_H__ - -#include - -/* This header file makes it easier to access the System Configuration Registers - * in the ARM Versatile Express motherboard. - */ - -// -// Typedef -// -typedef UINT32 SYS_CONFIG_FUNCTION; - -// -// Functions -// -RETURN_STATUS -ArmPlatformSysConfigInitialize ( - VOID - ); - -RETURN_STATUS -ArmPlatformSysConfigGet ( - IN SYS_CONFIG_FUNCTION Function, - OUT UINT32* Value - ); - -RETURN_STATUS -ArmPlatformSysConfigGetValues ( - IN SYS_CONFIG_FUNCTION Function, - IN UINTN Size, - OUT UINT32* Values - ); - -RETURN_STATUS -ArmPlatformSysConfigSet ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Value - ); - -RETURN_STATUS -ArmPlatformSysConfigSetDevice ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Device, - IN UINT32 Value - ); - -#endif /* __SYS_CFG_REGISTERS_H__ */ diff --git a/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.c b/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.c deleted file mode 100644 index a7199e65d8f6..000000000000 --- a/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.c +++ /dev/null @@ -1,85 +0,0 @@ -/** @file - - Copyright (c) 2011-2014, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include - - -RETURN_STATUS -ArmPlatformSysConfigInitialize ( - VOID - ) -{ - return RETURN_SUCCESS; -} - -/*************************************** - * GENERAL FUNCTION: AccessSysCfgRegister - * Interacts with - * SYS_CFGSTAT - * SYS_CFGDATA - * SYS_CFGCTRL - * for setting and for reading out values - ***************************************/ -RETURN_STATUS -AccessSysCfgRegister ( - IN UINT32 ReadWrite, - IN UINT32 Function, - IN UINT32 Site, - IN UINT32 Position, - IN UINT32 Device, - IN OUT UINT32* Data - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigGet ( - IN SYS_CONFIG_FUNCTION Function, - OUT UINT32* Value - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigGetValues ( - IN SYS_CONFIG_FUNCTION Function, - IN UINTN Size, - OUT UINT32* Values - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigSet ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Value - ) -{ - return RETURN_UNSUPPORTED; -} - -RETURN_STATUS -ArmPlatformSysConfigSetDevice ( - IN SYS_CONFIG_FUNCTION Function, - IN UINT32 Device, - IN UINT32 Value - ) -{ - return RETURN_UNSUPPORTED; -} diff --git a/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf b/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf deleted file mode 100644 index f379d7228cd4..000000000000 --- a/ArmPlatformPkg/Library/ArmPlatformSysConfigLibNull/ArmPlatformSysConfigLibNull.inf +++ /dev/null @@ -1,28 +0,0 @@ -#/** @file -# -# Copyright (c) 2011-2014, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmPlatformSysConfigLibNull - FILE_GUID = b2a191a9-9bac-4c83-a2f3-d5f6e71efd03 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmPlatformSysConfigLib - -[Sources.common] - ArmPlatformSysConfigLibNull.c - -[Packages] - MdePkg/MdePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec From patchwork Mon Dec 4 22:22:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120607 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434478edb; Mon, 4 Dec 2017 14:23:13 -0800 (PST) X-Google-Smtp-Source: AGs4zMYRYxdRlD9rvWVIVrtHDv06kFuVB59gxAw4moz69CTk4NKGG8nJxANRl0e7PihW2NZ6SaH5 X-Received: by 10.84.244.11 with SMTP id g11mr16016880pll.80.1512426192813; Mon, 04 Dec 2017 14:23:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426192; cv=none; d=google.com; s=arc-20160816; b=njxrZkscHdMqt1KjeL8TWhCz8ntSOqsv8Sko7ch+JZg3b4tDZEB9Z7pOX/uL8//443 Z5xytGawXcUEN/BcmKdljcqKXEQkmEKQJisTK7gAsDGaIqKieCZviq1TxsdL8lxEhVy4 0J7hTM8x8hUxOwD6cO1CHswjf8dQLR02YLvcqzPtFEfxzcdjjLgnYMFQm9lhW2u+ZTLn aLPIf/XMmridCYlcUPIb6Qwqs66/CB3zf0Ru1vVmITe3/fXhwqJe4yTNJ4zuU5OD8bwb DL91weKiOkco0L3L7B8oj+t+gSrItAKFhwj6qWl6ve98QLr6W2/E9gAMisesqLRnUN1k ZBzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=jLSxykttlfYp+k3m7ZqBLo4g8D8HB81izqZchBJY+GU=; b=RF/FS1n3NQLz9Ld847gGLgCbqlnXYxl/NTACrP0UVZ5PELgJwmDSMAWWG3UDXmTa3k iOUyDH7rmN1U3TDs9kJyTrYEE2UC3TJPbkGp/tMb9jbxc/qCQSzFhUvMuCNs83vjZ+mW ZYUxnmvoPYAqYXVDykiitGE5q6JOw8ziclN/BBwbJ7Au+S+6dzlahzv08znBzCegz5th pq7kRFpvUrPLM4rVYUw+L3C5GAn/DSfFUpJZsi3Lh82umMs6ug1YxS3OwtRfVdT3uLm7 k1XT7K0KqPnvGTm6cvSrp+v8Y/Yjdl8GMJW3lMUBF/nGKaKj+UXA9yuZR9GhmQN9w1br K8bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=NxajzGG1; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id u1si1577984pls.528.2017.12.04.14.23.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:12 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=NxajzGG1; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 66C69221660CA; Mon, 4 Dec 2017 14:18:40 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::22e; helo=mail-wr0-x22e.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x22e.google.com (mail-wr0-x22e.google.com [IPv6:2a00:1450:400c:c0c::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1CC8D22152380 for ; Mon, 4 Dec 2017 14:18:37 -0800 (PST) Received: by mail-wr0-x22e.google.com with SMTP id v22so18995517wrb.0 for ; Mon, 04 Dec 2017 14:23:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UEZyLFsEL67IbloRYotZFT+gT0oaEVUel/7lux4MCbY=; b=NxajzGG10X8q/n4l0bbuNvqcONT4MxlTByl3cIVpwrbY8hsLf3z0Kfo9EqRs4UgW3h HgJeHFu67KTHp48sWJUI6KHhMyNyMN9qFRF7D1hq3aTF/IEz+E/VFBkMRFYHASMbELjO EJIUN/2iu3QV8sYtMHXxFciXDPUCTNu91bIrk= 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; bh=UEZyLFsEL67IbloRYotZFT+gT0oaEVUel/7lux4MCbY=; b=rprGa0bOFGEK3VDf8jVir+N5W9ax2UAqu5lwy0bdlE8QyeqaDDxdrAUBNEW3Be8Mye Z9MEPU3+fy0wLwj/vNSy+vX60RTEqwW2/t7mRnHX1Sa9IVeVuQFxToL/6eFbO8ligUO/ 3Zuos0knDtAijlFKNMTnE8D/P7M+c5PbqbAHbhtyRyFvDn/DWHBI4WkDZfWyZxux2tde yIVeJXPgFmkc//ZtfqbPPSCjMgykwUMMQVK5BgcRlXEai/VuTldlG9C0cUWwaJLw4Leo sFKwatRfAuBdqaPwJOYqBxdUdhlV8eZoZWOVEt6t3+ibiyUkR9BpCdpQyHJZt/BcMFaU OVmQ== X-Gm-Message-State: AJaThX7ffmXvdTbOJA8CvBf59D7j2WUsn1E9yAwU7cpY7uCj3xyeqofv nLE3Ho9Vyx6RJo2H8v/ZrW73ks5lnFo= X-Received: by 10.223.164.84 with SMTP id e20mr14178770wra.52.1512426183788; Mon, 04 Dec 2017 14:23:03 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:02 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:34 +0000 Message-Id: <20171204222243.15950-5-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 04/13] ArmPlatformPkg: remove BootMonFs and ArmShellCmdRunAxf X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" These modules have been imported into edk2-platforms where they belong so remove them from the main EDK2 branch. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFs.inf | 61 -- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsApi.h | 388 ------- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsDir.c | 766 -------------- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsEntryPoint.c | 529 ---------- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsHw.h | 57 -- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsImages.c | 222 ---- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsInternal.h | 101 -- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsOpenClose.c | 795 --------------- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsReadWrite.c | 259 ----- ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsUnsupported.c | 37 - ArmPlatformPkg/Include/Guid/BootMonFsFileInfo.h | 47 - ArmPlatformPkg/Include/Library/ArmShellCmdLib.h | 57 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.c | 95 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.h | 83 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.inf | 54 - ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.uni | 68 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.c | 154 --- ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.h | 66 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.c | 340 ------- ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.h | 64 -- ArmPlatformPkg/Library/ArmShellCmdRunAxf/RunAxf.c | 395 -------- ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf32.h | 258 ----- ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf64.h | 260 ----- ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf_common.h | 1059 -------------------- 24 files changed, 6215 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFs.inf b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFs.inf deleted file mode 100644 index b42d205a2bc3..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFs.inf +++ /dev/null @@ -1,61 +0,0 @@ -#/** @file -# Support for ARM Boot Monitor File System -# -# Copyright (c) 2012-2015, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BootMonFs - FILE_GUID = 7abbc454-f737-4322-931c-b1bb62a01d6f - MODULE_TYPE = UEFI_DRIVER - VERSION_STRING = 1.0 - - ENTRY_POINT = BootMonFsEntryPoint - -[Sources] - BootMonFsEntryPoint.c - BootMonFsOpenClose.c - BootMonFsDir.c - BootMonFsImages.c - BootMonFsReadWrite.c - BootMonFsUnsupported.c - -[Packages] - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - -[LibraryClasses] - BaseLib - DevicePathLib - MemoryAllocationLib - PrintLib - UefiDriverEntryPoint - UefiLib - -[Guids] - gArmBootMonFsFileInfoGuid - gEfiFileSystemInfoGuid - gEfiFileInfoGuid - gEfiFileSystemVolumeLabelInfoIdGuid - -[Pcd] - gArmPlatformTokenSpaceGuid.PcdBootMonFsSupportedDevicePaths - -[Protocols] - gEfiDiskIoProtocolGuid - gEfiBlockIoProtocolGuid - gEfiSimpleFileSystemProtocolGuid - gEfiDevicePathProtocolGuid - gEfiDevicePathFromTextProtocolGuid - diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsApi.h b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsApi.h deleted file mode 100644 index d690520a0f67..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsApi.h +++ /dev/null @@ -1,388 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __BOOTMON_FS_API_H -#define __BOOTMON_FS_API_H - -#include - -EFI_STATUS -BootMonFsInitialize ( - IN BOOTMON_FS_INSTANCE *Instance - ); - -UINT32 -BootMonFsChecksum ( - IN VOID *Data, - IN UINT32 Size - ); - -EFI_STATUS -BootMonFsComputeFooterChecksum ( - IN OUT HW_IMAGE_DESCRIPTION *Footer - ); - -EFIAPI -EFI_STATUS -OpenBootMonFsOpenVolume ( - IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **Root - ); - -UINT32 -BootMonFsGetImageLength ( - IN BOOTMON_FS_FILE *File - ); - -UINTN -BootMonFsGetPhysicalSize ( - IN BOOTMON_FS_FILE* File - ); - -EFI_STATUS -BootMonFsCreateFile ( - IN BOOTMON_FS_INSTANCE *Instance, - OUT BOOTMON_FS_FILE **File - ); - -EFIAPI -EFI_STATUS -BootMonFsGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ); - -EFIAPI -EFI_STATUS -BootMonFsReadDirectory ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ); - -EFIAPI -EFI_STATUS -BootMonFsFlushDirectory ( - IN EFI_FILE_PROTOCOL *This - ); - -/** - Flush all modified data associated with a file to a device. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the - file handle to flush. - - @retval EFI_SUCCESS The data was flushed. - @retval EFI_ACCESS_DENIED The file was opened read-only. - @retval EFI_DEVICE_ERROR The device reported an error. - @retval EFI_VOLUME_FULL The volume is full. - @retval EFI_OUT_OF_RESOURCES Not enough resources were available to flush the data. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsFlushFile ( - IN EFI_FILE_PROTOCOL *This - ); - -/** - Close a specified file handle. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the file - handle to close. - - @retval EFI_SUCCESS The file was closed. - @retval EFI_INVALID_PARAMETER The parameter "This" is NULL or is not an open - file handle. - -**/ -EFIAPI -EFI_STATUS -BootMonFsCloseFile ( - IN EFI_FILE_PROTOCOL *This - ); - -/** - Open a file on the boot monitor file system. - - The boot monitor file system does not allow for sub-directories. There is only - one directory, the root one. On any attempt to create a directory, the function - returns in error with the EFI_WRITE_PROTECTED error code. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to source location. - @param[out] NewHandle A pointer to the location to return the opened - handle for the new file. - @param[in] FileName The Null-terminated string of the name of the file - to be opened. - @param[in] OpenMode The mode to open the file : Read or Read/Write or - Read/Write/Create - @param[in] Attributes Attributes of the file in case of a file creation - - @retval EFI_SUCCESS The file was open. - @retval EFI_NOT_FOUND The specified file could not be found or the specified - directory in which to create a file could not be found. - @retval EFI_DEVICE_ERROR The device reported an error. - @retval EFI_WRITE_PROTECTED Attempt to create a directory. This is not possible - with the Boot Monitor file system. - @retval EFI_OUT_OF_RESOURCES Not enough resources were available to open the file. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsOpenFile ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes - ); - -/** - Read data from an open file. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle to read data from. - @param[in out] BufferSize On input, the size of the Buffer. On output, the - amount of data returned in Buffer. In both cases, - the size is measured in bytes. - @param[out] Buffer The buffer into which the data is read. - - @retval EFI_SUCCESS The data was read. - @retval EFI_DEVICE_ERROR On entry, the current file position is - beyond the end of the file, or the device - reported an error while performing the read - operation. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsReadFile ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ); - -EFIAPI -EFI_STATUS -BootMonFsSetDirPosition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position - ); - -EFIAPI -EFI_STATUS -BootMonFsGetPosition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position - ); - -/** - Write data to an open file. - - The data is not written to the flash yet. It will be written when the file - will be either read, closed or flushed. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle to write data to. - @param[in out] BufferSize On input, the size of the Buffer. On output, the - size of the data actually written. In both cases, - the size is measured in bytes. - @param[in] Buffer The buffer of data to write. - - @retval EFI_SUCCESS The data was written. - @retval EFI_ACCESS_DENIED The file was opened read only. - @retval EFI_OUT_OF_RESOURCES Unable to allocate the buffer to store the - data to write. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsWriteFile ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer - ); - -EFIAPI -EFI_STATUS -BootMonFsDeleteFail ( - IN EFI_FILE_PROTOCOL *This - ); - -/** - Close and delete a file from the boot monitor file system. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the file - handle to delete. - - @retval EFI_SUCCESS The file was closed and deleted. - @retval EFI_INVALID_PARAMETER The parameter "This" is NULL or is not an open - file handle. - @retval EFI_WARN_DELETE_FAILURE The handle was closed, but the file was not deleted. - -**/ -EFIAPI -EFI_STATUS -BootMonFsDelete ( - IN EFI_FILE_PROTOCOL *This - ); - -/** - Set a file's current position. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to set the requested position on. - @param[in] Position The byte position from the start of the file to set. - - @retval EFI_SUCCESS The position was set. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsSetPosition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position - ); - -/** - Return a file's current position. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to get the current position on. - @param[out] Position The address to return the file's current position value. - - @retval EFI_SUCCESS The position was returned. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsGetPosition( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position - ); - -// -// UNSUPPORTED OPERATIONS -// - -EFIAPI -EFI_STATUS -BootMonFsGetPositionUnsupported ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position - ); - -/** - Set information about a file or a volume. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle the information is for. - @param[in] InformationType The type identifier for the information being set : - EFI_FILE_INFO_ID or EFI_FILE_SYSTEM_INFO_ID or - EFI_FILE_SYSTEM_VOLUME_LABEL_ID - @param[in] BufferSize The size, in bytes, of Buffer. - @param[in] Buffer A pointer to the data buffer to write. The type of the - data inside the buffer is indicated by InformationType. - - @retval EFI_SUCCESS The information was set. - @retval EFI_UNSUPPORTED The InformationType is not known. - @retval EFI_DEVICE_ERROR The last issued semi-hosting operation failed. - @retval EFI_ACCESS_DENIED An attempt is made to change the name of a file - to a file that is already present. - @retval EFI_ACCESS_DENIED An attempt is being made to change the - EFI_FILE_DIRECTORY Attribute. - @retval EFI_ACCESS_DENIED InformationType is EFI_FILE_INFO_ID and - the file was opened in read-only mode and an - attempt is being made to modify a field other - than Attribute. - @retval EFI_WRITE_PROTECTED An attempt is being made to modify a read-only - attribute. - @retval EFI_BAD_BUFFER_SIZE The size of the buffer is lower than that indicated by - the data inside the buffer. - @retval EFI_OUT_OF_RESOURCES A allocation needed to process the request failed. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer - ); - -// -// Directory API -// - -EFI_STATUS -BootMonFsOpenDirectory ( - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN BOOTMON_FS_INSTANCE *Volume - ); - -// -// Internal API -// - -/** - Search for a file given its name coded in Ascii. - - When searching through the files of the volume, if a file is currently not - open, its name was written on the media and is kept in RAM in the - "HwDescription.Footer.Filename[]" field of the file's description. - - If a file is currently open, its name might not have been written on the - media yet, and as the "HwDescription" is a mirror in RAM of what is on the - media the "HwDescription.Footer.Filename[]" might be outdated. In that case, - the up to date name of the file is stored in the "Info" field of the file's - description. - - @param[in] Instance Pointer to the description of the volume in which - the file has to be search for. - @param[in] AsciiFileName Name of the file. - - @param[out] File Pointer to the description of the file if the - file was found. - - @retval EFI_SUCCESS The file was found. - @retval EFI_NOT_FOUND The file was not found. - -**/ -EFI_STATUS -BootMonGetFileFromAsciiFileName ( - IN BOOTMON_FS_INSTANCE *Instance, - IN CHAR8* AsciiFileName, - OUT BOOTMON_FS_FILE **File - ); - -EFI_STATUS -BootMonGetFileFromPosition ( - IN BOOTMON_FS_INSTANCE *Instance, - IN UINTN Position, - OUT BOOTMON_FS_FILE **File - ); - -#endif diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsDir.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsDir.c deleted file mode 100644 index 64ea0ec68048..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsDir.c +++ /dev/null @@ -1,766 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include "BootMonFsInternal.h" - -EFIAPI -EFI_STATUS -OpenBootMonFsOpenVolume ( - IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **Root - ) -{ - BOOTMON_FS_INSTANCE *Instance; - - Instance = BOOTMON_FS_FROM_FS_THIS (This); - if (Instance == NULL) { - return EFI_DEVICE_ERROR; - } - - Instance->RootFile->Info->Attribute = EFI_FILE_READ_ONLY | EFI_FILE_DIRECTORY; - - *Root = &Instance->RootFile->File; - - return EFI_SUCCESS; -} - -UINT32 -BootMonFsGetImageLength ( - IN BOOTMON_FS_FILE *File - ) -{ - UINT32 Index; - UINT32 FileSize; - LIST_ENTRY *RegionToFlushLink; - BOOTMON_FS_FILE_REGION *Region; - - FileSize = 0; - - // Look at all Flash areas to determine file size - for (Index = 0; Index < HW_IMAGE_DESCRIPTION_REGION_MAX; Index++) { - FileSize += File->HwDescription.Region[Index].Size; - } - - // Add the regions that have not been flushed yet - for (RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink); - !IsNull (&File->RegionToFlushLink, RegionToFlushLink); - RegionToFlushLink = GetNextNode (&File->RegionToFlushLink, RegionToFlushLink) - ) - { - Region = (BOOTMON_FS_FILE_REGION*)RegionToFlushLink; - if (Region->Offset + Region->Size > FileSize) { - FileSize += Region->Offset + Region->Size; - } - } - - return FileSize; -} - -UINTN -BootMonFsGetPhysicalSize ( - IN BOOTMON_FS_FILE* File - ) -{ - // Return 0 for files that haven't yet been flushed to media - if (File->HwDescription.RegionCount == 0) { - return 0; - } - - return ((File->HwDescription.BlockEnd - File->HwDescription.BlockStart) + 1 ) - * File->Instance->Media->BlockSize; -} - -EFIAPI -EFI_STATUS -BootMonFsSetDirPosition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position - ) -{ - BOOTMON_FS_FILE *File; - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File == NULL) { - return EFI_INVALID_PARAMETER; - } - - // UEFI Spec section 12.5: - // "The seek request for nonzero is not valid on open directories." - if (Position != 0) { - return EFI_UNSUPPORTED; - } - File->Position = Position; - - return EFI_SUCCESS; -} - -EFI_STATUS -BootMonFsOpenDirectory ( - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN BOOTMON_FS_INSTANCE *Volume - ) -{ - ASSERT(0); - - return EFI_UNSUPPORTED; -} - -STATIC -EFI_STATUS -GetFileSystemVolumeLabelInfo ( - IN BOOTMON_FS_INSTANCE *Instance, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - UINTN Size; - EFI_FILE_SYSTEM_VOLUME_LABEL *Label; - EFI_STATUS Status; - - Label = Buffer; - - // Value returned by StrSize includes null terminator. - Size = SIZE_OF_EFI_FILE_SYSTEM_VOLUME_LABEL - + StrSize (Instance->FsInfo.VolumeLabel); - - if (*BufferSize >= Size) { - CopyMem (&Label->VolumeLabel, &Instance->FsInfo.VolumeLabel, Size); - Status = EFI_SUCCESS; - } else { - Status = EFI_BUFFER_TOO_SMALL; - } - *BufferSize = Size; - return Status; -} - -// Helper function that calculates a rough "free space" by: -// - Taking the media size -// - Subtracting the sum of all file sizes -// - Subtracting the block size times the number of files -// (To account for the blocks containing the HW_IMAGE_INFO -STATIC -UINT64 -ComputeFreeSpace ( - IN BOOTMON_FS_INSTANCE *Instance - ) -{ - LIST_ENTRY *FileLink; - UINT64 FileSizeSum; - UINT64 MediaSize; - UINTN NumFiles; - EFI_BLOCK_IO_MEDIA *Media; - BOOTMON_FS_FILE *File; - - Media = Instance->BlockIo->Media; - MediaSize = Media->BlockSize * (Media->LastBlock + 1); - - NumFiles = 0; - FileSizeSum = 0; - for (FileLink = GetFirstNode (&Instance->RootFile->Link); - !IsNull (&Instance->RootFile->Link, FileLink); - FileLink = GetNextNode (&Instance->RootFile->Link, FileLink) - ) - { - File = BOOTMON_FS_FILE_FROM_LINK_THIS (FileLink); - FileSizeSum += BootMonFsGetImageLength (File); - - NumFiles++; - } - - return MediaSize - (FileSizeSum + (Media->BlockSize + NumFiles)); -} - -STATIC -EFI_STATUS -GetFilesystemInfo ( - IN BOOTMON_FS_INSTANCE *Instance, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - EFI_STATUS Status; - - if (*BufferSize >= Instance->FsInfo.Size) { - Instance->FsInfo.FreeSpace = ComputeFreeSpace (Instance); - CopyMem (Buffer, &Instance->FsInfo, Instance->FsInfo.Size); - Status = EFI_SUCCESS; - } else { - Status = EFI_BUFFER_TOO_SMALL; - } - - *BufferSize = Instance->FsInfo.Size; - return Status; -} - -STATIC -EFI_STATUS -GetFileInfo ( - IN BOOTMON_FS_INSTANCE *Instance, - IN BOOTMON_FS_FILE *File, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - EFI_FILE_INFO *Info; - UINTN ResultSize; - - ResultSize = SIZE_OF_EFI_FILE_INFO + StrSize (File->Info->FileName); - - if (*BufferSize < ResultSize) { - *BufferSize = ResultSize; - return EFI_BUFFER_TOO_SMALL; - } - - Info = Buffer; - - CopyMem (Info, File->Info, ResultSize); - // Size of the information - Info->Size = ResultSize; - - *BufferSize = ResultSize; - - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -GetBootMonFsFileInfo ( - IN BOOTMON_FS_INSTANCE *Instance, - IN BOOTMON_FS_FILE *File, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE_INFO *Info; - UINTN ResultSize; - UINTN Index; - - if (File == Instance->RootFile) { - Status = EFI_UNSUPPORTED; - } else { - ResultSize = SIZE_OF_BOOTMON_FS_FILE_INFO; - - if (*BufferSize < ResultSize) { - *BufferSize = ResultSize; - Status = EFI_BUFFER_TOO_SMALL; - } else { - Info = Buffer; - - // Zero out the structure - ZeroMem (Info, ResultSize); - - // Fill in the structure - Info->Size = ResultSize; - - Info->EntryPoint = File->HwDescription.EntryPoint; - Info->RegionCount = File->HwDescription.RegionCount; - for (Index = 0; Index < File->HwDescription.RegionCount; Index++) { - Info->Region[Index].LoadAddress = File->HwDescription.Region[Index].LoadAddress; - Info->Region[Index].Size = File->HwDescription.Region[Index].Size; - Info->Region[Index].Offset = File->HwDescription.Region[Index].Offset; - Info->Region[Index].Checksum = File->HwDescription.Region[Index].Checksum; - } - *BufferSize = ResultSize; - Status = EFI_SUCCESS; - } - } - - return Status; -} - -/** - Set the name of a file. - - This is a helper function for SetFileInfo(). - - @param[in] Instance A pointer to the description of the volume - the file belongs to. - @param[in] File A pointer to the description of the file. - @param[in] FileName A pointer to the new name of the file. - - @retval EFI_SUCCESS The name was set. - @retval EFI_ACCESS_DENIED An attempt is made to change the name of a file - to a file that is already present. - -**/ -STATIC -EFI_STATUS -SetFileName ( - IN BOOTMON_FS_INSTANCE *Instance, - IN BOOTMON_FS_FILE *File, - IN CONST CHAR16 *FileName - ) -{ - CHAR8 AsciiFileName[MAX_NAME_LENGTH]; - BOOTMON_FS_FILE *SameFile; - - // If the file path start with a \ strip it. The EFI Shell may - // insert a \ in front of the file name. - if (FileName[0] == L'\\') { - FileName++; - } - - UnicodeStrToAsciiStrS (FileName, AsciiFileName, MAX_NAME_LENGTH); - - if (BootMonGetFileFromAsciiFileName ( - File->Instance, - AsciiFileName, - &SameFile - ) != EFI_NOT_FOUND) { - // A file with that name already exists. - return EFI_ACCESS_DENIED; - } else { - // OK, change the filename. - AsciiStrToUnicodeStrS (AsciiFileName, File->Info->FileName, - (File->Info->Size - SIZE_OF_EFI_FILE_INFO) / sizeof (CHAR16)); - return EFI_SUCCESS; - } -} - -/** - Set the size of a file. - - This is a helper function for SetFileInfo(). - - @param[in] Instance A pointer to the description of the volume - the file belongs to. - @param[in] File A pointer to the description of the file. - @param[in] NewSize The requested new size for the file. - - @retval EFI_SUCCESS The size was set. - @retval EFI_OUT_OF_RESOURCES An allocation needed to process the request failed. - -**/ -STATIC -EFI_STATUS -SetFileSize ( - IN BOOTMON_FS_INSTANCE *Instance, - IN BOOTMON_FS_FILE *BootMonFsFile, - IN UINTN NewSize - ) -{ - EFI_STATUS Status; - UINT32 OldSize; - LIST_ENTRY *RegionToFlushLink; - LIST_ENTRY *NextRegionToFlushLink; - BOOTMON_FS_FILE_REGION *Region; - EFI_FILE_PROTOCOL *File; - CHAR8 *Buffer; - UINTN BufferSize; - UINT64 StoredPosition; - - OldSize = BootMonFsFile->Info->FileSize; - - // - // In case of file truncation, force the regions waiting for writing to - // not overflow the new size of the file. - // - if (NewSize < OldSize) { - for (RegionToFlushLink = GetFirstNode (&BootMonFsFile->RegionToFlushLink); - !IsNull (&BootMonFsFile->RegionToFlushLink, RegionToFlushLink); - ) - { - NextRegionToFlushLink = GetNextNode (&BootMonFsFile->RegionToFlushLink, RegionToFlushLink); - Region = (BOOTMON_FS_FILE_REGION*)RegionToFlushLink; - if (Region->Offset > NewSize) { - RemoveEntryList (RegionToFlushLink); - FreePool (Region->Buffer); - FreePool (Region); - } else { - Region->Size = MIN (Region->Size, NewSize - Region->Offset); - } - RegionToFlushLink = NextRegionToFlushLink; - } - - } else if (NewSize > OldSize) { - // Increasing a file's size is potentially complicated as it may require - // moving the image description on media. The simplest way to do it is to - // seek past the end of the file (which is valid in UEFI) and perform a - // Write. - File = &BootMonFsFile->File; - - // Save position - Status = File->GetPosition (File, &StoredPosition); - if (EFI_ERROR (Status)) { - return Status; - } - // Set position at the end of the file - Status = File->SetPosition (File, OldSize); - if (EFI_ERROR (Status)) { - return Status; - } - - BufferSize = NewSize - OldSize; - Buffer = AllocateZeroPool (BufferSize); - if (Buffer == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Status = File->Write (File, &BufferSize, Buffer); - FreePool (Buffer); - if (EFI_ERROR (Status)) { - return Status; - } - - // Restore saved position - Status = File->SetPosition (File, StoredPosition); - if (EFI_ERROR (Status)) { - return Status; - } - } - - BootMonFsFile->Info->FileSize = NewSize; - - return EFI_SUCCESS; -} - -/** - Set information about a file. - - @param[in] Instance A pointer to the description of the volume - the file belongs to. - @param[in] File A pointer to the description of the file. - @param[in] Info A pointer to the file information to write. - - @retval EFI_SUCCESS The information was set. - @retval EFI_ACCESS_DENIED An attempt is being made to change the - EFI_FILE_DIRECTORY Attribute. - @retval EFI_ACCESS_DENIED The file was opened in read-only mode and an - attempt is being made to modify a field other - than Attribute. - @retval EFI_ACCESS_DENIED An attempt is made to change the name of a file - to a file that is already present. - @retval EFI_WRITE_PROTECTED An attempt is being made to modify a read-only - attribute. - @retval EFI_OUT_OF_RESOURCES An allocation needed to process the request - failed. - -**/ -STATIC -EFI_STATUS -SetFileInfo ( - IN BOOTMON_FS_INSTANCE *Instance, - IN BOOTMON_FS_FILE *File, - IN EFI_FILE_INFO *Info - ) -{ - EFI_STATUS Status; - BOOLEAN FileSizeIsDifferent; - BOOLEAN FileNameIsDifferent; - BOOLEAN TimeIsDifferent; - - // - // A directory can not be changed to a file and a file can - // not be changed to a directory. - // - if ((Info->Attribute & EFI_FILE_DIRECTORY) != - (File->Info->Attribute & EFI_FILE_DIRECTORY) ) { - return EFI_ACCESS_DENIED; - } - - FileSizeIsDifferent = (Info->FileSize != File->Info->FileSize); - FileNameIsDifferent = (StrnCmp ( - Info->FileName, - File->Info->FileName, - MAX_NAME_LENGTH - 1 - ) != 0); - // - // Check if the CreateTime, LastAccess or ModificationTime - // have been changed. The file system does not support file - // timestamps thus the three times in "File->Info" are - // always equal to zero. The following comparison actually - // checks if all three times are still equal to 0 or not. - // - TimeIsDifferent = CompareMem ( - &Info->CreateTime, - &File->Info->CreateTime, - 3 * sizeof (EFI_TIME) - ) != 0; - - // - // For a file opened in read-only mode, only the Attribute field can be - // modified. The root directory open mode is forced to read-only at opening - // thus the following test protects the root directory to be somehow modified. - // - if (File->OpenMode == EFI_FILE_MODE_READ) { - if (FileSizeIsDifferent || FileNameIsDifferent || TimeIsDifferent) { - return EFI_ACCESS_DENIED; - } - } - - if (TimeIsDifferent) { - return EFI_WRITE_PROTECTED; - } - - if (FileSizeIsDifferent) { - Status = SetFileSize (Instance, File, Info->FileSize); - if (EFI_ERROR (Status)) { - return Status; - } - } - - // - // Note down in RAM the Attribute field but we can not - // ask to store it in flash for the time being. - // - File->Info->Attribute = Info->Attribute; - - if (FileNameIsDifferent) { - Status = SetFileName (Instance, File, Info->FileName); - if (EFI_ERROR (Status)) { - return Status; - } - } - - return EFI_SUCCESS; -} - -EFIAPI -EFI_STATUS -BootMonFsGetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE *File; - BOOTMON_FS_INSTANCE *Instance; - - if ((This == NULL) || - (InformationType == NULL) || - (BufferSize == NULL) || - ((Buffer == NULL) && (*BufferSize > 0)) ) { - return EFI_INVALID_PARAMETER; - } - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - Instance = File->Instance; - - // If the instance has not been initialized yet then do it ... - if (!Instance->Initialized) { - Status = BootMonFsInitialize (Instance); - } else { - Status = EFI_SUCCESS; - } - - if (!EFI_ERROR (Status)) { - if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid) - != 0) { - Status = GetFileSystemVolumeLabelInfo (Instance, BufferSize, Buffer); - } else if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid) != 0) { - Status = GetFilesystemInfo (Instance, BufferSize, Buffer); - } else if (CompareGuid (InformationType, &gEfiFileInfoGuid) != 0) { - Status = GetFileInfo (Instance, File, BufferSize, Buffer); - } else if (CompareGuid (InformationType, &gArmBootMonFsFileInfoGuid) != 0) { - Status = GetBootMonFsFileInfo (Instance, File, BufferSize, Buffer); - } else { - Status = EFI_UNSUPPORTED; - } - } - - return Status; -} - -/** - Set information about a file or a volume. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle the information is for. - @param[in] InformationType The type identifier for the information being set : - EFI_FILE_INFO_ID or EFI_FILE_SYSTEM_INFO_ID or - EFI_FILE_SYSTEM_VOLUME_LABEL_ID - @param[in] BufferSize The size, in bytes, of Buffer. - @param[in] Buffer A pointer to the data buffer to write. The type of the - data inside the buffer is indicated by InformationType. - - @retval EFI_SUCCESS The information was set. - @retval EFI_UNSUPPORTED The InformationType is not known. - @retval EFI_DEVICE_ERROR The last issued semi-hosting operation failed. - @retval EFI_ACCESS_DENIED An attempt is made to change the name of a file - to a file that is already present. - @retval EFI_ACCESS_DENIED An attempt is being made to change the - EFI_FILE_DIRECTORY Attribute. - @retval EFI_ACCESS_DENIED InformationType is EFI_FILE_INFO_ID and - the file was opened in read-only mode and an - attempt is being made to modify a field other - than Attribute. - @retval EFI_WRITE_PROTECTED An attempt is being made to modify a read-only - attribute. - @retval EFI_BAD_BUFFER_SIZE The size of the buffer is lower than that indicated by - the data inside the buffer. - @retval EFI_OUT_OF_RESOURCES A allocation needed to process the request failed. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsSetInfo ( - IN EFI_FILE_PROTOCOL *This, - IN EFI_GUID *InformationType, - IN UINTN BufferSize, - IN VOID *Buffer - ) -{ - BOOTMON_FS_FILE *File; - EFI_FILE_INFO *Info; - EFI_FILE_SYSTEM_INFO *SystemInfo; - - if ((This == NULL) || - (InformationType == NULL) || - (Buffer == NULL) ) { - return EFI_INVALID_PARAMETER; - } - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (CompareGuid (InformationType, &gEfiFileInfoGuid)) { - Info = Buffer; - if (Info->Size < (SIZE_OF_EFI_FILE_INFO + StrSize (Info->FileName))) { - return EFI_INVALID_PARAMETER; - } - if (BufferSize < Info->Size) { - return EFI_BAD_BUFFER_SIZE; - } - return (SetFileInfo (File->Instance, File, Info)); - } - - // - // The only writable field in the other two information types - // (i.e. EFI_FILE_SYSTEM_INFO and EFI_FILE_SYSTEM_VOLUME_LABEL) is the - // filesystem volume label. This can be retrieved with GetInfo, but it is - // hard-coded into this driver, not stored on media. - // - - if (CompareGuid (InformationType, &gEfiFileSystemInfoGuid)) { - SystemInfo = Buffer; - if (SystemInfo->Size < - (SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (SystemInfo->VolumeLabel))) { - return EFI_INVALID_PARAMETER; - } - if (BufferSize < SystemInfo->Size) { - return EFI_BAD_BUFFER_SIZE; - } - return EFI_WRITE_PROTECTED; - } - - if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) { - return EFI_WRITE_PROTECTED; - } - - return EFI_UNSUPPORTED; -} - -EFIAPI -EFI_STATUS -BootMonFsReadDirectory ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - BOOTMON_FS_INSTANCE *Instance; - BOOTMON_FS_FILE *RootFile; - BOOTMON_FS_FILE *File; - EFI_FILE_INFO *Info; - UINTN NameSize; - UINTN ResultSize; - EFI_STATUS Status; - UINTN Index; - - RootFile = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (RootFile == NULL) { - return EFI_INVALID_PARAMETER; - } - - Instance = RootFile->Instance; - Status = BootMonGetFileFromPosition (Instance, RootFile->Position, &File); - if (EFI_ERROR (Status)) { - // No more file - *BufferSize = 0; - return EFI_SUCCESS; - } - - NameSize = AsciiStrLen (File->HwDescription.Footer.Filename) + 1; - ResultSize = SIZE_OF_EFI_FILE_INFO + (NameSize * sizeof (CHAR16)); - if (*BufferSize < ResultSize) { - *BufferSize = ResultSize; - return EFI_BUFFER_TOO_SMALL; - } - - // Zero out the structure - Info = Buffer; - ZeroMem (Info, ResultSize); - - // Fill in the structure - Info->Size = ResultSize; - Info->FileSize = BootMonFsGetImageLength (File); - Info->PhysicalSize = BootMonFsGetPhysicalSize (File); - for (Index = 0; Index < NameSize; Index++) { - Info->FileName[Index] = File->HwDescription.Footer.Filename[Index]; - } - - *BufferSize = ResultSize; - RootFile->Position++; - - return EFI_SUCCESS; -} - -EFIAPI -EFI_STATUS -BootMonFsFlushDirectory ( - IN EFI_FILE_PROTOCOL *This - ) -{ - BOOTMON_FS_FILE *RootFile; - LIST_ENTRY *ListFiles; - LIST_ENTRY *Link; - BOOTMON_FS_FILE *File; - - RootFile = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (RootFile == NULL) { - return EFI_INVALID_PARAMETER; - } - - ListFiles = &RootFile->Link; - - if (IsListEmpty (ListFiles)) { - return EFI_SUCCESS; - } - - // - // Flush all the files that need to be flushed - // - - // Go through all the list of files to flush them - for (Link = GetFirstNode (ListFiles); - !IsNull (ListFiles, Link); - Link = GetNextNode (ListFiles, Link) - ) - { - File = BOOTMON_FS_FILE_FROM_LINK_THIS (Link); - File->File.Flush (&File->File); - } - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsEntryPoint.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsEntryPoint.c deleted file mode 100644 index a1150856f6ba..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsEntryPoint.c +++ /dev/null @@ -1,529 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include - -#include -#include - -#include "BootMonFsInternal.h" - -EFI_DEVICE_PATH* mBootMonFsSupportedDevicePaths; -LIST_ENTRY mInstances; - -EFI_FILE_PROTOCOL mBootMonFsRootTemplate = { - EFI_FILE_PROTOCOL_REVISION, - BootMonFsOpenFile, - BootMonFsCloseFile, - BootMonFsDeleteFail, - BootMonFsReadDirectory, - BootMonFsWriteFile, - BootMonFsGetPositionUnsupported, // UEFI Spec: GetPosition not valid on dirs - BootMonFsSetDirPosition, - BootMonFsGetInfo, - BootMonFsSetInfo, - BootMonFsFlushDirectory -}; - -EFI_FILE_PROTOCOL mBootMonFsFileTemplate = { - EFI_FILE_PROTOCOL_REVISION, - BootMonFsOpenFile, - BootMonFsCloseFile, - BootMonFsDelete, - BootMonFsReadFile, - BootMonFsWriteFile, - BootMonFsGetPosition, - BootMonFsSetPosition, - BootMonFsGetInfo, - BootMonFsSetInfo, - BootMonFsFlushFile -}; - -/** - Search for a file given its name coded in Ascii. - - When searching through the files of the volume, if a file is currently not - open, its name was written on the media and is kept in RAM in the - "HwDescription.Footer.Filename[]" field of the file's description. - - If a file is currently open, its name might not have been written on the - media yet, and as the "HwDescription" is a mirror in RAM of what is on the - media the "HwDescription.Footer.Filename[]" might be outdated. In that case, - the up to date name of the file is stored in the "Info" field of the file's - description. - - @param[in] Instance Pointer to the description of the volume in which - the file has to be search for. - @param[in] AsciiFileName Name of the file. - - @param[out] File Pointer to the description of the file if the - file was found. - - @retval EFI_SUCCESS The file was found. - @retval EFI_NOT_FOUND The file was not found. - -**/ -EFI_STATUS -BootMonGetFileFromAsciiFileName ( - IN BOOTMON_FS_INSTANCE *Instance, - IN CHAR8* AsciiFileName, - OUT BOOTMON_FS_FILE **File - ) -{ - LIST_ENTRY *Entry; - BOOTMON_FS_FILE *FileEntry; - CHAR8 OpenFileAsciiFileName[MAX_NAME_LENGTH]; - CHAR8 *AsciiFileNameToCompare; - - // Go through all the files in the list and return the file handle - for (Entry = GetFirstNode (&Instance->RootFile->Link); - !IsNull (&Instance->RootFile->Link, Entry); - Entry = GetNextNode (&Instance->RootFile->Link, Entry) - ) - { - FileEntry = BOOTMON_FS_FILE_FROM_LINK_THIS (Entry); - if (FileEntry->Info != NULL) { - UnicodeStrToAsciiStrS (FileEntry->Info->FileName, OpenFileAsciiFileName, - MAX_NAME_LENGTH); - AsciiFileNameToCompare = OpenFileAsciiFileName; - } else { - AsciiFileNameToCompare = FileEntry->HwDescription.Footer.Filename; - } - - if (AsciiStrCmp (AsciiFileNameToCompare, AsciiFileName) == 0) { - *File = FileEntry; - return EFI_SUCCESS; - } - } - return EFI_NOT_FOUND; -} - -EFI_STATUS -BootMonGetFileFromPosition ( - IN BOOTMON_FS_INSTANCE *Instance, - IN UINTN Position, - OUT BOOTMON_FS_FILE **File - ) -{ - LIST_ENTRY *Entry; - BOOTMON_FS_FILE *FileEntry; - - // Go through all the files in the list and return the file handle - for (Entry = GetFirstNode (&Instance->RootFile->Link); - !IsNull (&Instance->RootFile->Link, Entry) && (&Instance->RootFile->Link != Entry); - Entry = GetNextNode (&Instance->RootFile->Link, Entry) - ) - { - if (Position == 0) { - FileEntry = BOOTMON_FS_FILE_FROM_LINK_THIS (Entry); - *File = FileEntry; - return EFI_SUCCESS; - } - Position--; - } - return EFI_NOT_FOUND; -} - -EFI_STATUS -BootMonFsCreateFile ( - IN BOOTMON_FS_INSTANCE *Instance, - OUT BOOTMON_FS_FILE **File - ) -{ - BOOTMON_FS_FILE *NewFile; - - NewFile = (BOOTMON_FS_FILE*)AllocateZeroPool (sizeof (BOOTMON_FS_FILE)); - if (NewFile == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - NewFile->Signature = BOOTMON_FS_FILE_SIGNATURE; - InitializeListHead (&NewFile->Link); - InitializeListHead (&NewFile->RegionToFlushLink); - NewFile->Instance = Instance; - - // If the created file is the root file then create a directory EFI_FILE_PROTOCOL - if (Instance->RootFile == *File) { - CopyMem (&NewFile->File, &mBootMonFsRootTemplate, sizeof (mBootMonFsRootTemplate)); - } else { - CopyMem (&NewFile->File, &mBootMonFsFileTemplate, sizeof (mBootMonFsFileTemplate)); - } - *File = NewFile; - return EFI_SUCCESS; -} - -STATIC -EFI_STATUS -SupportedDevicePathsInit ( - VOID - ) -{ - EFI_STATUS Status; - CHAR16* DevicePathListStr; - CHAR16* DevicePathStr; - CHAR16* NextDevicePathStr; - EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol; - EFI_DEVICE_PATH_PROTOCOL *Instance; - - Status = gBS->LocateProtocol (&gEfiDevicePathFromTextProtocolGuid, NULL, (VOID **)&EfiDevicePathFromTextProtocol); - ASSERT_EFI_ERROR (Status); - - // Initialize Variable - DevicePathListStr = (CHAR16*)PcdGetPtr (PcdBootMonFsSupportedDevicePaths); - mBootMonFsSupportedDevicePaths = NULL; - - // Extract the Device Path instances from the multi-device path string - while ((DevicePathListStr != NULL) && (DevicePathListStr[0] != L'\0')) { - NextDevicePathStr = StrStr (DevicePathListStr, L";"); - if (NextDevicePathStr == NULL) { - DevicePathStr = DevicePathListStr; - DevicePathListStr = NULL; - } else { - DevicePathStr = (CHAR16*)AllocateCopyPool ((NextDevicePathStr - DevicePathListStr + 1) * sizeof (CHAR16), DevicePathListStr); - if (DevicePathStr == NULL) { - return EFI_OUT_OF_RESOURCES; - } - *(DevicePathStr + (NextDevicePathStr - DevicePathListStr)) = L'\0'; - DevicePathListStr = NextDevicePathStr; - if (DevicePathListStr[0] == L';') { - DevicePathListStr++; - } - } - - Instance = EfiDevicePathFromTextProtocol->ConvertTextToDevicePath (DevicePathStr); - ASSERT (Instance != NULL); - mBootMonFsSupportedDevicePaths = AppendDevicePathInstance (mBootMonFsSupportedDevicePaths, Instance); - - if (NextDevicePathStr != NULL) { - FreePool (DevicePathStr); - } - FreePool (Instance); - } - - if (mBootMonFsSupportedDevicePaths == NULL) { - return EFI_UNSUPPORTED; - } else { - return EFI_SUCCESS; - } -} - -EFI_STATUS -EFIAPI -BootMonFsDriverSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL - ) -{ - EFI_DISK_IO_PROTOCOL *DiskIo; - EFI_DEVICE_PATH_PROTOCOL *DevicePathProtocol; - EFI_DEVICE_PATH_PROTOCOL *SupportedDevicePath; - EFI_DEVICE_PATH_PROTOCOL *SupportedDevicePaths; - EFI_STATUS Status; - UINTN Size1; - UINTN Size2; - - // - // Open the IO Abstraction(s) needed to perform the supported test - // - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiDiskIoProtocolGuid, - (VOID **) &DiskIo, - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - - if (EFI_ERROR (Status)) { - return Status; - } - // - // Close the I/O Abstraction(s) used to perform the supported test - // - gBS->CloseProtocol ( - ControllerHandle, - &gEfiDiskIoProtocolGuid, - gImageHandle, - ControllerHandle - ); - - // Check that BlockIo protocol instance exists - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiBlockIoProtocolGuid, - NULL, - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_TEST_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // Check if a DevicePath is attached to the handle - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - (VOID **)&DevicePathProtocol, - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // Check if the Device Path is the one which contains the Boot Monitor File System - Size1 = GetDevicePathSize (DevicePathProtocol); - - // Go through the list of Device Path Instances - Status = EFI_UNSUPPORTED; - SupportedDevicePaths = mBootMonFsSupportedDevicePaths; - while (SupportedDevicePaths != NULL) { - SupportedDevicePath = GetNextDevicePathInstance (&SupportedDevicePaths, &Size2); - - if ((Size1 == Size2) && (CompareMem (DevicePathProtocol, SupportedDevicePath, Size1) == 0)) { - // The Device Path is supported - Status = EFI_SUCCESS; - break; - } - } - - gBS->CloseProtocol (ControllerHandle, &gEfiDevicePathProtocolGuid, gImageHandle, ControllerHandle); - return Status; -} - -EFI_STATUS -EFIAPI -BootMonFsDriverStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, - IN EFI_HANDLE ControllerHandle, - IN EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL - ) -{ - BOOTMON_FS_INSTANCE *Instance; - EFI_STATUS Status; - UINTN VolumeNameSize; - EFI_FILE_INFO *Info; - - Instance = AllocateZeroPool (sizeof (BOOTMON_FS_INSTANCE)); - if (Instance == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - // Initialize the BlockIo of the Instance - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiBlockIoProtocolGuid, - (VOID **)&(Instance->BlockIo), - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - goto Error; - } - - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiDiskIoProtocolGuid, - (VOID **)&(Instance->DiskIo), - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_BY_DRIVER - ); - if (EFI_ERROR (Status)) { - goto Error; - } - - // - // Initialize the attributes of the Instance - // - Instance->Signature = BOOTMON_FS_SIGNATURE; - Instance->ControllerHandle = ControllerHandle; - Instance->Media = Instance->BlockIo->Media; - Instance->Binding = DriverBinding; - - // Initialize the Simple File System Protocol - Instance->Fs.Revision = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_REVISION; - Instance->Fs.OpenVolume = OpenBootMonFsOpenVolume; - - // Volume name + L' ' + '2' digit number - VolumeNameSize = StrSize (BOOTMON_FS_VOLUME_LABEL) + (3 * sizeof (CHAR16)); - - // Initialize FileSystem Information - Instance->FsInfo.Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + VolumeNameSize; - Instance->FsInfo.BlockSize = Instance->Media->BlockSize; - Instance->FsInfo.ReadOnly = FALSE; - Instance->FsInfo.VolumeSize = - Instance->Media->BlockSize * (Instance->Media->LastBlock - Instance->Media->LowestAlignedLba); - CopyMem (Instance->FsInfo.VolumeLabel, BOOTMON_FS_VOLUME_LABEL, StrSize (BOOTMON_FS_VOLUME_LABEL)); - - // Initialize the root file - Status = BootMonFsCreateFile (Instance, &Instance->RootFile); - if (EFI_ERROR (Status)) { - goto Error; - } - - Info = AllocateZeroPool (sizeof (EFI_FILE_INFO)); - if (Info == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Error; - } - Instance->RootFile->Info = Info; - - // Initialize the DevicePath of the Instance - Status = gBS->OpenProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - (VOID **)&(Instance->DevicePath), - gImageHandle, - ControllerHandle, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - goto Error; - } - - // - // Install the Simple File System Protocol - // - Status = gBS->InstallMultipleProtocolInterfaces ( - &ControllerHandle, - &gEfiSimpleFileSystemProtocolGuid, &Instance->Fs, - NULL - ); - if (EFI_ERROR (Status)) { - goto Error; - } - - InsertTailList (&mInstances, &Instance->Link); - - return EFI_SUCCESS; - -Error: - - if (Instance->RootFile != NULL) { - if (Instance->RootFile->Info != NULL) { - FreePool (Instance->RootFile->Info); - } - FreePool (Instance->RootFile); - } - FreePool (Instance); - - return Status; -} - - -EFI_STATUS -EFIAPI -BootMonFsDriverStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, - IN EFI_HANDLE ControllerHandle, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer OPTIONAL - ) -{ - BOOTMON_FS_INSTANCE *Instance; - LIST_ENTRY *Link; - EFI_STATUS Status; - BOOLEAN InstanceFound; - - // Find instance from ControllerHandle. - Instance = NULL; - InstanceFound = FALSE; - // For each instance in mInstances: - for (Link = GetFirstNode (&mInstances); !IsNull (&mInstances, Link); Link = GetNextNode (&mInstances, Link)) { - Instance = BOOTMON_FS_FROM_LINK (Link); - - if (Instance->ControllerHandle == ControllerHandle) { - InstanceFound = TRUE; - break; - } - } - ASSERT (InstanceFound == TRUE); - - gBS->CloseProtocol ( - ControllerHandle, - &gEfiDevicePathProtocolGuid, - DriverBinding->ImageHandle, - ControllerHandle); - - gBS->CloseProtocol ( - ControllerHandle, - &gEfiDiskIoProtocolGuid, - DriverBinding->ImageHandle, - ControllerHandle); - - gBS->CloseProtocol ( - ControllerHandle, - &gEfiBlockIoProtocolGuid, - DriverBinding->ImageHandle, - ControllerHandle); - - Status = gBS->UninstallMultipleProtocolInterfaces ( - &ControllerHandle, - &gEfiSimpleFileSystemProtocolGuid, &Instance->Fs, - NULL); - - FreePool (Instance->RootFile->Info); - FreePool (Instance->RootFile); - FreePool (Instance); - - return Status; -} - -// -// Simple Network Protocol Driver Global Variables -// -EFI_DRIVER_BINDING_PROTOCOL mBootMonFsDriverBinding = { - BootMonFsDriverSupported, - BootMonFsDriverStart, - BootMonFsDriverStop, - 0xa, - NULL, - NULL -}; - -EFI_STATUS -EFIAPI -BootMonFsEntryPoint ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - - InitializeListHead (&mInstances); - - // Initialize the list of Device Paths that could support BootMonFs - Status = SupportedDevicePathsInit (); - if (!EFI_ERROR (Status)) { - Status = gBS->InstallMultipleProtocolInterfaces ( - &ImageHandle, - &gEfiDriverBindingProtocolGuid, &mBootMonFsDriverBinding, - NULL - ); - ASSERT_EFI_ERROR (Status); - } else { - DEBUG((EFI_D_ERROR,"Warning: No Device Paths supporting BootMonFs have been defined in the PCD.\n")); - } - - return Status; -} diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsHw.h b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsHw.h deleted file mode 100644 index c1bef755aea0..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsHw.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __BOOTMON_FS_HW_H__ -#define __BOOTMON_FS_HW_H__ - -#define MAX_NAME_LENGTH 32 - -#define HW_IMAGE_FOOTER_SIGNATURE_1 0x464C5348 -#define HW_IMAGE_FOOTER_SIGNATURE_2 0x464F4F54 - -#define HW_IMAGE_FOOTER_VERSION 1 -#define HW_IMAGE_FOOTER_OFFSET 92 - -#define HW_IMAGE_FOOTER_VERSION2 2 -#define HW_IMAGE_FOOTER_OFFSET2 96 - -typedef struct { - CHAR8 Filename[MAX_NAME_LENGTH]; - UINT32 Offset; - UINT32 Version; - UINT32 FooterSignature1; - UINT32 FooterSignature2; -} HW_IMAGE_FOOTER; - -#define HW_IMAGE_DESCRIPTION_REGION_MAX 4 - -// This structure is located at the end of a block when a file is present -typedef struct { - UINT32 EntryPoint; - UINT32 Attributes; - UINT32 RegionCount; - struct { - UINT32 LoadAddress; - UINT32 Size; - UINT32 Offset; - UINT32 Checksum; - } Region[HW_IMAGE_DESCRIPTION_REGION_MAX]; - UINT32 BlockStart; - UINT32 BlockEnd; - UINT32 FooterChecksum; - - HW_IMAGE_FOOTER Footer; -} HW_IMAGE_DESCRIPTION; - -#endif diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsImages.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsImages.c deleted file mode 100644 index 346c360292eb..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsImages.c +++ /dev/null @@ -1,222 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include - -#include - -#include "BootMonFsInternal.h" - -UINT32 -BootMonFsChecksum ( - IN VOID *Data, - IN UINT32 Size - ) -{ - UINT32 *Ptr; - UINT32 Word; - UINT32 Checksum; - - ASSERT (Size % 4 == 0); - - Checksum = 0; - Ptr = (UINT32*)Data; - - while (Size > 0) { - Word = *Ptr++; - Size -= 4; - - if (Word > ~Checksum) { - Checksum++; - } - - Checksum += Word; - } - - return ~Checksum; -} - -EFI_STATUS -BootMonFsComputeFooterChecksum ( - IN OUT HW_IMAGE_DESCRIPTION *Footer - ) -{ - HW_IMAGE_DESCRIPTION *Description; - UINT32 Index; - - Footer->Attributes = 1; - - Description = AllocateZeroPool (sizeof (HW_IMAGE_DESCRIPTION)); - if (Description == NULL) { - DEBUG ((DEBUG_ERROR, "BootMonFsComputeFooterChecksum: Unable to allocate memory.\n")); - return EFI_OUT_OF_RESOURCES; - } - - // Copy over to temporary shim - CopyMem (Description, Footer, sizeof (HW_IMAGE_DESCRIPTION)); - - // BootMon doesn't checksum the previous checksum - Description->FooterChecksum = 0; - - // Blank out regions which aren't being used. - for (Index = Footer->RegionCount; Index < HW_IMAGE_DESCRIPTION_REGION_MAX; Index++) { - Description->Region[Index].Checksum = 0; - Description->Region[Index].LoadAddress = 0; - Description->Region[Index].Offset = 0; - Description->Region[Index].Size = 0; - } - - // Compute the checksum - Footer->FooterChecksum = BootMonFsChecksum (Description, sizeof (HW_IMAGE_DESCRIPTION)); - - FreePool (Description); - - return EFI_SUCCESS; -} - -BOOLEAN -BootMonFsIsImageValid ( - IN HW_IMAGE_DESCRIPTION *Desc, - IN EFI_LBA Lba - ) -{ - EFI_STATUS Status; - HW_IMAGE_FOOTER *Footer; - UINT32 Checksum; - - Footer = &Desc->Footer; - - // Check that the verification bytes are present - if ((Footer->FooterSignature1 != HW_IMAGE_FOOTER_SIGNATURE_1) || - (Footer->FooterSignature2 != HW_IMAGE_FOOTER_SIGNATURE_2)) { - return FALSE; - } - - if (Footer->Version == HW_IMAGE_FOOTER_VERSION) { - if (Footer->Offset != HW_IMAGE_FOOTER_OFFSET) { - return FALSE; - } - } else if (Footer->Version == HW_IMAGE_FOOTER_VERSION2) { - if (Footer->Offset != HW_IMAGE_FOOTER_OFFSET2) { - return FALSE; - } - } else { - return FALSE; - } - - Checksum = Desc->FooterChecksum; - Status = BootMonFsComputeFooterChecksum (Desc); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "Warning: failed to compute checksum for image '%a'\n", Desc->Footer.Filename)); - } - - if (Desc->FooterChecksum != Checksum) { - DEBUG ((DEBUG_ERROR, "Warning: image '%a' checksum mismatch.\n", Desc->Footer.Filename)); - } - - if ((Desc->BlockEnd != Lba) || (Desc->BlockStart > Desc->BlockEnd)) { - return FALSE; - } - - return TRUE; -} - -STATIC -EFI_STATUS -BootMonFsDiscoverNextImage ( - IN BOOTMON_FS_INSTANCE *Instance, - IN OUT EFI_LBA *LbaStart, - IN OUT BOOTMON_FS_FILE *File - ) -{ - EFI_DISK_IO_PROTOCOL *DiskIo; - EFI_LBA CurrentLba; - UINT64 DescOffset; - EFI_STATUS Status; - - DiskIo = Instance->DiskIo; - - CurrentLba = *LbaStart; - - // Look for images in the rest of this block - while (CurrentLba <= Instance->Media->LastBlock) { - // Work out the byte offset into media of the image description in this block - // If present, the image description is at the very end of the block. - DescOffset = ((CurrentLba + 1) * Instance->Media->BlockSize) - sizeof (HW_IMAGE_DESCRIPTION); - - // Read the image description from media - Status = DiskIo->ReadDisk (DiskIo, - Instance->Media->MediaId, - DescOffset, - sizeof (HW_IMAGE_DESCRIPTION), - &File->HwDescription - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // If we found a valid image description... - if (BootMonFsIsImageValid (&File->HwDescription, (CurrentLba - Instance->Media->LowestAlignedLba))) { - DEBUG ((EFI_D_ERROR, "Found image: %a in block %d.\n", - &(File->HwDescription.Footer.Filename), - (UINTN)(CurrentLba - Instance->Media->LowestAlignedLba) - )); - File->HwDescAddress = DescOffset; - - *LbaStart = CurrentLba + 1; - return EFI_SUCCESS; - } else { - CurrentLba++; - } - } - - *LbaStart = CurrentLba; - return EFI_NOT_FOUND; -} - -EFI_STATUS -BootMonFsInitialize ( - IN BOOTMON_FS_INSTANCE *Instance - ) -{ - EFI_STATUS Status; - EFI_LBA Lba; - UINT32 ImageCount; - BOOTMON_FS_FILE *NewFile; - - ImageCount = 0; - Lba = 0; - - while (1) { - Status = BootMonFsCreateFile (Instance, &NewFile); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = BootMonFsDiscoverNextImage (Instance, &Lba, NewFile); - if (EFI_ERROR (Status)) { - // Free NewFile allocated by BootMonFsCreateFile () - FreePool (NewFile); - break; - } - InsertTailList (&Instance->RootFile->Link, &NewFile->Link); - ImageCount++; - } - - Instance->Initialized = TRUE; - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsInternal.h b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsInternal.h deleted file mode 100644 index c0c6599cb707..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsInternal.h +++ /dev/null @@ -1,101 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __BOOTMONFS_INTERNAL_H__ -#define __BOOTMONFS_INTERNAL_H__ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "BootMonFsHw.h" - -#define BOOTMON_FS_VOLUME_LABEL L"NOR Flash" - -typedef struct _BOOTMON_FS_INSTANCE BOOTMON_FS_INSTANCE; - -typedef struct { - LIST_ENTRY Link; - VOID* Buffer; - UINTN Size; - UINT64 Offset; // Offset from the start of the file -} BOOTMON_FS_FILE_REGION; - -typedef struct { - UINT32 Signature; - LIST_ENTRY Link; - BOOTMON_FS_INSTANCE *Instance; - - UINTN HwDescAddress; - HW_IMAGE_DESCRIPTION HwDescription; - - EFI_FILE_PROTOCOL File; - - // - // The following fields are relevant only if the file is open. - // - - EFI_FILE_INFO *Info; - UINT64 Position; - // If the file needs to be flushed then this list contain the memory - // buffer that creates this file - LIST_ENTRY RegionToFlushLink; - UINT64 OpenMode; -} BOOTMON_FS_FILE; - -#define BOOTMON_FS_FILE_SIGNATURE SIGNATURE_32('b', 'o', 't', 'f') -#define BOOTMON_FS_FILE_FROM_FILE_THIS(a) CR (a, BOOTMON_FS_FILE, File, BOOTMON_FS_FILE_SIGNATURE) -#define BOOTMON_FS_FILE_FROM_LINK_THIS(a) CR (a, BOOTMON_FS_FILE, Link, BOOTMON_FS_FILE_SIGNATURE) - -struct _BOOTMON_FS_INSTANCE { - UINT32 Signature; - EFI_HANDLE ControllerHandle; - - LIST_ENTRY Link; - - EFI_DRIVER_BINDING_PROTOCOL *Binding; - EFI_DISK_IO_PROTOCOL *DiskIo; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - EFI_BLOCK_IO_MEDIA *Media; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - - EFI_SIMPLE_FILE_SYSTEM_PROTOCOL Fs; - - EFI_FILE_SYSTEM_INFO FsInfo; - CHAR16 Label[20]; - - BOOTMON_FS_FILE *RootFile; // All the other files are linked to this root - BOOLEAN Initialized; -}; - -#define BOOTMON_FS_SIGNATURE SIGNATURE_32('b', 'o', 't', 'm') -#define BOOTMON_FS_FROM_FS_THIS(a) CR (a, BOOTMON_FS_INSTANCE, Fs, BOOTMON_FS_SIGNATURE) -#define BOOTMON_FS_FROM_LINK(a) CR (a, BOOTMON_FS_INSTANCE, Link, BOOTMON_FS_SIGNATURE) - -#include "BootMonFsApi.h" - -#endif - diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsOpenClose.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsOpenClose.c deleted file mode 100644 index ae10055255ff..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsOpenClose.c +++ /dev/null @@ -1,795 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2015, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include "BootMonFsInternal.h" - -// Clear a file's image description on storage media: -// UEFI allows you to seek past the end of a file, a subsequent write will grow -// the file. It does not specify how space between the former end of the file -// and the beginning of the write should be filled. It's therefore possible that -// BootMonFs metadata, that comes after the end of a file, could be left there -// and wrongly detected by BootMonFsImageInBlock. -STATIC -EFI_STATUS -InvalidateImageDescription ( - IN BOOTMON_FS_FILE *File - ) -{ - EFI_DISK_IO_PROTOCOL *DiskIo; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - UINT32 MediaId; - VOID *Buffer; - EFI_STATUS Status; - - DiskIo = File->Instance->DiskIo; - BlockIo = File->Instance->BlockIo; - MediaId = BlockIo->Media->MediaId; - - Buffer = AllocateZeroPool (sizeof (HW_IMAGE_DESCRIPTION)); - - if (Buffer == NULL) { - return EFI_OUT_OF_RESOURCES; - } - - Status = DiskIo->WriteDisk (DiskIo, - MediaId, - File->HwDescAddress, - sizeof (HW_IMAGE_DESCRIPTION), - Buffer - ); - - FreePool(Buffer); - - return Status; -} - -/** - Write the description of a file to storage media. - - This function uses DiskIo to write to the media, so call BlockIo->FlushBlocks() - after calling it to ensure the data are written on the media. - - @param[in] File Description of the file whose description on the - storage media has to be updated. - @param[in] FileName Name of the file. Its length is assumed to be - lower than MAX_NAME_LENGTH. - @param[in] DataSize Number of data bytes of the file. - @param[in] FileStart File's starting position on media. FileStart must - be aligned to the media's block size. - - @retval EFI_WRITE_PROTECTED The device cannot be written to. - @retval EFI_DEVICE_ERROR The device reported an error while performing - the write operation. - -**/ -STATIC -EFI_STATUS -WriteFileDescription ( - IN BOOTMON_FS_FILE *File, - IN CHAR8 *FileName, - IN UINT32 DataSize, - IN UINT64 FileStart - ) -{ - EFI_STATUS Status; - EFI_DISK_IO_PROTOCOL *DiskIo; - UINTN BlockSize; - UINT32 FileSize; - HW_IMAGE_DESCRIPTION *Description; - - DiskIo = File->Instance->DiskIo; - BlockSize = File->Instance->BlockIo->Media->BlockSize; - ASSERT (FileStart % BlockSize == 0); - - // - // Construct the file description - // - - FileSize = DataSize + sizeof (HW_IMAGE_DESCRIPTION); - Description = &File->HwDescription; - Description->Attributes = 1; - Description->BlockStart = FileStart / BlockSize; - Description->BlockEnd = Description->BlockStart + (FileSize / BlockSize); - AsciiStrCpyS (Description->Footer.Filename, - sizeof Description->Footer.Filename, FileName); - -#ifdef MDE_CPU_ARM - Description->Footer.Offset = HW_IMAGE_FOOTER_OFFSET; - Description->Footer.Version = HW_IMAGE_FOOTER_VERSION; -#else - Description->Footer.Offset = HW_IMAGE_FOOTER_OFFSET2; - Description->Footer.Version = HW_IMAGE_FOOTER_VERSION2; -#endif - Description->Footer.FooterSignature1 = HW_IMAGE_FOOTER_SIGNATURE_1; - Description->Footer.FooterSignature2 = HW_IMAGE_FOOTER_SIGNATURE_2; - Description->RegionCount = 1; - Description->Region[0].Checksum = 0; - Description->Region[0].Offset = Description->BlockStart * BlockSize; - Description->Region[0].Size = DataSize; - - Status = BootMonFsComputeFooterChecksum (Description); - if (EFI_ERROR (Status)) { - return Status; - } - - File->HwDescAddress = ((Description->BlockEnd + 1) * BlockSize) - sizeof (HW_IMAGE_DESCRIPTION); - - // Update the file description on the media - Status = DiskIo->WriteDisk ( - DiskIo, - File->Instance->Media->MediaId, - File->HwDescAddress, - sizeof (HW_IMAGE_DESCRIPTION), - Description - ); - ASSERT_EFI_ERROR (Status); - - return Status; -} - -// Find a space on media for a file that has not yet been flushed to disk. -// Just returns the first space that's big enough. -// This function could easily be adapted to: -// - Find space for moving an existing file that has outgrown its space -// (We do not currently move files, just return EFI_VOLUME_FULL) -// - Find space for a fragment of a file that has outgrown its space -// (We do not currently fragment files - it's not clear whether fragmentation -// is actually part of BootMonFs as there is no spec) -// - Be more clever about finding space (choosing the largest or smallest -// suitable space) -// Parameters: -// File - the new (not yet flushed) file for which we need to find space. -// FileStart - the position on media of the file (in bytes). -STATIC -EFI_STATUS -BootMonFsFindSpaceForNewFile ( - IN BOOTMON_FS_FILE *File, - IN UINT64 FileSize, - OUT UINT64 *FileStart - ) -{ - LIST_ENTRY *FileLink; - BOOTMON_FS_FILE *RootFile; - BOOTMON_FS_FILE *FileEntry; - UINTN BlockSize; - EFI_BLOCK_IO_MEDIA *Media; - - Media = File->Instance->BlockIo->Media; - BlockSize = Media->BlockSize; - RootFile = File->Instance->RootFile; - - // This function must only be called for file which has not been flushed into - // Flash yet - ASSERT (File->HwDescription.RegionCount == 0); - - *FileStart = 0; - // Go through all the files in the list - for (FileLink = GetFirstNode (&RootFile->Link); - !IsNull (&RootFile->Link, FileLink); - FileLink = GetNextNode (&RootFile->Link, FileLink) - ) - { - FileEntry = BOOTMON_FS_FILE_FROM_LINK_THIS (FileLink); - // Skip files that aren't on disk yet - if (FileEntry->HwDescription.RegionCount == 0) { - continue; - } - - // If the free space preceding the file is big enough to contain the new - // file then use it! - if (((FileEntry->HwDescription.BlockStart * BlockSize) - *FileStart) - >= FileSize) { - // The file list must be in disk-order - RemoveEntryList (&File->Link); - File->Link.BackLink = FileLink->BackLink; - File->Link.ForwardLink = FileLink; - FileLink->BackLink->ForwardLink = &File->Link; - FileLink->BackLink = &File->Link; - - return EFI_SUCCESS; - } else { - *FileStart = (FileEntry->HwDescription.BlockEnd + 1) * BlockSize; - } - } - // See if there's space after the last file - if ((((Media->LastBlock + 1) * BlockSize) - *FileStart) >= FileSize) { - return EFI_SUCCESS; - } else { - return EFI_VOLUME_FULL; - } -} - -// Free the resources in the file's Region list. -STATIC -VOID -FreeFileRegions ( - IN BOOTMON_FS_FILE *File - ) -{ - LIST_ENTRY *RegionToFlushLink; - BOOTMON_FS_FILE_REGION *Region; - - RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink); - while (!IsNull (&File->RegionToFlushLink, RegionToFlushLink)) { - // Repeatedly remove the first node from the list and free its resources. - Region = (BOOTMON_FS_FILE_REGION *) RegionToFlushLink; - RemoveEntryList (RegionToFlushLink); - FreePool (Region->Buffer); - FreePool (Region); - - RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink); - } -} - -/** - Flush all modified data associated with a file to a device. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the - file handle to flush. - - @retval EFI_SUCCESS The data was flushed. - @retval EFI_ACCESS_DENIED The file was opened read-only. - @retval EFI_DEVICE_ERROR The device reported an error. - @retval EFI_VOLUME_FULL The volume is full. - @retval EFI_OUT_OF_RESOURCES Not enough resources were available to flush the data. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsFlushFile ( - IN EFI_FILE_PROTOCOL *This - ) -{ - EFI_STATUS Status; - BOOTMON_FS_INSTANCE *Instance; - EFI_FILE_INFO *Info; - EFI_BLOCK_IO_PROTOCOL *BlockIo; - EFI_BLOCK_IO_MEDIA *Media; - EFI_DISK_IO_PROTOCOL *DiskIo; - UINTN BlockSize; - CHAR8 AsciiFileName[MAX_NAME_LENGTH]; - LIST_ENTRY *RegionToFlushLink; - BOOTMON_FS_FILE *File; - BOOTMON_FS_FILE *NextFile; - BOOTMON_FS_FILE_REGION *Region; - LIST_ENTRY *FileLink; - UINTN CurrentPhysicalSize; - UINT64 FileStart; - UINT64 FileEnd; - UINT64 RegionStart; - UINT64 RegionEnd; - UINT64 NewDataSize; - UINT64 NewFileSize; - UINT64 EndOfAppendSpace; - BOOLEAN HasSpace; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (File->OpenMode == EFI_FILE_MODE_READ) { - return EFI_ACCESS_DENIED; - } - - Instance = File->Instance; - Info = File->Info; - BlockIo = Instance->BlockIo; - Media = BlockIo->Media; - DiskIo = Instance->DiskIo; - BlockSize = Media->BlockSize; - - UnicodeStrToAsciiStrS (Info->FileName, AsciiFileName, MAX_NAME_LENGTH); - - // If the file doesn't exist then find a space for it - if (File->HwDescription.RegionCount == 0) { - Status = BootMonFsFindSpaceForNewFile ( - File, - Info->FileSize + sizeof (HW_IMAGE_DESCRIPTION), - &FileStart - ); - if (EFI_ERROR (Status)) { - return Status; - } - } else { - FileStart = File->HwDescription.BlockStart * BlockSize; - } - // FileEnd is the current NOR address of the end of the file's data - FileEnd = FileStart + File->HwDescription.Region[0].Size; - - for (RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink); - !IsNull (&File->RegionToFlushLink, RegionToFlushLink); - RegionToFlushLink = GetNextNode (&File->RegionToFlushLink, RegionToFlushLink) - ) - { - Region = (BOOTMON_FS_FILE_REGION*)RegionToFlushLink; - if (Region->Size == 0) { - continue; - } - - // RegionStart and RegionEnd are the the intended NOR address of the - // start and end of the region - RegionStart = FileStart + Region->Offset; - RegionEnd = RegionStart + Region->Size; - - if (RegionEnd < FileEnd) { - // Handle regions representing edits to existing portions of the file - // Write the region data straight into the file - Status = DiskIo->WriteDisk (DiskIo, - Media->MediaId, - RegionStart, - Region->Size, - Region->Buffer - ); - if (EFI_ERROR (Status)) { - return Status; - } - } else { - // Handle regions representing appends to the file - // - // Note: Since seeking past the end of the file with SetPosition() is - // valid, it's possible there will be a gap between the current end of - // the file and the beginning of the new region. Since the UEFI spec - // says nothing about this case (except "a subsequent write would grow - // the file"), we just leave garbage in the gap. - - // Check if there is space to append the new region - HasSpace = FALSE; - NewDataSize = RegionEnd - FileStart; - NewFileSize = NewDataSize + sizeof (HW_IMAGE_DESCRIPTION); - CurrentPhysicalSize = BootMonFsGetPhysicalSize (File); - if (NewFileSize <= CurrentPhysicalSize) { - HasSpace = TRUE; - } else { - // Get the File Description for the next file - FileLink = GetNextNode (&Instance->RootFile->Link, &File->Link); - if (!IsNull (&Instance->RootFile->Link, FileLink)) { - NextFile = BOOTMON_FS_FILE_FROM_LINK_THIS (FileLink); - - // If there is space between the beginning of the current file and the - // beginning of the next file then use it - EndOfAppendSpace = NextFile->HwDescription.BlockStart * BlockSize; - } else { - // We are flushing the last file. - EndOfAppendSpace = (Media->LastBlock + 1) * BlockSize; - } - if (EndOfAppendSpace - FileStart >= NewFileSize) { - HasSpace = TRUE; - } - } - - if (HasSpace == TRUE) { - // Invalidate the current image description of the file if any. - if (File->HwDescAddress != 0) { - Status = InvalidateImageDescription (File); - if (EFI_ERROR (Status)) { - return Status; - } - } - - // Write the new file data - Status = DiskIo->WriteDisk ( - DiskIo, - Media->MediaId, - RegionStart, - Region->Size, - Region->Buffer - ); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = WriteFileDescription (File, AsciiFileName, NewDataSize, FileStart); - if (EFI_ERROR (Status)) { - return Status; - } - - } else { - // There isn't a space for the file. - // Options here are to move the file or fragment it. However as files - // may represent boot images at fixed positions, these options will - // break booting if the bootloader doesn't use BootMonFs to find the - // image. - - return EFI_VOLUME_FULL; - } - } - } - - FreeFileRegions (File); - Info->PhysicalSize = BootMonFsGetPhysicalSize (File); - - if ((AsciiStrCmp (AsciiFileName, File->HwDescription.Footer.Filename) != 0) || - (Info->FileSize != File->HwDescription.Region[0].Size) ) { - Status = WriteFileDescription (File, AsciiFileName, Info->FileSize, FileStart); - if (EFI_ERROR (Status)) { - return Status; - } - } - - // Flush DiskIo Buffers (see UEFI Spec 12.7 - DiskIo buffers are flushed by - // calling FlushBlocks on the same device's BlockIo). - BlockIo->FlushBlocks (BlockIo); - - return EFI_SUCCESS; -} - -/** - Close a specified file handle. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the file - handle to close. - - @retval EFI_SUCCESS The file was closed. - @retval EFI_INVALID_PARAMETER The parameter "This" is NULL or is not an open - file handle. - -**/ -EFIAPI -EFI_STATUS -BootMonFsCloseFile ( - IN EFI_FILE_PROTOCOL *This - ) -{ - BOOTMON_FS_FILE *File; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - // In the case of a file and not the root directory - if (This != &File->Instance->RootFile->File) { - This->Flush (This); - FreePool (File->Info); - File->Info = NULL; - } - - return EFI_SUCCESS; -} - -/** - Open a file on the boot monitor file system. - - The boot monitor file system does not allow for sub-directories. There is only - one directory, the root one. On any attempt to create a directory, the function - returns in error with the EFI_WRITE_PROTECTED error code. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to source location. - @param[out] NewHandle A pointer to the location to return the opened - handle for the new file. - @param[in] FileName The Null-terminated string of the name of the file - to be opened. - @param[in] OpenMode The mode to open the file : Read or Read/Write or - Read/Write/Create - @param[in] Attributes Attributes of the file in case of a file creation - - @retval EFI_SUCCESS The file was open. - @retval EFI_NOT_FOUND The specified file could not be found or the specified - directory in which to create a file could not be found. - @retval EFI_DEVICE_ERROR The device reported an error. - @retval EFI_WRITE_PROTECTED Attempt to create a directory. This is not possible - with the Boot Monitor file system. - @retval EFI_OUT_OF_RESOURCES Not enough resources were available to open the file. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsOpenFile ( - IN EFI_FILE_PROTOCOL *This, - OUT EFI_FILE_PROTOCOL **NewHandle, - IN CHAR16 *FileName, - IN UINT64 OpenMode, - IN UINT64 Attributes - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE *Directory; - BOOTMON_FS_FILE *File; - BOOTMON_FS_INSTANCE *Instance; - CHAR8 *Buf; - CHAR16 *Path; - CHAR16 *Separator; - CHAR8 *AsciiFileName; - EFI_FILE_INFO *Info; - UINTN AsciiFileNameSize; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - - Directory = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (Directory->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if ((FileName == NULL) || (NewHandle == NULL)) { - return EFI_INVALID_PARAMETER; - } - - // - // The only valid modes are read, read/write, and read/write/create - // - if ( (OpenMode != EFI_FILE_MODE_READ) && - (OpenMode != (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE)) && - (OpenMode != (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE)) ) { - return EFI_INVALID_PARAMETER; - } - - Instance = Directory->Instance; - - // - // If the instance has not been initialized yet then do it ... - // - if (!Instance->Initialized) { - Status = BootMonFsInitialize (Instance); - if (EFI_ERROR (Status)) { - return Status; - } - } - - // - // Copy the file path to be able to work on it. We do not want to - // modify the input file name string "FileName". - // - Buf = AllocateCopyPool (StrSize (FileName), FileName); - if (Buf == NULL) { - return EFI_OUT_OF_RESOURCES; - } - Path = (CHAR16*)Buf; - AsciiFileName = NULL; - Info = NULL; - - // - // Handle single periods, double periods and convert forward slashes '/' - // to backward '\' ones. Does not handle a '.' at the beginning of the - // path for the time being. - // - if (PathCleanUpDirectories (Path) == NULL) { - Status = EFI_INVALID_PARAMETER; - goto Error; - } - - // - // Detect if the first component of the path refers to a directory. - // This is done to return the correct error code when trying to - // access or create a directory other than the root directory. - // - - // - // Search for the '\\' sequence and if found return in error - // with the EFI_INVALID_PARAMETER error code. ere in the path. - // - if (StrStr (Path, L"\\\\") != NULL) { - Status = EFI_INVALID_PARAMETER; - goto Error; - } - // - // Get rid of the leading '\' if any. - // - Path += (Path[0] == L'\\'); - - // - // Look for a '\' in the file path. If one is found then - // the first component of the path refers to a directory - // that is not the root directory. - // - Separator = StrStr (Path, L"\\"); - if (Separator != NULL) { - // - // In the case '\' and a creation, return - // EFI_WRITE_PROTECTED if this is for a directory - // creation, EFI_INVALID_PARAMETER otherwise. - // - if ((*(Separator + 1) == '\0') && ((OpenMode & EFI_FILE_MODE_CREATE) != 0)) { - if (Attributes & EFI_FILE_DIRECTORY) { - Status = EFI_WRITE_PROTECTED; - } else { - Status = EFI_INVALID_PARAMETER; - } - } else { - // - // Attempt to open a file or a directory that is not in the - // root directory or to open without creation a directory - // located in the root directory, returns EFI_NOT_FOUND. - // - Status = EFI_NOT_FOUND; - } - goto Error; - } - - // - // BootMonFs interface requires ASCII filenames - // - AsciiFileNameSize = StrLen (Path) + 1; - if (AsciiFileNameSize > MAX_NAME_LENGTH) { - AsciiFileNameSize = MAX_NAME_LENGTH; - } - AsciiFileName = AllocatePool (AsciiFileNameSize); - if (AsciiFileName == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Error; - } - UnicodeStrToAsciiStrS (Path, AsciiFileName, AsciiFileNameSize); - - if ((AsciiFileName[0] == '\0') || - (AsciiFileName[0] == '.' ) ) { - // - // Opening the root directory - // - - *NewHandle = &Instance->RootFile->File; - Instance->RootFile->Position = 0; - Status = EFI_SUCCESS; - } else { - - if ((OpenMode & EFI_FILE_MODE_CREATE) && - (Attributes & EFI_FILE_DIRECTORY) ) { - Status = EFI_WRITE_PROTECTED; - goto Error; - } - - // - // Allocate a buffer to store the characteristics of the file while the - // file is open. We allocate the maximum size to not have to reallocate - // if the file name is changed. - // - Info = AllocateZeroPool ( - SIZE_OF_EFI_FILE_INFO + (sizeof (CHAR16) * MAX_NAME_LENGTH)); - if (Info == NULL) { - Status = EFI_OUT_OF_RESOURCES; - goto Error; - } - - // - // Open or create a file in the root directory. - // - - Status = BootMonGetFileFromAsciiFileName (Instance, AsciiFileName, &File); - if (Status == EFI_NOT_FOUND) { - if ((OpenMode & EFI_FILE_MODE_CREATE) == 0) { - goto Error; - } - - Status = BootMonFsCreateFile (Instance, &File); - if (EFI_ERROR (Status)) { - goto Error; - } - InsertHeadList (&Instance->RootFile->Link, &File->Link); - Info->Attribute = Attributes; - } else { - // - // File already open, not supported yet. - // - if (File->Info != NULL) { - Status = EFI_UNSUPPORTED; - goto Error; - } - } - - Info->FileSize = BootMonFsGetImageLength (File); - Info->PhysicalSize = BootMonFsGetPhysicalSize (File); - AsciiStrToUnicodeStrS (AsciiFileName, Info->FileName, MAX_NAME_LENGTH); - - File->Info = Info; - Info = NULL; - File->Position = 0; - File->OpenMode = OpenMode; - - *NewHandle = &File->File; - } - -Error: - - FreePool (Buf); - if (AsciiFileName != NULL) { - FreePool (AsciiFileName); - } - if (Info != NULL) { - FreePool (Info); - } - - return Status; -} - -// Delete() for the root directory's EFI_FILE_PROTOCOL instance -EFIAPI -EFI_STATUS -BootMonFsDeleteFail ( - IN EFI_FILE_PROTOCOL *This - ) -{ - This->Close(This); - // You can't delete the root directory - return EFI_WARN_DELETE_FAILURE; -} - -/** - Close and delete a file from the boot monitor file system. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is the file - handle to delete. - - @retval EFI_SUCCESS The file was closed and deleted. - @retval EFI_INVALID_PARAMETER The parameter "This" is NULL or is not an open - file handle. - @retval EFI_WARN_DELETE_FAILURE The handle was closed, but the file was not deleted. - -**/ -EFIAPI -EFI_STATUS -BootMonFsDelete ( - IN EFI_FILE_PROTOCOL *This - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE *File; - LIST_ENTRY *RegionToFlushLink; - BOOTMON_FS_FILE_REGION *Region; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (!IsListEmpty (&File->RegionToFlushLink)) { - // Free the entries from the Buffer List - RegionToFlushLink = GetFirstNode (&File->RegionToFlushLink); - do { - Region = (BOOTMON_FS_FILE_REGION*)RegionToFlushLink; - - // - // Get next element of the list before deleting the region description - // that contain the LIST_ENTRY structure. - // - RegionToFlushLink = RemoveEntryList (RegionToFlushLink); - - // Free the buffers - FreePool (Region->Buffer); - FreePool (Region); - } while (!IsListEmpty (&File->RegionToFlushLink)); - } - - // If (RegionCount is greater than 0) then the file already exists - if (File->HwDescription.RegionCount > 0) { - // Invalidate the last Block - Status = InvalidateImageDescription (File); - ASSERT_EFI_ERROR (Status); - if (EFI_ERROR (Status)) { - return EFI_WARN_DELETE_FAILURE; - } - } - - // Remove the entry from the list - RemoveEntryList (&File->Link); - FreePool (File->Info); - FreePool (File); - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsReadWrite.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsReadWrite.c deleted file mode 100644 index f8124e95ac0c..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsReadWrite.c +++ /dev/null @@ -1,259 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include - -#include "BootMonFsInternal.h" - -/** - Read data from an open file. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle to read data from. - @param[in out] BufferSize On input, the size of the Buffer. On output, the - amount of data returned in Buffer. In both cases, - the size is measured in bytes. - @param[out] Buffer The buffer into which the data is read. - - @retval EFI_SUCCESS The data was read. - @retval EFI_DEVICE_ERROR On entry, the current file position is - beyond the end of the file, or the device - reported an error while performing the read - operation. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsReadFile ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - OUT VOID *Buffer - ) -{ - BOOTMON_FS_INSTANCE *Instance; - BOOTMON_FS_FILE *File; - EFI_DISK_IO_PROTOCOL *DiskIo; - EFI_BLOCK_IO_MEDIA *Media; - UINT64 FileStart; - EFI_STATUS Status; - UINTN RemainingFileSize; - - if ((This == NULL) || - (BufferSize == NULL) || - (Buffer == NULL) ) { - return EFI_INVALID_PARAMETER; - } - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - // Ensure the file has been written in Flash before reading it. - // This keeps the code simple and avoids having to manage a non-flushed file. - BootMonFsFlushFile (This); - - Instance = File->Instance; - DiskIo = Instance->DiskIo; - Media = Instance->Media; - FileStart = (Media->LowestAlignedLba + File->HwDescription.BlockStart) * Media->BlockSize; - - if (File->Position >= File->Info->FileSize) { - // The entire file has been read or the position has been - // set past the end of the file. - *BufferSize = 0; - if (File->Position > File->Info->FileSize) { - return EFI_DEVICE_ERROR; - } else { - return EFI_SUCCESS; - } - } - - // This driver assumes that the entire file is in region 0. - RemainingFileSize = File->Info->FileSize - File->Position; - - // If read would go past end of file, truncate the read - if (*BufferSize > RemainingFileSize) { - *BufferSize = RemainingFileSize; - } - - Status = DiskIo->ReadDisk ( - DiskIo, - Media->MediaId, - FileStart + File->Position, - *BufferSize, - Buffer - ); - if (EFI_ERROR (Status)) { - *BufferSize = 0; - } - - File->Position += *BufferSize; - - return Status; -} - -/** - Write data to an open file. - - The data is not written to the flash yet. It will be written when the file - will be either read, closed or flushed. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that - is the file handle to write data to. - @param[in out] BufferSize On input, the size of the Buffer. On output, the - size of the data actually written. In both cases, - the size is measured in bytes. - @param[in] Buffer The buffer of data to write. - - @retval EFI_SUCCESS The data was written. - @retval EFI_ACCESS_DENIED The file was opened read only. - @retval EFI_OUT_OF_RESOURCES Unable to allocate the buffer to store the - data to write. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsWriteFile ( - IN EFI_FILE_PROTOCOL *This, - IN OUT UINTN *BufferSize, - IN VOID *Buffer - ) -{ - BOOTMON_FS_FILE *File; - BOOTMON_FS_FILE_REGION *Region; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (File->OpenMode == EFI_FILE_MODE_READ) { - return EFI_ACCESS_DENIED; - } - - // Allocate and initialize the memory region - Region = (BOOTMON_FS_FILE_REGION*)AllocateZeroPool (sizeof (BOOTMON_FS_FILE_REGION)); - if (Region == NULL) { - *BufferSize = 0; - return EFI_OUT_OF_RESOURCES; - } - - Region->Buffer = AllocateCopyPool (*BufferSize, Buffer); - if (Region->Buffer == NULL) { - *BufferSize = 0; - FreePool (Region); - return EFI_OUT_OF_RESOURCES; - } - - Region->Size = *BufferSize; - Region->Offset = File->Position; - - InsertTailList (&File->RegionToFlushLink, &Region->Link); - - File->Position += *BufferSize; - - if (File->Position > File->Info->FileSize) { - File->Info->FileSize = File->Position; - } - - return EFI_SUCCESS; -} - -/** - Set a file's current position. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to set the requested position on. - @param[in] Position The byte position from the start of the file to set. - - @retval EFI_SUCCESS The position was set. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsSetPosition ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position - ) -{ - BOOTMON_FS_FILE *File; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - // - // UEFI Spec section 12.5: - // "Seeking to position 0xFFFFFFFFFFFFFFFF causes the current position to - // be set to the end of the file." - // - if (Position == 0xFFFFFFFFFFFFFFFF) { - Position = File->Info->FileSize; - } - - File->Position = Position; - - return EFI_SUCCESS; -} - -/** - Return a file's current position. - - @param[in] This A pointer to the EFI_FILE_PROTOCOL instance that is - the file handle to get the current position on. - @param[out] Position The address to return the file's current position value. - - @retval EFI_SUCCESS The position was returned. - @retval EFI_INVALID_PARAMETER At least one of the parameters is invalid. - -**/ -EFIAPI -EFI_STATUS -BootMonFsGetPosition ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position - ) -{ - BOOTMON_FS_FILE *File; - - if (This == NULL) { - return EFI_INVALID_PARAMETER; - } - File = BOOTMON_FS_FILE_FROM_FILE_THIS (This); - if (File->Info == NULL) { - return EFI_INVALID_PARAMETER; - } - - if (Position == NULL) { - return EFI_INVALID_PARAMETER; - } - - *Position = File->Position; - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsUnsupported.c b/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsUnsupported.c deleted file mode 100644 index 4ecc4ea008ea..000000000000 --- a/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFsUnsupported.c +++ /dev/null @@ -1,37 +0,0 @@ -/** @file -* -* Copyright (c) 2012-2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include "BootMonFsInternal.h" - -EFIAPI -EFI_STATUS -BootMonFsSetPositionUnsupported ( - IN EFI_FILE_PROTOCOL *This, - IN UINT64 Position - ) -{ - ASSERT(0); - return EFI_UNSUPPORTED; -} - -EFIAPI -EFI_STATUS -BootMonFsGetPositionUnsupported ( - IN EFI_FILE_PROTOCOL *This, - OUT UINT64 *Position - ) -{ - ASSERT(0); - return EFI_UNSUPPORTED; -} diff --git a/ArmPlatformPkg/Include/Guid/BootMonFsFileInfo.h b/ArmPlatformPkg/Include/Guid/BootMonFsFileInfo.h deleted file mode 100644 index c4d805c14f0e..000000000000 --- a/ArmPlatformPkg/Include/Guid/BootMonFsFileInfo.h +++ /dev/null @@ -1,47 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Ltd. All rights reserved. -* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT -* WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __BOOTMON_FS_FILE_INFO_H__ -#define __BOOTMON_FS_FILE_INFO_H__ - -#define BOOTMON_FS_FILE_INFO_ID \ - { \ - 0x41e26b9c, 0xada6, 0x45b3, {0x80, 0x8e, 0x23, 0x57, 0xa3, 0x5b, 0x60, 0xd6 } \ - } - -// From BootMonFS header file -#define BOOTMONFS_IMAGE_DESCRIPTION_REGION_MAX 4 - -typedef struct { - // The size of the structure. - UINT64 Size; - - // Subset of properties stored in the file meta-data. - UINT32 EntryPoint; - UINT32 RegionCount; - struct { - UINT32 LoadAddress; - UINT32 Size; - UINT32 Offset; - UINT32 Checksum; - } Region[BOOTMONFS_IMAGE_DESCRIPTION_REGION_MAX]; - -} BOOTMON_FS_FILE_INFO; - -#define SIZE_OF_BOOTMON_FS_FILE_INFO \ - OFFSET_OF (BOOTMON_FS_FILE_INFO, Region[BOOTMONFS_IMAGE_DESCRIPTION_REGION_MAX - 1].Checksum) - -extern EFI_GUID gArmBootMonFsFileInfoGuid; - -#endif // __BOOTMON_FS_FILE_INFO_H__ diff --git a/ArmPlatformPkg/Include/Library/ArmShellCmdLib.h b/ArmPlatformPkg/Include/Library/ArmShellCmdLib.h deleted file mode 100644 index eb31cd405338..000000000000 --- a/ArmPlatformPkg/Include/Library/ArmShellCmdLib.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file -* -* Definitions for the Dynamic Shell command library -* -* Copyright (C) 2014, ARM Ltd -* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT -* WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef _ARM_SHELL_CMD_LIB_H_ -#define _ARM_SHELL_CMD_LIB_H_ - -/** - - Initialize and Install EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL for RunAxf command. - - @param[in] ImageHandle Handle the protocol should be attached to. - - @retval EFI_SUCCESS The command has been installed successfully. - - @retval EFI_UNSUPPORTED Help for the command failed to initialise. - - @return Status code returned by InstallProtocolInterface - Boot Service function. - -**/ -EFI_STATUS -ShellDynCmdRunAxfInstall ( - IN EFI_HANDLE ImageHandle - ); - -/** - - Uninstall the RunAxf Command - - @param[in] ImageHandle Handle of the device where the protocol should have - been installed. - - @retval EFI_SUCCESS The device has been un-initialized successfully. - - @return Status code returned by UninstallProtocolInterface - Boot Service function. - -**/ -EFI_STATUS -ShellDynCmdRunAxfUninstall ( - IN EFI_HANDLE ImageHandle - ); - -#endif // _ARM_SHELL_CMD_LIB_H_ diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.c b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.c deleted file mode 100644 index 67bbb9e86334..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.c +++ /dev/null @@ -1,95 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Ltd. All rights reserved.
-* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include - -#include -#include -#include -#include - -#include "ArmShellCmdRunAxf.h" - -EFI_HANDLE gRunAxfHiiHandle = NULL; - -#define RUNAXF_HII_GUID \ - { \ - 0xf5a6413b, 0x78d5, 0x448e, { 0xa2, 0x15, 0x22, 0x82, 0x8e, 0xbc, 0x61, 0x61 } \ - } - -EFI_GUID gRunAxfHiiGuid = RUNAXF_HII_GUID; - -static EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mShellDynCmdProtocolRunAxf = { - L"runaxf", // *CommandName - ShellDynCmdRunAxfHandler, // Handler - ShellDynCmdRunAxfGetHelp // GetHelp -}; - -EFI_STATUS -ShellDynCmdRunAxfInstall ( - IN EFI_HANDLE ImageHandle - ) -{ - EFI_STATUS Status; - - // Register our shell command - Status = gBS->InstallMultipleProtocolInterfaces (&ImageHandle, - &gEfiShellDynamicCommandProtocolGuid, - &mShellDynCmdProtocolRunAxf, - NULL); - if (EFI_ERROR (Status)) { - return Status; - } - - // Load the manual page for our command - // - // 3rd parameter 'HII strings array' must be name of .uni strings file - // followed by 'Strings', e.g. mycommands.uni must be specified as - // 'mycommandsStrings' because the build Autogen process defines this as a - // string array for the strings in your .uni file. Examine your Build folder - // under your package's DEBUG folder and you will find it defined in a - // xxxStrDefs.h file. - // - gRunAxfHiiHandle = HiiAddPackages (&gRunAxfHiiGuid, ImageHandle, - ArmShellCmdRunAxfStrings, NULL); - if (gRunAxfHiiHandle == NULL) { - return EFI_UNSUPPORTED; - } - - return EFI_SUCCESS; -} - - -EFI_STATUS -ShellDynCmdRunAxfUninstall ( - IN EFI_HANDLE ImageHandle - ) -{ - - EFI_STATUS Status; - - if (gRunAxfHiiHandle != NULL) { - HiiRemovePackages (gRunAxfHiiHandle); - } - - Status = gBS->UninstallMultipleProtocolInterfaces (ImageHandle, - &gEfiShellDynamicCommandProtocolGuid, - &mShellDynCmdProtocolRunAxf, - NULL); - if (EFI_ERROR (Status)) { - return Status; - } - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.h deleted file mode 100644 index 2708b53cc172..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.h +++ /dev/null @@ -1,83 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Ltd. All rights reserved.
-* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __ARM_SHELL_CMD_RUNAXF__ -#define __ARM_SHELL_CMD_RUNAXF__ - -#include -#include - -#include -#include -#include - -extern EFI_GUID gRunAxfHiiGuid; -extern EFI_HANDLE gRunAxfHiiHandle; -extern EFI_HANDLE gRunAxfImageHandle; - -// List of data segments to load to memory from AXF/ELF file. -typedef struct { - LIST_ENTRY Link; // This attribute must be the first entry of this - // structure (to avoid pointer computation) - UINTN MemOffset; // Where the data should go, Dest - UINTN FileOffset; // Where the data is from, Src - BOOLEAN Zeroes; // A section of Zeroes. Like .bss in ELF - UINTN Length; // Number of bytes. -} RUNAXF_LOAD_LIST; - - -/** - This is the shell command handler function pointer callback type. This - function handles the command when it is invoked in the shell. - - @param[in] This The instance of the - EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. - @param[in] SystemTable The pointer to the system table. - @param[in] ShellParameters The parameters associated with the command. - @param[in] Shell The instance of the shell protocol used in the - context of processing this command. - - @return EFI_SUCCESS The operation was successful. - @return other The operation failed. -**/ -SHELL_STATUS -EFIAPI -ShellDynCmdRunAxfHandler ( - IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, - IN EFI_SYSTEM_TABLE *SystemTable, - IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters, - IN EFI_SHELL_PROTOCOL *Shell - ); - - -/** - This is the command help handler function pointer callback type. This - function is responsible for displaying help information for the associated - command. - - @param[in] This The instance of the - EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. - @param[in] Language The pointer to the language string to use. - - @return string Pool allocated help string, must be freed by - caller. -**/ -CHAR16* -EFIAPI -ShellDynCmdRunAxfGetHelp ( - IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, - IN CONST CHAR8 *Language - ); - -#endif //__ARM_SHELL_CMD_RUNAXF__ diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.inf b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.inf deleted file mode 100644 index 7d15f6934608..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.inf +++ /dev/null @@ -1,54 +0,0 @@ -## @file -# -# Copyright (c) 2014, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials are licensed and made available -# under the terms and conditions of the BSD License which accompanies this -# distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -## - -[Defines] - INF_VERSION = 0x00010006 - BASE_NAME = ArmShellCmdRunAxf - FILE_GUID = 1f78349d-7fba-4686-8098-fa017eda35fb - MODULE_TYPE = UEFI_APPLICATION - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmShellCmdRunAxfLib - -[Sources.common] - ArmShellCmdRunAxf.c - ArmShellCmdRunAxf.uni - RunAxf.c - BootMonFsLoader.h - BootMonFsLoader.c - ElfLoader.h - ElfLoader.c - # ELF definitions taken from BaseTools - elf32.h - elf64.h - elf_common.h - -[Packages] - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - MdeModulePkg/MdeModulePkg.dec - MdePkg/MdePkg.dec - ShellPkg/ShellPkg.dec - -[LibraryClasses] - ArmLib - BaseLib - DebugLib - HiiLib - ShellLib - -[Protocols] - gEfiShellDynamicCommandProtocolGuid - -[Guids] - gArmBootMonFsFileInfoGuid diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.uni b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.uni deleted file mode 100644 index 6b7296079175..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ArmShellCmdRunAxf.uni +++ /dev/null @@ -1,68 +0,0 @@ -// *++ -// -// Copyright (c) 2014, ARM Ltd. All rights reserved.
-// -// This program and the accompanying materials are licensed and made available -// under the terms and conditions of the BSD License which accompanies this -// distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// -// Module Name: -// -// RunAxfStrings.uni -// -// Abstract: -// -// String definitions for the Shell 'runaxf' command -// -// Revision History: -// -// --*/ - -/=# - -#langdef en-US "English" - -#string STR_RUNAXF_BAD_FILE #language en-US "File type not supported\n" -#string STR_RUNAXF_BAD_ARCH #language en-US "Architecture not supported\n" -#string STR_RUNAXF_INVALID_ARG #language en-US "Invalid argument(s)\n" -#string STR_RUNAXF_FILE_NOT_FOUND #language en-US "File not found : %s\n" -#string STR_RUNAXF_NO_MEM #language en-US "Out of Memory\n" -#string STR_RUNAXF_READ_FAIL #language en-US "Failed to read file\n" - -#string STR_RUNAXF_ELFMAGIC #language en-US "Wrong magic number. The file is either not an ELF binary or it is corrupted.\n" -#string STR_RUNAXF_ELFNOTEXEC #language en-US "Wrong ELF file type, expected an executable file.\n" -#string STR_RUNAXF_ELFNOPROG #language en-US "No program header table found in ELF file.\n" -#string STR_RUNAXF_ELFWRONGCLASS #language en-US "Invalid ELF Class type.\n" -#string STR_RUNAXF_ELFBADFORMAT #language en-US "ELF file format is incorrect (filesize > memorysize).\n" -#string STR_RUNAXF_ELFBADHEADER #language en-US "Invalid ELF header.\n" -#string STR_RUNAXF_ELFFAILSEG #language en-US "Failed to load segment from ELF file.\n -#string STR_RUNAXF_ELFNOSEG #language en-US "The ELF file must have at least 1 loadable segment.\n" - -#string STR_RUNAXF_ELFWRONGCLASS_32 #language en-US "Wrong file class, expected 32-bit ELF file.\n" -#string STR_RUNAXF_ELFWRONGCLASS_64 #language en-US "Wrong file class, expected 64-bit ELF file.\n" -#string STR_RUNAXF_ELFWRONGMACH_32 #language en-US "Wrong machine type, expected ARM.\n" -#string STR_RUNAXF_ELFWRONGMACH_64 #language en-US "Wrong machine type, expected AARCH64.\n" - -#string STR_GET_HELP_RUNAXF #language en-US "" -".TH runaxf 0 "load and execute AXF binary"\r\n" -".SH NAME\r\n" -"Loads and executes ARM Executable File (AXF).\r\n" -".SH SYNOPSIS\r\n" -"runaxf file\r\n" -".SH OPTIONS\r\n" -"file AXF binary to load and execute.\r\n" -".SH DESCRIPTION\r\n" -"Loads and executes ARM Executable File (AXF). This function is not expected to return.\r\n" - -".SH RETURNVALUES\r\n" -"SHELL_DEVICE_ERROR The operation failed to complete.\r\n" -"SHELL_INVALID_PARAMETER One of the passed in parameters was incorrectly formatted or its value was out of bounds.\r\n" -"SHELL_UNSUPPORTED The action as requested was unsupported.\r\n" -"SHELL_OUT_OF_RESOURCES There was insufficient free space for the request to be completed.\r\n" -".SH EXAMPLES\r\n" -" fs0:\> runaxf file.axf\r\n" diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.c b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.c deleted file mode 100644 index 0bce037dcb08..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.c +++ /dev/null @@ -1,154 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Ltd. All rights reserved. -* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT -* WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include - -#include -#include // EFI_FILE_HANDLE - -#include "ArmShellCmdRunAxf.h" -#include "BootMonFsLoader.h" - -/** - Check that loading the file is supported. - - Not all information is checked, only the properties that matters to us in - our simplified loader. - - BootMonFS file properties is not in a file header but in the file-system - metadata, so we need to pass a handle to the file to allow access to the - information. - - @param[in] FileHandle Handle of the file to check. - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the header is invalid. - @retval EFI_UNSUPPORTED if the file type/platform is not supported. -**/ -EFI_STATUS -BootMonFsCheckFile ( - IN CONST EFI_FILE_HANDLE FileHandle - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE_INFO Info; - UINTN InfoSize; - UINTN Index; - - ASSERT (FileHandle != NULL); - - // Try to load the file information as BootMonFS executable. - InfoSize = sizeof (Info); - // Get BootMon File info and see if it gives us what we need to load the file. - Status = FileHandle->GetInfo (FileHandle, &gArmBootMonFsFileInfoGuid, - &InfoSize, &Info); - - if (!EFI_ERROR (Status)) { - // Check the values return to see if they look reasonable. - // Do we have a good entrypoint and at least one good load region? - // We assume here that we cannot load to address 0x0. - if ((Info.Size == 0) || (Info.EntryPoint == 0) || (Info.RegionCount == 0) || - (Info.RegionCount > BOOTMONFS_IMAGE_DESCRIPTION_REGION_MAX)) { - // The file does not seem to be of the right type. - Status = EFI_UNSUPPORTED; - } else { - // Check load regions. We just check for valid numbers, we dont do the - // checksums. Info.Offset can be zero if it loads from the start of the - // file. - for (Index = 0; Index < Info.RegionCount; Index++) { - if ((Info.Region[Index].LoadAddress == 0) || (Info.Region[Index].Size == 0)) { - Status = EFI_UNSUPPORTED; - break; - } - } - } - } - - return Status; -} - -/** - Load a binary file from BootMonFS. - - @param[in] FileHandle Handle of the file to load. - - @param[in] FileData Address of the file data in memory. - - @param[out] EntryPoint Will be filled with the ELF entry point address. - - @param[out] ImageSize Will be filled with the file size in memory. This - will effectively be equal to the sum of the load - region sizes. - - This function assumes the file is valid and supported as checked with - BootMonFsCheckFile(). - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the file is invalid. -**/ -EFI_STATUS -BootMonFsLoadFile ( - IN CONST EFI_FILE_HANDLE FileHandle, - IN CONST VOID *FileData, - OUT VOID **EntryPoint, - OUT LIST_ENTRY *LoadList - ) -{ - EFI_STATUS Status; - BOOTMON_FS_FILE_INFO Info; - UINTN InfoSize; - UINTN Index; - UINTN ImageSize; - RUNAXF_LOAD_LIST *LoadNode; - - ASSERT (FileHandle != NULL); - ASSERT (FileData != NULL); - ASSERT (EntryPoint != NULL); - ASSERT (LoadList != NULL); - - ImageSize = 0; - - InfoSize = sizeof (Info); - Status = FileHandle->GetInfo (FileHandle, &gArmBootMonFsFileInfoGuid, - &InfoSize, &Info); - - if (!EFI_ERROR (Status)) { - *EntryPoint = (VOID*)((UINTN)Info.EntryPoint); - // Load all the regions to run-time memory - for (Index = 0; Index < Info.RegionCount; Index++) { - LoadNode = AllocateRuntimeZeroPool (sizeof (RUNAXF_LOAD_LIST)); - if (LoadNode == NULL) { - Status = EFI_OUT_OF_RESOURCES; - break; - } - - LoadNode->MemOffset = (UINTN)Info.Region[Index].LoadAddress; - LoadNode->FileOffset = (UINTN)FileData + Info.Region[Index].Offset; - LoadNode->Length = (UINTN)Info.Region[Index].Size; - InsertTailList (LoadList, &LoadNode->Link); - - ImageSize += LoadNode->Length; - } - } - - if ((!EFI_ERROR (Status)) && (ImageSize == 0)) { - Status = EFI_INVALID_PARAMETER; - } - - return Status; -} diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.h deleted file mode 100644 index de3c0adcd11f..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/BootMonFsLoader.h +++ /dev/null @@ -1,66 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Ltd. All rights reserved. -* -* This program and the accompanying materials are licensed and made available -* under the terms and conditions of the BSD License which accompanies this -* distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT -* WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __BOOTMONFS_LOADER_H__ -#define __BOOTMONFS_LOADER_H__ - -/** - Check that loading the file is supported. - - Not all information is checked, only the properties that matters to us in - our simplified loader. - - BootMonFS file properties is not in a file header but in the file-system - metadata, so we need to pass a handle to the file to allow access to the - information. - - @param[in] FileHandle Handle of the file to check. - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the header is invalid. - @retval EFI_UNSUPPORTED if the file type/platform is not supported. -**/ -EFI_STATUS -BootMonFsCheckFile ( - IN CONST EFI_FILE_HANDLE FileHandle - ); - -/** - Load a binary file from BootMonFS. - - @param[in] FileHandle Handle of the file to load. - - @param[in] FileData Address of the file data in memory. - - @param[out] EntryPoint Will be filled with the ELF entry point address. - - @param[out] ImageSize Will be filled with the file size in memory. This - will effectively be equal to the sum of the load - region sizes. - - This function assumes the file is valid and supported as checked with - BootMonFsCheckFile(). - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the file is invalid. -**/ -EFI_STATUS -BootMonFsLoadFile ( - IN CONST EFI_FILE_HANDLE FileHandle, - IN CONST VOID *FileData, - OUT VOID **EntryPoint, - OUT LIST_ENTRY *LoadList - ); - -#endif // __BOOTMONFS_LOADER_H__ diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.c b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.c deleted file mode 100644 index 6bb0d22de2fd..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.c +++ /dev/null @@ -1,340 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include - -#include "ArmShellCmdRunAxf.h" -#include "ElfLoader.h" -#include "elf_common.h" -#include "elf32.h" -#include "elf64.h" - - -// Put the functions the #ifdef. We only use the appropriate one for the platform. -// This prevents 'defined but not used' compiler warning. -#ifdef MDE_CPU_ARM -STATIC -BOOLEAN -IsArmElf ( - IN CONST VOID *Buf - ) -{ - Elf32_Ehdr *Hdr = (Elf32_Ehdr*)Buf; - - if (Hdr->e_ident[EI_CLASS] != ELFCLASS32) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFWRONGCLASS_32), gRunAxfHiiHandle); - return FALSE; - } - - if (Hdr->e_machine != EM_ARM) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFWRONGMACH_32), gRunAxfHiiHandle); - return FALSE; - } - - // We don't currently check endianness of ELF data (hdr->e_ident[EI_DATA]) - - return TRUE; -} -#elif defined(MDE_CPU_AARCH64) -STATIC -BOOLEAN -IsAarch64Elf ( - IN CONST VOID *Buf - ) -{ - Elf64_Ehdr *Hdr = (Elf64_Ehdr*)Buf; - - if (Hdr->e_ident[EI_CLASS] != ELFCLASS64) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFWRONGCLASS_64), gRunAxfHiiHandle); - return FALSE; - } - - if (Hdr->e_machine != EM_AARCH64) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFWRONGMACH_64), gRunAxfHiiHandle); - return FALSE; - } - - // We don't currently check endianness of ELF data (hdr->e_ident[EI_DATA]) - - return TRUE; -} -#endif // MDE_CPU_ARM , MDE_CPU_AARCH64 - - -/** - Support checking 32 and 64bit as the header could be valid, we might just - not support loading it. -**/ -STATIC -EFI_STATUS -ElfCheckHeader ( - IN CONST VOID *Buf - ) -{ - Elf32_Ehdr *Hdr32 = (Elf32_Ehdr*)Buf; - - if (!IS_ELF (*Hdr32)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFMAGIC), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - if (Hdr32->e_type != ET_EXEC) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFNOTEXEC), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - if (Hdr32->e_ident[EI_CLASS] == ELFCLASS32) { - if ((Hdr32->e_phoff == 0) || (Hdr32->e_phentsize == 0) || (Hdr32->e_phnum == 0)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFNOPROG), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - if (Hdr32->e_flags != 0) { - DEBUG ((EFI_D_INFO, "Warning: Wrong processor-specific flags, expected 0.\n")); - } - - DEBUG ((EFI_D_INFO, "Entry point addr: 0x%lx\n", Hdr32->e_entry)); - DEBUG ((EFI_D_INFO, "Start of program headers: 0x%lx\n", Hdr32->e_phoff)); - DEBUG ((EFI_D_INFO, "Size of 1 program header: %d\n", Hdr32->e_phentsize)); - DEBUG ((EFI_D_INFO, "Number of program headers: %d\n", Hdr32->e_phnum)); - } else if (Hdr32->e_ident[EI_CLASS] == ELFCLASS64) { - Elf64_Ehdr *Hdr64 = (Elf64_Ehdr*)Buf; - - if ((Hdr64->e_phoff == 0) || (Hdr64->e_phentsize == 0) || (Hdr64->e_phnum == 0)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFNOPROG), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - if (Hdr64->e_flags != 0) { - DEBUG ((EFI_D_INFO, "Warning: Wrong processor-specific flags, expected 0.\n")); - } - - DEBUG ((EFI_D_INFO, "Entry point addr: 0x%lx\n", Hdr64->e_entry)); - DEBUG ((EFI_D_INFO, "Start of program headers: 0x%lx\n", Hdr64->e_phoff)); - DEBUG ((EFI_D_INFO, "Size of 1 program header: %d\n", Hdr64->e_phentsize)); - DEBUG ((EFI_D_INFO, "Number of program headers: %d\n", Hdr64->e_phnum)); - } else { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFWRONGCLASS), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - return EFI_SUCCESS; -} - - -/** - Load an ELF segment into memory. - - This function assumes the ELF file is valid. - This function is meant to be called for PT_LOAD type segments only. -**/ -STATIC -EFI_STATUS -ElfLoadSegment ( - IN CONST VOID *ElfImage, - IN CONST VOID *PHdr, - IN LIST_ENTRY *LoadList - ) -{ - VOID *FileSegment; - VOID *MemSegment; - UINTN ExtraZeroes; - UINTN ExtraZeroesCount; - RUNAXF_LOAD_LIST *LoadNode; - -#ifdef MDE_CPU_ARM - Elf32_Phdr *ProgramHdr; - ProgramHdr = (Elf32_Phdr *)PHdr; -#elif defined(MDE_CPU_AARCH64) - Elf64_Phdr *ProgramHdr; - ProgramHdr = (Elf64_Phdr *)PHdr; -#endif - - ASSERT (ElfImage != NULL); - ASSERT (ProgramHdr != NULL); - - FileSegment = (VOID *)((UINTN)ElfImage + ProgramHdr->p_offset); - MemSegment = (VOID *)ProgramHdr->p_vaddr; - - // If the segment's memory size p_memsz is larger than the file size p_filesz, - // the "extra" bytes are defined to hold the value 0 and to follow the - // segment's initialised area. - // This is typically the case for the .bss segment. - // The file size may not be larger than the memory size. - if (ProgramHdr->p_filesz > ProgramHdr->p_memsz) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFBADFORMAT), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - // Load the segment in memory. - if (ProgramHdr->p_filesz != 0) { - DEBUG ((EFI_D_INFO, "Loading segment from 0x%lx to 0x%lx (size = %ld)\n", - FileSegment, MemSegment, ProgramHdr->p_filesz)); - - LoadNode = AllocateRuntimeZeroPool (sizeof (RUNAXF_LOAD_LIST)); - if (LoadNode == NULL) { - return EFI_OUT_OF_RESOURCES; - } - LoadNode->MemOffset = (UINTN)MemSegment; - LoadNode->FileOffset = (UINTN)FileSegment; - LoadNode->Length = (UINTN)ProgramHdr->p_filesz; - InsertTailList (LoadList, &LoadNode->Link); - } - - ExtraZeroes = ((UINTN)MemSegment + ProgramHdr->p_filesz); - ExtraZeroesCount = ProgramHdr->p_memsz - ProgramHdr->p_filesz; - DEBUG ((EFI_D_INFO, "Completing segment with %d zero bytes.\n", ExtraZeroesCount)); - if (ExtraZeroesCount > 0) { - // Extra Node to add the Zeroes. - LoadNode = AllocateRuntimeZeroPool (sizeof (RUNAXF_LOAD_LIST)); - if (LoadNode == NULL) { - return EFI_OUT_OF_RESOURCES; - } - LoadNode->MemOffset = (UINTN)ExtraZeroes; - LoadNode->Zeroes = TRUE; - LoadNode->Length = ExtraZeroesCount; - InsertTailList (LoadList, &LoadNode->Link); - } - - return EFI_SUCCESS; -} - - -/** - Check that the ELF File Header is valid and Machine type supported. - - Not all information is checked in the ELF header, only the stuff that - matters to us in our simplified ELF loader. - - @param[in] ElfImage Address of the ELF file to check. - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the header is invalid. - @retval EFI_UNSUPPORTED if the file type/platform is not supported. -**/ -EFI_STATUS -ElfCheckFile ( - IN CONST VOID *ElfImage - ) -{ - EFI_STATUS Status; - - ASSERT (ElfImage != NULL); - - // Check that the ELF header is valid. - Status = ElfCheckHeader (ElfImage); - if (EFI_ERROR(Status)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFBADHEADER), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - -#ifdef MDE_CPU_ARM - if (IsArmElf (ElfImage)) { - return EFI_SUCCESS; - } -#elif defined(MDE_CPU_AARCH64) - if (IsAarch64Elf (ElfImage)) { - return EFI_SUCCESS; - } -#endif - - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_BAD_ARCH), gRunAxfHiiHandle); - return EFI_UNSUPPORTED; -} - - -/** - Load a ELF file. - - @param[in] ElfImage Address of the ELF file in memory. - - @param[out] EntryPoint Will be filled with the ELF entry point address. - - @param[out] ImageSize Will be filled with the ELF size in memory. This will - effectively be equal to the sum of the segments sizes. - - This functon assumes the header is valid and supported as checked with - ElfCheckFile(). - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the ELF file is invalid. -**/ -EFI_STATUS -ElfLoadFile ( - IN CONST VOID *ElfImage, - OUT VOID **EntryPoint, - OUT LIST_ENTRY *LoadList - ) -{ - EFI_STATUS Status; - UINT8 *ProgramHdr; - UINTN Index; - UINTN ImageSize; - -#ifdef MDE_CPU_ARM - Elf32_Ehdr *ElfHdr; - Elf32_Phdr *ProgramHdrPtr; - - ElfHdr = (Elf32_Ehdr*)ElfImage; -#elif defined(MDE_CPU_AARCH64) - Elf64_Ehdr *ElfHdr; - Elf64_Phdr *ProgramHdrPtr; - - ElfHdr = (Elf64_Ehdr*)ElfImage; -#endif - - ASSERT (ElfImage != NULL); - ASSERT (EntryPoint != NULL); - ASSERT (LoadList != NULL); - - ProgramHdr = (UINT8*)ElfImage + ElfHdr->e_phoff; - DEBUG ((EFI_D_INFO, "ELF program header entry : 0x%lx\n", ProgramHdr)); - - ImageSize = 0; - - // Load every loadable ELF segment into memory. - for (Index = 0; Index < ElfHdr->e_phnum; ++Index) { - -#ifdef MDE_CPU_ARM - ProgramHdrPtr = (Elf32_Phdr*)ProgramHdr; -#elif defined(MDE_CPU_AARCH64) - ProgramHdrPtr = (Elf64_Phdr*)ProgramHdr; -#endif - - // Only consider PT_LOAD type segments, ignore others. - if (ProgramHdrPtr->p_type == PT_LOAD) { - Status = ElfLoadSegment (ElfImage, (VOID *)ProgramHdrPtr, LoadList); - if (EFI_ERROR (Status)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFFAILSEG), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - ImageSize += ProgramHdrPtr->p_memsz; - } - ProgramHdr += ElfHdr->e_phentsize; - } - - if (ImageSize == 0) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_ELFNOSEG), gRunAxfHiiHandle); - return EFI_INVALID_PARAMETER; - } - - // Return the entry point specified in the ELF header. - *EntryPoint = (void*)ElfHdr->e_entry; - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.h deleted file mode 100644 index 7020a6c4e726..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/ElfLoader.h +++ /dev/null @@ -1,64 +0,0 @@ -/** @file -* -* Copyright (c) 2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef ELF_LOADER_H -#define ELF_LOADER_H - -/** - Check that the ELF File Header is valid and Machine type supported. - - Not all information is checked in the ELF header, only the stuff that - matters to us in our simplified ELF loader. - - @param[in] ElfImage Address of the ELF file to check. - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the header is invalid. - @retval EFI_UNSUPPORTED if the file type/platform is not supported. -**/ -EFI_STATUS -ElfCheckFile ( - IN CONST VOID *ElfImage - ); - - -/** - Load a ELF file. - - @param[in] ElfImage Address of the ELF file in memory. - - @param[out] EntryPoint Will be filled with the ELF entry point address. - - @param[out] ImageSize Will be filled with the ELF size in memory. This will - effectively be equal to the sum of the segments sizes. - - This function assumes the header is valid and supported as checked with - ElfCheckFile(). - - NOTE: - - We don't currently take the segment permissions into account (indicated by - the program headers). It can be used to allocate pages with the right - read/write/exec permissions. - - @retval EFI_SUCCESS on success. - @retval EFI_INVALID_PARAMETER if the ELF file is invalid. -**/ -EFI_STATUS -ElfLoadFile ( - IN CONST VOID *ElfImage, - OUT VOID **EntryPoint, - OUT LIST_ENTRY *LoadList - ); - -#endif // ELF_LOADER_H diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/RunAxf.c b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/RunAxf.c deleted file mode 100644 index 9f4fc780307d..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/RunAxf.c +++ /dev/null @@ -1,395 +0,0 @@ -/** @file -* -* Shell command for launching AXF files. -* -* Copyright (c) 2014, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "ArmShellCmdRunAxf.h" -#include "ElfLoader.h" -#include "BootMonFsLoader.h" - -// Provide arguments to AXF? -typedef VOID (*ELF_ENTRYPOINT)(UINTN arg0, UINTN arg1, - UINTN arg2, UINTN arg3); - -STATIC -EFI_STATUS -ShutdownUefiBootServices ( - VOID - ) -{ - EFI_STATUS Status; - UINTN MemoryMapSize; - EFI_MEMORY_DESCRIPTOR *MemoryMap; - UINTN MapKey; - UINTN DescriptorSize; - UINT32 DescriptorVersion; - UINTN Pages; - - MemoryMap = NULL; - MemoryMapSize = 0; - Pages = 0; - - do { - Status = gBS->GetMemoryMap ( - &MemoryMapSize, - MemoryMap, - &MapKey, - &DescriptorSize, - &DescriptorVersion - ); - if (Status == EFI_BUFFER_TOO_SMALL) { - - Pages = EFI_SIZE_TO_PAGES (MemoryMapSize) + 1; - MemoryMap = AllocatePages (Pages); - - // - // Get System MemoryMap - // - Status = gBS->GetMemoryMap ( - &MemoryMapSize, - MemoryMap, - &MapKey, - &DescriptorSize, - &DescriptorVersion - ); - } - - // Don't do anything between the GetMemoryMap() and ExitBootServices() - if (!EFI_ERROR(Status)) { - Status = gBS->ExitBootServices (gImageHandle, MapKey); - if (EFI_ERROR(Status)) { - FreePages (MemoryMap, Pages); - MemoryMap = NULL; - MemoryMapSize = 0; - } - } - } while (EFI_ERROR(Status)); - - return Status; -} - - -STATIC -EFI_STATUS -PreparePlatformHardware ( - VOID - ) -{ - //Note: Interrupts will be disabled by the GIC driver when ExitBootServices() will be called. - - // Clean before Disable else the Stack gets corrupted with old data. - ArmCleanDataCache (); - ArmDisableDataCache (); - // Invalidate all the entries that might have snuck in. - ArmInvalidateDataCache (); - - // Disable and invalidate the instruction cache - ArmDisableInstructionCache (); - ArmInvalidateInstructionCache (); - - // Turn off MMU - ArmDisableMmu(); - - return EFI_SUCCESS; -} - -// Process arguments to pass to AXF? -STATIC CONST SHELL_PARAM_ITEM ParamList[] = { - {NULL, TypeMax} -}; - - -/** - This is the shell command handler function pointer callback type. This - function handles the command when it is invoked in the shell. - - @param[in] This The instance of the - EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. - @param[in] SystemTable The pointer to the system table. - @param[in] ShellParameters The parameters associated with the command. - @param[in] Shell The instance of the shell protocol used in the - context of processing this command. - - @return EFI_SUCCESS The operation was successful. - @return other The operation failed. -**/ -SHELL_STATUS -EFIAPI -ShellDynCmdRunAxfHandler ( - IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, - IN EFI_SYSTEM_TABLE *SystemTable, - IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters, - IN EFI_SHELL_PROTOCOL *Shell - ) -{ - LIST_ENTRY *ParamPackage; - EFI_STATUS Status; - SHELL_STATUS ShellStatus; - SHELL_FILE_HANDLE FileHandle; - ELF_ENTRYPOINT StartElf; - CONST CHAR16 *FileName; - EFI_FILE_INFO *Info; - UINTN FileSize; - VOID *FileData; - VOID *Entrypoint; - LIST_ENTRY LoadList; - LIST_ENTRY *Node; - LIST_ENTRY *NextNode; - RUNAXF_LOAD_LIST *LoadNode; - CHAR16 *TmpFileName; - CHAR16 *TmpChar16; - - - ShellStatus = SHELL_SUCCESS; - FileHandle = NULL; - FileData = NULL; - InitializeListHead (&LoadList); - - // Only install if they are not there yet? First time or every time? - // These can change if the shell exits and start again. - Status = gBS->InstallMultipleProtocolInterfaces (&gImageHandle, - &gEfiShellProtocolGuid, Shell, - &gEfiShellParametersProtocolGuid, ShellParameters, - NULL); - - if (EFI_ERROR (Status)) { - return SHELL_DEVICE_ERROR; - } - - // Update the protocols for the application library - Status = ShellInitialize (); - ASSERT_EFI_ERROR (Status); - // Add support to load AXF with optipnal args? - - // - // Process Command Line arguments - // - Status = ShellCommandLineParse (ParamList, &ParamPackage, NULL, TRUE); - if (EFI_ERROR (Status)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_INVALID_ARG), gRunAxfHiiHandle); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - // - // Check for "-?" - // - if ((ShellCommandLineGetFlag (ParamPackage, L"-?")) || - (ShellCommandLineGetRawValue (ParamPackage, 1) == NULL)) { - // - // We didn't get a file to load - // - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_INVALID_ARG), gRunAxfHiiHandle); - ShellStatus = SHELL_INVALID_PARAMETER; - } else { - // For the moment we assume we only ever get one file to load with no arguments. - FileName = ShellCommandLineGetRawValue (ParamPackage, 1); - Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0); - if (EFI_ERROR (Status)) { - // BootMonFS supports file extensions, but they are stripped by default - // when the NOR is programmed. - // Remove the file extension and try to open again. - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_FILE_NOT_FOUND), - gRunAxfHiiHandle, FileName); - // Go through the filename and remove file extension. Preserve the - // original name. - TmpFileName = AllocateCopyPool (StrSize (FileName), (VOID *)FileName); - if (TmpFileName != NULL) { - TmpChar16 = StrStr (TmpFileName, L"."); - if (TmpChar16 != NULL) { - *TmpChar16 = '\0'; - DEBUG((EFI_D_ERROR, "Trying to open file: %s\n", TmpFileName)); - Status = ShellOpenFileByName (TmpFileName, &FileHandle, - EFI_FILE_MODE_READ, 0); - } - FreePool (TmpFileName); - } - // Do we now have an open file after trying again? - if (EFI_ERROR (Status)) { - ShellStatus = SHELL_INVALID_PARAMETER; - FileHandle = NULL; - } - } - - if (FileHandle != NULL) { - Info = ShellGetFileInfo (FileHandle); - FileSize = (UINTN) Info->FileSize; - FreePool (Info); - - // - // Allocate buffer to read file. 'Runtime' so we can access it after - // ExitBootServices(). - // - FileData = AllocateRuntimeZeroPool (FileSize); - if (FileData == NULL) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_NO_MEM), gRunAxfHiiHandle); - ShellStatus = SHELL_OUT_OF_RESOURCES; - } else { - // - // Read file into Buffer - // - Status = ShellReadFile (FileHandle, &FileSize, FileData); - if (EFI_ERROR (Status)) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_READ_FAIL), gRunAxfHiiHandle); - SHELL_FREE_NON_NULL (FileData); - FileData = NULL; - ShellStatus = SHELL_DEVICE_ERROR; - } - } - } - } - - // - // Free the command line package - // - ShellCommandLineFreeVarList (ParamPackage); - } - - // We have a file in memory. Try to work out if we can use it. - // It can either be in ELF format or BootMonFS format. - if (FileData != NULL) { - // Do some validation on the file before we try to load it. The file can - // either be an proper ELF file or one processed by the FlashLoader. - // Since the data might need to go to various locations in memory we cannot - // load the data directly while UEFI is running. We use the file loaders to - // populate a linked list of data and load addresses. This is processed and - // data copied to where it needs to go after calling ExitBootServices. At - // that stage we've reached the point of no return, so overwriting UEFI code - // does not make a difference. - Status = ElfCheckFile (FileData); - if (!EFI_ERROR (Status)) { - // Load program into memory - Status = ElfLoadFile ((VOID*)FileData, &Entrypoint, &LoadList); - } else { - // Try to see if it is a BootMonFs executable - Status = BootMonFsCheckFile ((EFI_FILE_HANDLE)FileHandle); - if (!EFI_ERROR (Status)) { - // Load program into memory - Status = BootMonFsLoadFile ((EFI_FILE_HANDLE)FileHandle, - (VOID*)FileData, &Entrypoint, &LoadList); - } else { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_RUNAXF_BAD_FILE), - gRunAxfHiiHandle); - SHELL_FREE_NON_NULL (FileData); - ShellStatus = SHELL_UNSUPPORTED; - } - } - } - - // Program load list created. - // Shutdown UEFI, copy and jump to code. - if (!IsListEmpty (&LoadList) && !EFI_ERROR (Status)) { - // Exit boot services here. This means we cannot return and cannot assume to - // have access to UEFI functions. - Status = ShutdownUefiBootServices (); - if (EFI_ERROR (Status)) { - DEBUG ((EFI_D_ERROR,"Can not shutdown UEFI boot services. Status=0x%X\n", - Status)); - } else { - // Process linked list. Copy data to Memory. - Node = GetFirstNode (&LoadList); - while (!IsNull (&LoadList, Node)) { - LoadNode = (RUNAXF_LOAD_LIST *)Node; - // Do we have data to copy or do we need to set Zeroes (.bss)? - if (LoadNode->Zeroes) { - ZeroMem ((VOID*)LoadNode->MemOffset, LoadNode->Length); - } else { - CopyMem ((VOID *)LoadNode->MemOffset, (VOID *)LoadNode->FileOffset, - LoadNode->Length); - } - Node = GetNextNode (&LoadList, Node); - } - - // - // Switch off interrupts, caches, mmu, etc - // - Status = PreparePlatformHardware (); - ASSERT_EFI_ERROR (Status); - - StartElf = (ELF_ENTRYPOINT)Entrypoint; - StartElf (0,0,0,0); - - // We should never get here.. But if we do, spin.. - ASSERT (FALSE); - while (1); - } - } - - // Free file related information as we are returning to UEFI. - Node = GetFirstNode (&LoadList); - while (!IsNull (&LoadList, Node)) { - NextNode = RemoveEntryList (Node); - FreePool (Node); - Node = NextNode; - } - SHELL_FREE_NON_NULL (FileData); - if (FileHandle != NULL) { - ShellCloseFile (&FileHandle); - } - - // Uninstall protocols as we don't know if they will change. - // If the shell exits and come in again these mappings may be different - // and cause a crash. - Status = gBS->UninstallMultipleProtocolInterfaces (gImageHandle, - &gEfiShellProtocolGuid, Shell, - &gEfiShellParametersProtocolGuid, ShellParameters, - NULL); - - if (EFI_ERROR (Status) && ShellStatus == SHELL_SUCCESS) { - ShellStatus = SHELL_DEVICE_ERROR; - } - - return ShellStatus; -} - - -/** - This is the command help handler function pointer callback type. This - function is responsible for displaying help information for the associated - command. - - @param[in] This The instance of the - EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL. - @param[in] Language The pointer to the language string to use. - - @return string Pool allocated help string, must be freed by - caller. -**/ -CHAR16* -EFIAPI -ShellDynCmdRunAxfGetHelp ( - IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This, - IN CONST CHAR8 *Language - ) -{ - CHAR16 *HelpText; - - ASSERT (gRunAxfHiiHandle != NULL); - - // This allocates memory. The caller is responsoible to free. - HelpText = HiiGetString (gRunAxfHiiHandle, STRING_TOKEN (STR_GET_HELP_RUNAXF), - Language); - - return HelpText; -} diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf32.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf32.h deleted file mode 100644 index 3951444a3085..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf32.h +++ /dev/null @@ -1,258 +0,0 @@ -/** @file -Ported ELF include files from FreeBSD - -Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -**/ -/*- - * Copyright (c) 1996-1998 John D. Polstra. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - * - * $FreeBSD: src/sys/sys/elf32.h,v 1.8.14.2 2007/12/03 21:30:36 marius Exp $ - */ - -#ifndef _SYS_ELF32_H_ -#define _SYS_ELF32_H_ 1 - - -/* - * ELF definitions common to all 32-bit architectures. - */ - -typedef UINT32 Elf32_Addr; -typedef UINT16 Elf32_Half; -typedef UINT32 Elf32_Off; -typedef INT32 Elf32_Sword; -typedef UINT32 Elf32_Word; -typedef UINT64 Elf32_Lword; - -typedef Elf32_Word Elf32_Hashelt; - -/* Non-standard class-dependent datatype used for abstraction. */ -typedef Elf32_Word Elf32_Size; -typedef Elf32_Sword Elf32_Ssize; - -/* - * ELF header. - */ - -typedef struct { - unsigned char e_ident[EI_NIDENT]; /* File identification. */ - Elf32_Half e_type; /* File type. */ - Elf32_Half e_machine; /* Machine architecture. */ - Elf32_Word e_version; /* ELF format version. */ - Elf32_Addr e_entry; /* Entry point. */ - Elf32_Off e_phoff; /* Program header file offset. */ - Elf32_Off e_shoff; /* Section header file offset. */ - Elf32_Word e_flags; /* Architecture-specific flags. */ - Elf32_Half e_ehsize; /* Size of ELF header in bytes. */ - Elf32_Half e_phentsize; /* Size of program header entry. */ - Elf32_Half e_phnum; /* Number of program header entries. */ - Elf32_Half e_shentsize; /* Size of section header entry. */ - Elf32_Half e_shnum; /* Number of section header entries. */ - Elf32_Half e_shstrndx; /* Section name strings section. */ -} Elf32_Ehdr; - -/* - * Section header. - */ - -typedef struct { - Elf32_Word sh_name; /* Section name (index into the - section header string table). */ - Elf32_Word sh_type; /* Section type. */ - Elf32_Word sh_flags; /* Section flags. */ - Elf32_Addr sh_addr; /* Address in memory image. */ - Elf32_Off sh_offset; /* Offset in file. */ - Elf32_Word sh_size; /* Size in bytes. */ - Elf32_Word sh_link; /* Index of a related section. */ - Elf32_Word sh_info; /* Depends on section type. */ - Elf32_Word sh_addralign; /* Alignment in bytes. */ - Elf32_Word sh_entsize; /* Size of each entry in section. */ -} Elf32_Shdr; - -/* - * Program header. - */ - -typedef struct { - Elf32_Word p_type; /* Entry type. */ - Elf32_Off p_offset; /* File offset of contents. */ - Elf32_Addr p_vaddr; /* Virtual address in memory image. */ - Elf32_Addr p_paddr; /* Physical address (not used). */ - Elf32_Word p_filesz; /* Size of contents in file. */ - Elf32_Word p_memsz; /* Size of contents in memory. */ - Elf32_Word p_flags; /* Access permission flags. */ - Elf32_Word p_align; /* Alignment in memory and file. */ -} Elf32_Phdr; - -/* - * Dynamic structure. The ".dynamic" section contains an array of them. - */ - -typedef struct { - Elf32_Sword d_tag; /* Entry type. */ - union { - Elf32_Word d_val; /* Integer value. */ - Elf32_Addr d_ptr; /* Address value. */ - } d_un; -} Elf32_Dyn; - -/* - * Relocation entries. - */ - -/* Relocations that don't need an addend field. */ -typedef struct { - Elf32_Addr r_offset; /* Location to be relocated. */ - Elf32_Word r_info; /* Relocation type and symbol index. */ -} Elf32_Rel; - -/* Relocations that need an addend field. */ -typedef struct { - Elf32_Addr r_offset; /* Location to be relocated. */ - Elf32_Word r_info; /* Relocation type and symbol index. */ - Elf32_Sword r_addend; /* Addend. */ -} Elf32_Rela; - -/* Macros for accessing the fields of r_info. */ -#define ELF32_R_SYM(info) ((info) >> 8) -#define ELF32_R_TYPE(info) ((unsigned char)(info)) - -/* Macro for constructing r_info from field values. */ -#define ELF32_R_INFO(sym, type) (((sym) << 8) + (unsigned char)(type)) - -/* - * Note entry header - */ -typedef Elf_Note Elf32_Nhdr; - -/* - * Move entry - */ -typedef struct { - Elf32_Lword m_value; /* symbol value */ - Elf32_Word m_info; /* size + index */ - Elf32_Word m_poffset; /* symbol offset */ - Elf32_Half m_repeat; /* repeat count */ - Elf32_Half m_stride; /* stride info */ -} Elf32_Move; - -/* - * The macros compose and decompose values for Move.r_info - * - * sym = ELF32_M_SYM(M.m_info) - * size = ELF32_M_SIZE(M.m_info) - * M.m_info = ELF32_M_INFO(sym, size) - */ -#define ELF32_M_SYM(info) ((info)>>8) -#define ELF32_M_SIZE(info) ((unsigned char)(info)) -#define ELF32_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size)) - -/* - * Hardware/Software capabilities entry - */ -typedef struct { - Elf32_Word c_tag; /* how to interpret value */ - union { - Elf32_Word c_val; - Elf32_Addr c_ptr; - } c_un; -} Elf32_Cap; - -/* - * Symbol table entries. - */ - -typedef struct { - Elf32_Word st_name; /* String table index of name. */ - Elf32_Addr st_value; /* Symbol value. */ - Elf32_Word st_size; /* Size of associated object. */ - unsigned char st_info; /* Type and binding information. */ - unsigned char st_other; /* Reserved (not used). */ - Elf32_Half st_shndx; /* Section index of symbol. */ -} Elf32_Sym; - -/* Macros for accessing the fields of st_info. */ -#define ELF32_ST_BIND(info) ((info) >> 4) -#define ELF32_ST_TYPE(info) ((info) & 0xf) - -/* Macro for constructing st_info from field values. */ -#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) - -/* Macro for accessing the fields of st_other. */ -#define ELF32_ST_VISIBILITY(oth) ((oth) & 0x3) - -/* Structures used by Sun & GNU symbol versioning. */ -typedef struct -{ - Elf32_Half vd_version; - Elf32_Half vd_flags; - Elf32_Half vd_ndx; - Elf32_Half vd_cnt; - Elf32_Word vd_hash; - Elf32_Word vd_aux; - Elf32_Word vd_next; -} Elf32_Verdef; - -typedef struct -{ - Elf32_Word vda_name; - Elf32_Word vda_next; -} Elf32_Verdaux; - -typedef struct -{ - Elf32_Half vn_version; - Elf32_Half vn_cnt; - Elf32_Word vn_file; - Elf32_Word vn_aux; - Elf32_Word vn_next; -} Elf32_Verneed; - -typedef struct -{ - Elf32_Word vna_hash; - Elf32_Half vna_flags; - Elf32_Half vna_other; - Elf32_Word vna_name; - Elf32_Word vna_next; -} Elf32_Vernaux; - -typedef Elf32_Half Elf32_Versym; - -typedef struct { - Elf32_Half si_boundto; /* direct bindings - symbol bound to */ - Elf32_Half si_flags; /* per symbol flags */ -} Elf32_Syminfo; - -#endif /* !_SYS_ELF32_H_ */ diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf64.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf64.h deleted file mode 100644 index 1cfe0c9539aa..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf64.h +++ /dev/null @@ -1,260 +0,0 @@ -/** @file -Ported ELF include files from FreeBSD - -Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ -/*- - * Copyright (c) 1996-1998 John D. Polstra. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - * - * $FreeBSD: src/sys/sys/elf64.h,v 1.10.14.2 2007/12/03 21:30:36 marius Exp $ - */ - -#ifndef _SYS_ELF64_H_ -#define _SYS_ELF64_H_ 1 - - -/* - * ELF definitions common to all 64-bit architectures. - */ - -typedef UINT64 Elf64_Addr; -typedef UINT16 Elf64_Half; -typedef UINT64 Elf64_Off; -typedef INT32 Elf64_Sword; -typedef INT64 Elf64_Sxword; -typedef UINT32 Elf64_Word; -typedef UINT64 Elf64_Lword; -typedef UINT64 Elf64_Xword; - -/* - * Types of dynamic symbol hash table bucket and chain elements. - * - * This is inconsistent among 64 bit architectures, so a machine dependent - * typedef is required. - */ - -typedef Elf64_Word Elf64_Hashelt; - -/* Non-standard class-dependent datatype used for abstraction. */ -typedef Elf64_Xword Elf64_Size; -typedef Elf64_Sxword Elf64_Ssize; - -/* - * ELF header. - */ - -typedef struct { - unsigned char e_ident[EI_NIDENT]; /* File identification. */ - Elf64_Half e_type; /* File type. */ - Elf64_Half e_machine; /* Machine architecture. */ - Elf64_Word e_version; /* ELF format version. */ - Elf64_Addr e_entry; /* Entry point. */ - Elf64_Off e_phoff; /* Program header file offset. */ - Elf64_Off e_shoff; /* Section header file offset. */ - Elf64_Word e_flags; /* Architecture-specific flags. */ - Elf64_Half e_ehsize; /* Size of ELF header in bytes. */ - Elf64_Half e_phentsize; /* Size of program header entry. */ - Elf64_Half e_phnum; /* Number of program header entries. */ - Elf64_Half e_shentsize; /* Size of section header entry. */ - Elf64_Half e_shnum; /* Number of section header entries. */ - Elf64_Half e_shstrndx; /* Section name strings section. */ -} Elf64_Ehdr; - -/* - * Section header. - */ - -typedef struct { - Elf64_Word sh_name; /* Section name (index into the - section header string table). */ - Elf64_Word sh_type; /* Section type. */ - Elf64_Xword sh_flags; /* Section flags. */ - Elf64_Addr sh_addr; /* Address in memory image. */ - Elf64_Off sh_offset; /* Offset in file. */ - Elf64_Xword sh_size; /* Size in bytes. */ - Elf64_Word sh_link; /* Index of a related section. */ - Elf64_Word sh_info; /* Depends on section type. */ - Elf64_Xword sh_addralign; /* Alignment in bytes. */ - Elf64_Xword sh_entsize; /* Size of each entry in section. */ -} Elf64_Shdr; - -/* - * Program header. - */ - -typedef struct { - Elf64_Word p_type; /* Entry type. */ - Elf64_Word p_flags; /* Access permission flags. */ - Elf64_Off p_offset; /* File offset of contents. */ - Elf64_Addr p_vaddr; /* Virtual address in memory image. */ - Elf64_Addr p_paddr; /* Physical address (not used). */ - Elf64_Xword p_filesz; /* Size of contents in file. */ - Elf64_Xword p_memsz; /* Size of contents in memory. */ - Elf64_Xword p_align; /* Alignment in memory and file. */ -} Elf64_Phdr; - -/* - * Dynamic structure. The ".dynamic" section contains an array of them. - */ - -typedef struct { - Elf64_Sxword d_tag; /* Entry type. */ - union { - Elf64_Xword d_val; /* Integer value. */ - Elf64_Addr d_ptr; /* Address value. */ - } d_un; -} Elf64_Dyn; - -/* - * Relocation entries. - */ - -/* Relocations that don't need an addend field. */ -typedef struct { - Elf64_Addr r_offset; /* Location to be relocated. */ - Elf64_Xword r_info; /* Relocation type and symbol index. */ -} Elf64_Rel; - -/* Relocations that need an addend field. */ -typedef struct { - Elf64_Addr r_offset; /* Location to be relocated. */ - Elf64_Xword r_info; /* Relocation type and symbol index. */ - Elf64_Sxword r_addend; /* Addend. */ -} Elf64_Rela; - -/* Macros for accessing the fields of r_info. */ -#define ELF64_R_SYM(info) ((info) >> 32) -#define ELF64_R_TYPE(info) ((info) & 0xffffffffL) - -/* Macro for constructing r_info from field values. */ -#define ELF64_R_INFO(sym, type) (((sym) << 32) + ((type) & 0xffffffffL)) - -#define ELF64_R_TYPE_DATA(info) (((Elf64_Xword)(info)<<32)>>40) -#define ELF64_R_TYPE_ID(info) (((Elf64_Xword)(info)<<56)>>56) -#define ELF64_R_TYPE_INFO(data, type) \ - (((Elf64_Xword)(data)<<8)+(Elf64_Xword)(type)) - -/* - * Note entry header - */ -typedef Elf_Note Elf64_Nhdr; - -/* - * Move entry - */ -typedef struct { - Elf64_Lword m_value; /* symbol value */ - Elf64_Xword m_info; /* size + index */ - Elf64_Xword m_poffset; /* symbol offset */ - Elf64_Half m_repeat; /* repeat count */ - Elf64_Half m_stride; /* stride info */ -} Elf64_Move; - -#define ELF64_M_SYM(info) ((info)>>8) -#define ELF64_M_SIZE(info) ((unsigned char)(info)) -#define ELF64_M_INFO(sym, size) (((sym)<<8)+(unsigned char)(size)) - -/* - * Hardware/Software capabilities entry - */ -typedef struct { - Elf64_Xword c_tag; /* how to interpret value */ - union { - Elf64_Xword c_val; - Elf64_Addr c_ptr; - } c_un; -} Elf64_Cap; - -/* - * Symbol table entries. - */ - -typedef struct { - Elf64_Word st_name; /* String table index of name. */ - unsigned char st_info; /* Type and binding information. */ - unsigned char st_other; /* Reserved (not used). */ - Elf64_Half st_shndx; /* Section index of symbol. */ - Elf64_Addr st_value; /* Symbol value. */ - Elf64_Xword st_size; /* Size of associated object. */ -} Elf64_Sym; - -/* Macros for accessing the fields of st_info. */ -#define ELF64_ST_BIND(info) ((info) >> 4) -#define ELF64_ST_TYPE(info) ((info) & 0xf) - -/* Macro for constructing st_info from field values. */ -#define ELF64_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) - -/* Macro for accessing the fields of st_other. */ -#define ELF64_ST_VISIBILITY(oth) ((oth) & 0x3) - -/* Structures used by Sun & GNU-style symbol versioning. */ -typedef struct { - Elf64_Half vd_version; - Elf64_Half vd_flags; - Elf64_Half vd_ndx; - Elf64_Half vd_cnt; - Elf64_Word vd_hash; - Elf64_Word vd_aux; - Elf64_Word vd_next; -} Elf64_Verdef; - -typedef struct { - Elf64_Word vda_name; - Elf64_Word vda_next; -} Elf64_Verdaux; - -typedef struct { - Elf64_Half vn_version; - Elf64_Half vn_cnt; - Elf64_Word vn_file; - Elf64_Word vn_aux; - Elf64_Word vn_next; -} Elf64_Verneed; - -typedef struct { - Elf64_Word vna_hash; - Elf64_Half vna_flags; - Elf64_Half vna_other; - Elf64_Word vna_name; - Elf64_Word vna_next; -} Elf64_Vernaux; - -typedef Elf64_Half Elf64_Versym; - -typedef struct { - Elf64_Half si_boundto; /* direct bindings - symbol bound to */ - Elf64_Half si_flags; /* per symbol flags */ -} Elf64_Syminfo; - -#endif /* !_SYS_ELF64_H_ */ diff --git a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf_common.h b/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf_common.h deleted file mode 100644 index ed3cedc1b076..000000000000 --- a/ArmPlatformPkg/Library/ArmShellCmdRunAxf/elf_common.h +++ /dev/null @@ -1,1059 +0,0 @@ -/** @file -Ported ELF include files from FreeBSD - -Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.
-Portions Copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - -**/ -/*- - * Copyright (c) 1998 John D. Polstra. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. - * - * $FreeBSD: src/sys/sys/elf_common.h,v 1.15.8.2 2007/12/03 21:30:36 marius Exp $ - */ - -#ifndef _SYS_ELF_COMMON_H_ -#define _SYS_ELF_COMMON_H_ 1 - -/* - * ELF definitions that are independent of architecture or word size. - */ - -/* - * Note header. The ".note" section contains an array of notes. Each - * begins with this header, aligned to a word boundary. Immediately - * following the note header is n_namesz bytes of name, padded to the - * next word boundary. Then comes n_descsz bytes of descriptor, again - * padded to a word boundary. The values of n_namesz and n_descsz do - * not include the padding. - */ - -typedef struct { - UINT32 n_namesz; /* Length of name. */ - UINT32 n_descsz; /* Length of descriptor. */ - UINT32 n_type; /* Type of this note. */ -} Elf_Note; - -/* Indexes into the e_ident array. Keep synced with - http://www.sco.com/developers/gabi/latest/ch4.eheader.html */ -#define EI_MAG0 0 /* Magic number, byte 0. */ -#define EI_MAG1 1 /* Magic number, byte 1. */ -#define EI_MAG2 2 /* Magic number, byte 2. */ -#define EI_MAG3 3 /* Magic number, byte 3. */ -#define EI_CLASS 4 /* Class of machine. */ -#define EI_DATA 5 /* Data format. */ -#define EI_VERSION 6 /* ELF format version. */ -#define EI_OSABI 7 /* Operating system / ABI identification */ -#define EI_ABIVERSION 8 /* ABI version */ -#define OLD_EI_BRAND 8 /* Start of architecture identification. */ -#define EI_PAD 9 /* Start of padding (per SVR4 ABI). */ -#define EI_NIDENT 16 /* Size of e_ident array. */ - -/* Values for the magic number bytes. */ -#define ELFMAG0 0x7f -#define ELFMAG1 'E' -#define ELFMAG2 'L' -#define ELFMAG3 'F' -#define ELFMAG "\177ELF" /* magic string */ -#define SELFMAG 4 /* magic string size */ - -/* Values for e_ident[EI_VERSION] and e_version. */ -#define EV_NONE 0 -#define EV_CURRENT 1 - -/* Values for e_ident[EI_CLASS]. */ -#define ELFCLASSNONE 0 /* Unknown class. */ -#define ELFCLASS32 1 /* 32-bit architecture. */ -#define ELFCLASS64 2 /* 64-bit architecture. */ - -/* Values for e_ident[EI_DATA]. */ -#define ELFDATANONE 0 /* Unknown data format. */ -#define ELFDATA2LSB 1 /* 2's complement little-endian. */ -#define ELFDATA2MSB 2 /* 2's complement big-endian. */ - -/* Values for e_ident[EI_OSABI]. */ -#define ELFOSABI_NONE 0 /* UNIX System V ABI */ -#define ELFOSABI_HPUX 1 /* HP-UX operating system */ -#define ELFOSABI_NETBSD 2 /* NetBSD */ -#define ELFOSABI_LINUX 3 /* GNU/Linux */ -#define ELFOSABI_HURD 4 /* GNU/Hurd */ -#define ELFOSABI_86OPEN 5 /* 86Open common IA32 ABI */ -#define ELFOSABI_SOLARIS 6 /* Solaris */ -#define ELFOSABI_AIX 7 /* AIX */ -#define ELFOSABI_IRIX 8 /* IRIX */ -#define ELFOSABI_FREEBSD 9 /* FreeBSD */ -#define ELFOSABI_TRU64 10 /* TRU64 UNIX */ -#define ELFOSABI_MODESTO 11 /* Novell Modesto */ -#define ELFOSABI_OPENBSD 12 /* OpenBSD */ -#define ELFOSABI_OPENVMS 13 /* Open VMS */ -#define ELFOSABI_NSK 14 /* HP Non-Stop Kernel */ -#define ELFOSABI_ARM 97 /* ARM */ -#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ - -#define ELFOSABI_SYSV ELFOSABI_NONE /* symbol used in old spec */ -#define ELFOSABI_MONTEREY ELFOSABI_AIX /* Monterey */ - -/* e_ident */ -#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \ - (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \ - (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \ - (ehdr).e_ident[EI_MAG3] == ELFMAG3) - -/* Values for e_type. */ -#define ET_NONE 0 /* Unknown type. */ -#define ET_REL 1 /* Relocatable. */ -#define ET_EXEC 2 /* Executable. */ -#define ET_DYN 3 /* Shared object. */ -#define ET_CORE 4 /* Core file. */ -#define ET_LOOS 0xfe00 /* First operating system specific. */ -#define ET_HIOS 0xfeff /* Last operating system-specific. */ -#define ET_LOPROC 0xff00 /* First processor-specific. */ -#define ET_HIPROC 0xffff /* Last processor-specific. */ - -/* Values for e_machine. */ -#define EM_NONE 0 /* Unknown machine. */ -#define EM_M32 1 /* AT&T WE32100. */ -#define EM_SPARC 2 /* Sun SPARC. */ -#define EM_386 3 /* Intel i386. */ -#define EM_68K 4 /* Motorola 68000. */ -#define EM_88K 5 /* Motorola 88000. */ -#define EM_860 7 /* Intel i860. */ -#define EM_MIPS 8 /* MIPS R3000 Big-Endian only. */ -#define EM_S370 9 /* IBM System/370. */ -#define EM_MIPS_RS3_LE 10 /* MIPS R3000 Little-Endian. */ -#define EM_PARISC 15 /* HP PA-RISC. */ -#define EM_VPP500 17 /* Fujitsu VPP500. */ -#define EM_SPARC32PLUS 18 /* SPARC v8plus. */ -#define EM_960 19 /* Intel 80960. */ -#define EM_PPC 20 /* PowerPC 32-bit. */ -#define EM_PPC64 21 /* PowerPC 64-bit. */ -#define EM_S390 22 /* IBM System/390. */ -#define EM_V800 36 /* NEC V800. */ -#define EM_FR20 37 /* Fujitsu FR20. */ -#define EM_RH32 38 /* TRW RH-32. */ -#define EM_RCE 39 /* Motorola RCE. */ -#define EM_ARM 40 /* ARM. */ -#define EM_SH 42 /* Hitachi SH. */ -#define EM_SPARCV9 43 /* SPARC v9 64-bit. */ -#define EM_TRICORE 44 /* Siemens TriCore embedded processor. */ -#define EM_ARC 45 /* Argonaut RISC Core. */ -#define EM_H8_300 46 /* Hitachi H8/300. */ -#define EM_H8_300H 47 /* Hitachi H8/300H. */ -#define EM_H8S 48 /* Hitachi H8S. */ -#define EM_H8_500 49 /* Hitachi H8/500. */ -#define EM_IA_64 50 /* Intel IA-64 Processor. */ -#define EM_MIPS_X 51 /* Stanford MIPS-X. */ -#define EM_COLDFIRE 52 /* Motorola ColdFire. */ -#define EM_68HC12 53 /* Motorola M68HC12. */ -#define EM_MMA 54 /* Fujitsu MMA. */ -#define EM_PCP 55 /* Siemens PCP. */ -#define EM_NCPU 56 /* Sony nCPU. */ -#define EM_NDR1 57 /* Denso NDR1 microprocessor. */ -#define EM_STARCORE 58 /* Motorola Star*Core processor. */ -#define EM_ME16 59 /* Toyota ME16 processor. */ -#define EM_ST100 60 /* STMicroelectronics ST100 processor. */ -#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ processor. */ -#define EM_X86_64 62 /* Advanced Micro Devices x86-64 */ -#define EM_AMD64 EM_X86_64 /* Advanced Micro Devices x86-64 (compat) */ -#define EM_AARCH64 183 /* ARM 64bit Architecture */ - -/* Non-standard or deprecated. */ -#define EM_486 6 /* Intel i486. */ -#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */ -#define EM_ALPHA_STD 41 /* Digital Alpha (standard value). */ -#define EM_ALPHA 0x9026 /* Alpha (written in the absence of an ABI) */ - -/* Special section indexes. */ -#define SHN_UNDEF 0 /* Undefined, missing, irrelevant. */ -#define SHN_LORESERVE 0xff00 /* First of reserved range. */ -#define SHN_LOPROC 0xff00 /* First processor-specific. */ -#define SHN_HIPROC 0xff1f /* Last processor-specific. */ -#define SHN_LOOS 0xff20 /* First operating system-specific. */ -#define SHN_HIOS 0xff3f /* Last operating system-specific. */ -#define SHN_ABS 0xfff1 /* Absolute values. */ -#define SHN_COMMON 0xfff2 /* Common data. */ -#define SHN_XINDEX 0xffff /* Escape -- index stored elsewhere. */ -#define SHN_HIRESERVE 0xffff /* Last of reserved range. */ - -/* sh_type */ -#define SHT_NULL 0 /* inactive */ -#define SHT_PROGBITS 1 /* program defined information */ -#define SHT_SYMTAB 2 /* symbol table section */ -#define SHT_STRTAB 3 /* string table section */ -#define SHT_RELA 4 /* relocation section with addends */ -#define SHT_HASH 5 /* symbol hash table section */ -#define SHT_DYNAMIC 6 /* dynamic section */ -#define SHT_NOTE 7 /* note section */ -#define SHT_NOBITS 8 /* no space section */ -#define SHT_REL 9 /* relocation section - no addends */ -#define SHT_SHLIB 10 /* reserved - purpose unknown */ -#define SHT_DYNSYM 11 /* dynamic symbol table section */ -#define SHT_INIT_ARRAY 14 /* Initialization function pointers. */ -#define SHT_FINI_ARRAY 15 /* Termination function pointers. */ -#define SHT_PREINIT_ARRAY 16 /* Pre-initialization function ptrs. */ -#define SHT_GROUP 17 /* Section group. */ -#define SHT_SYMTAB_SHNDX 18 /* Section indexes (see SHN_XINDEX). */ -#define SHT_LOOS 0x60000000 /* First of OS specific semantics */ -#define SHT_LOSUNW 0x6ffffff4 -#define SHT_SUNW_dof 0x6ffffff4 -#define SHT_SUNW_cap 0x6ffffff5 -#define SHT_SUNW_SIGNATURE 0x6ffffff6 -#define SHT_SUNW_ANNOTATE 0x6ffffff7 -#define SHT_SUNW_DEBUGSTR 0x6ffffff8 -#define SHT_SUNW_DEBUG 0x6ffffff9 -#define SHT_SUNW_move 0x6ffffffa -#define SHT_SUNW_COMDAT 0x6ffffffb -#define SHT_SUNW_syminfo 0x6ffffffc -#define SHT_SUNW_verdef 0x6ffffffd -#define SHT_GNU_verdef 0x6ffffffd /* Symbol versions provided */ -#define SHT_SUNW_verneed 0x6ffffffe -#define SHT_GNU_verneed 0x6ffffffe /* Symbol versions required */ -#define SHT_SUNW_versym 0x6fffffff -#define SHT_GNU_versym 0x6fffffff /* Symbol version table */ -#define SHT_HISUNW 0x6fffffff -#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ -#define SHT_LOPROC 0x70000000 /* reserved range for processor */ -#define SHT_AMD64_UNWIND 0x70000001 /* unwind information */ -#define SHT_HIPROC 0x7fffffff /* specific section header types */ -#define SHT_LOUSER 0x80000000 /* reserved range for application */ -#define SHT_HIUSER 0xffffffff /* specific indexes */ - -/* Flags for sh_flags. */ -#define SHF_WRITE 0x1 /* Section contains writable data. */ -#define SHF_ALLOC 0x2 /* Section occupies memory. */ -#define SHF_EXECINSTR 0x4 /* Section contains instructions. */ -#define SHF_MERGE 0x10 /* Section may be merged. */ -#define SHF_STRINGS 0x20 /* Section contains strings. */ -#define SHF_INFO_LINK 0x40 /* sh_info holds section index. */ -#define SHF_LINK_ORDER 0x80 /* Special ordering requirements. */ -#define SHF_OS_NONCONFORMING 0x100 /* OS-specific processing required. */ -#define SHF_GROUP 0x200 /* Member of section group. */ -#define SHF_TLS 0x400 /* Section contains TLS data. */ -#define SHF_MASKOS 0x0ff00000 /* OS-specific semantics. */ -#define SHF_MASKPROC 0xf0000000 /* Processor-specific semantics. */ - -/* Values for p_type. */ -#define PT_NULL 0 /* Unused entry. */ -#define PT_LOAD 1 /* Loadable segment. */ -#define PT_DYNAMIC 2 /* Dynamic linking information segment. */ -#define PT_INTERP 3 /* Pathname of interpreter. */ -#define PT_NOTE 4 /* Auxiliary information. */ -#define PT_SHLIB 5 /* Reserved (not used). */ -#define PT_PHDR 6 /* Location of program header itself. */ -#define PT_TLS 7 /* Thread local storage segment */ -#define PT_LOOS 0x60000000 /* First OS-specific. */ -#define PT_SUNW_UNWIND 0x6464e550 /* amd64 UNWIND program header */ -#define PT_GNU_EH_FRAME 0x6474e550 -#define PT_LOSUNW 0x6ffffffa -#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ -#define PT_SUNWSTACK 0x6ffffffb /* describes the stack segment */ -#define PT_SUNWDTRACE 0x6ffffffc /* private */ -#define PT_SUNWCAP 0x6ffffffd /* hard/soft capabilities segment */ -#define PT_HISUNW 0x6fffffff -#define PT_HIOS 0x6fffffff /* Last OS-specific. */ -#define PT_LOPROC 0x70000000 /* First processor-specific type. */ -#define PT_HIPROC 0x7fffffff /* Last processor-specific type. */ - -/* Values for p_flags. */ -#define PF_X 0x1 /* Executable. */ -#define PF_W 0x2 /* Writable. */ -#define PF_R 0x4 /* Readable. */ -#define PF_MASKOS 0x0ff00000 /* Operating system-specific. */ -#define PF_MASKPROC 0xf0000000 /* Processor-specific. */ - -/* Extended program header index. */ -#define PN_XNUM 0xffff - -/* Values for d_tag. */ -#define DT_NULL 0 /* Terminating entry. */ -#define DT_NEEDED 1 /* String table offset of a needed shared - library. */ -#define DT_PLTRELSZ 2 /* Total size in bytes of PLT relocations. */ -#define DT_PLTGOT 3 /* Processor-dependent address. */ -#define DT_HASH 4 /* Address of symbol hash table. */ -#define DT_STRTAB 5 /* Address of string table. */ -#define DT_SYMTAB 6 /* Address of symbol table. */ -#define DT_RELA 7 /* Address of ElfNN_Rela relocations. */ -#define DT_RELASZ 8 /* Total size of ElfNN_Rela relocations. */ -#define DT_RELAENT 9 /* Size of each ElfNN_Rela relocation entry. */ -#define DT_STRSZ 10 /* Size of string table. */ -#define DT_SYMENT 11 /* Size of each symbol table entry. */ -#define DT_INIT 12 /* Address of initialization function. */ -#define DT_FINI 13 /* Address of finalization function. */ -#define DT_SONAME 14 /* String table offset of shared object - name. */ -#define DT_RPATH 15 /* String table offset of library path. [sup] */ -#define DT_SYMBOLIC 16 /* Indicates "symbolic" linking. [sup] */ -#define DT_REL 17 /* Address of ElfNN_Rel relocations. */ -#define DT_RELSZ 18 /* Total size of ElfNN_Rel relocations. */ -#define DT_RELENT 19 /* Size of each ElfNN_Rel relocation. */ -#define DT_PLTREL 20 /* Type of relocation used for PLT. */ -#define DT_DEBUG 21 /* Reserved (not used). */ -#define DT_TEXTREL 22 /* Indicates there may be relocations in - non-writable segments. [sup] */ -#define DT_JMPREL 23 /* Address of PLT relocations. */ -#define DT_BIND_NOW 24 /* [sup] */ -#define DT_INIT_ARRAY 25 /* Address of the array of pointers to - initialization functions */ -#define DT_FINI_ARRAY 26 /* Address of the array of pointers to - termination functions */ -#define DT_INIT_ARRAYSZ 27 /* Size in bytes of the array of - initialization functions. */ -#define DT_FINI_ARRAYSZ 28 /* Size in bytes of the array of - terminationfunctions. */ -#define DT_RUNPATH 29 /* String table offset of a null-terminated - library search path string. */ -#define DT_FLAGS 30 /* Object specific flag values. */ -#define DT_ENCODING 32 /* Values greater than or equal to DT_ENCODING - and less than DT_LOOS follow the rules for - the interpretation of the d_un union - as follows: even == 'd_ptr', even == 'd_val' - or none */ -#define DT_PREINIT_ARRAY 32 /* Address of the array of pointers to - pre-initialization functions. */ -#define DT_PREINIT_ARRAYSZ 33 /* Size in bytes of the array of - pre-initialization functions. */ -#define DT_MAXPOSTAGS 34 /* number of positive tags */ -#define DT_LOOS 0x6000000d /* First OS-specific */ -#define DT_SUNW_AUXILIARY 0x6000000d /* symbol auxiliary name */ -#define DT_SUNW_RTLDINF 0x6000000e /* ld.so.1 info (private) */ -#define DT_SUNW_FILTER 0x6000000f /* symbol filter name */ -#define DT_SUNW_CAP 0x60000010 /* hardware/software */ -#define DT_HIOS 0x6ffff000 /* Last OS-specific */ - -/* - * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the - * Dyn.d_un.d_val field of the Elf*_Dyn structure. - */ -#define DT_VALRNGLO 0x6ffffd00 -#define DT_CHECKSUM 0x6ffffdf8 /* elf checksum */ -#define DT_PLTPADSZ 0x6ffffdf9 /* pltpadding size */ -#define DT_MOVEENT 0x6ffffdfa /* move table entry size */ -#define DT_MOVESZ 0x6ffffdfb /* move table size */ -#define DT_FEATURE_1 0x6ffffdfc /* feature holder */ -#define DT_POSFLAG_1 0x6ffffdfd /* flags for DT_* entries, effecting */ - /* the following DT_* entry. */ - /* See DF_P1_* definitions */ -#define DT_SYMINSZ 0x6ffffdfe /* syminfo table size (in bytes) */ -#define DT_SYMINENT 0x6ffffdff /* syminfo entry size (in bytes) */ -#define DT_VALRNGHI 0x6ffffdff - -/* - * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the - * Dyn.d_un.d_ptr field of the Elf*_Dyn structure. - * - * If any adjustment is made to the ELF object after it has been - * built, these entries will need to be adjusted. - */ -#define DT_ADDRRNGLO 0x6ffffe00 -#define DT_CONFIG 0x6ffffefa /* configuration information */ -#define DT_DEPAUDIT 0x6ffffefb /* dependency auditing */ -#define DT_AUDIT 0x6ffffefc /* object auditing */ -#define DT_PLTPAD 0x6ffffefd /* pltpadding (sparcv9) */ -#define DT_MOVETAB 0x6ffffefe /* move table */ -#define DT_SYMINFO 0x6ffffeff /* syminfo table */ -#define DT_ADDRRNGHI 0x6ffffeff - -#define DT_VERSYM 0x6ffffff0 /* Address of versym section. */ -#define DT_RELACOUNT 0x6ffffff9 /* number of RELATIVE relocations */ -#define DT_RELCOUNT 0x6ffffffa /* number of RELATIVE relocations */ -#define DT_FLAGS_1 0x6ffffffb /* state flags - see DF_1_* defs */ -#define DT_VERDEF 0x6ffffffc /* Address of verdef section. */ -#define DT_VERDEFNUM 0x6ffffffd /* Number of elems in verdef section */ -#define DT_VERNEED 0x6ffffffe /* Address of verneed section. */ -#define DT_VERNEEDNUM 0x6fffffff /* Number of elems in verneed section */ - -#define DT_LOPROC 0x70000000 /* First processor-specific type. */ -#define DT_DEPRECATED_SPARC_REGISTER 0x7000001 -#define DT_AUXILIARY 0x7ffffffd /* shared library auxiliary name */ -#define DT_USED 0x7ffffffe /* ignored - same as needed */ -#define DT_FILTER 0x7fffffff /* shared library filter name */ -#define DT_HIPROC 0x7fffffff /* Last processor-specific type. */ - -/* Values for DT_FLAGS */ -#define DF_ORIGIN 0x0001 /* Indicates that the object being loaded may - make reference to the $ORIGIN substitution - string */ -#define DF_SYMBOLIC 0x0002 /* Indicates "symbolic" linking. */ -#define DF_TEXTREL 0x0004 /* Indicates there may be relocations in - non-writable segments. */ -#define DF_BIND_NOW 0x0008 /* Indicates that the dynamic linker should - process all relocations for the object - containing this entry before transferring - control to the program. */ -#define DF_STATIC_TLS 0x0010 /* Indicates that the shared object or - executable contains code using a static - thread-local storage scheme. */ - -/* Values for n_type. Used in core files. */ -#define NT_PRSTATUS 1 /* Process status. */ -#define NT_FPREGSET 2 /* Floating point registers. */ -#define NT_PRPSINFO 3 /* Process state info. */ - -/* Symbol Binding - ELFNN_ST_BIND - st_info */ -#define STB_LOCAL 0 /* Local symbol */ -#define STB_GLOBAL 1 /* Global symbol */ -#define STB_WEAK 2 /* like global - lower precedence */ -#define STB_LOOS 10 /* Reserved range for operating system */ -#define STB_HIOS 12 /* specific semantics. */ -#define STB_LOPROC 13 /* reserved range for processor */ -#define STB_HIPROC 15 /* specific semantics. */ - -/* Symbol type - ELFNN_ST_TYPE - st_info */ -#define STT_NOTYPE 0 /* Unspecified type. */ -#define STT_OBJECT 1 /* Data object. */ -#define STT_FUNC 2 /* Function. */ -#define STT_SECTION 3 /* Section. */ -#define STT_FILE 4 /* Source file. */ -#define STT_COMMON 5 /* Uninitialized common block. */ -#define STT_TLS 6 /* TLS object. */ -#define STT_NUM 7 -#define STT_LOOS 10 /* Reserved range for operating system */ -#define STT_HIOS 12 /* specific semantics. */ -#define STT_LOPROC 13 /* reserved range for processor */ -#define STT_HIPROC 15 /* specific semantics. */ - -/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */ -#define STV_DEFAULT 0x0 /* Default visibility (see binding). */ -#define STV_INTERNAL 0x1 /* Special meaning in relocatable objects. */ -#define STV_HIDDEN 0x2 /* Not visible. */ -#define STV_PROTECTED 0x3 /* Visible but not preemptible. */ - -/* Special symbol table indexes. */ -#define STN_UNDEF 0 /* Undefined symbol index. */ - -/* Symbol versioning flags. */ -#define VER_DEF_CURRENT 1 -#define VER_DEF_IDX(x) VER_NDX(x) - -#define VER_FLG_BASE 0x01 -#define VER_FLG_WEAK 0x02 - -#define VER_NEED_CURRENT 1 -#define VER_NEED_WEAK (1u << 15) -#define VER_NEED_HIDDEN VER_NDX_HIDDEN -#define VER_NEED_IDX(x) VER_NDX(x) - -#define VER_NDX_LOCAL 0 -#define VER_NDX_GLOBAL 1 -#define VER_NDX_GIVEN 2 - -#define VER_NDX_HIDDEN (1u << 15) -#define VER_NDX(x) ((x) & ~(1u << 15)) - -#define CA_SUNW_NULL 0 -#define CA_SUNW_HW_1 1 /* first hardware capabilities entry */ -#define CA_SUNW_SF_1 2 /* first software capabilities entry */ - -/* - * Syminfo flag values - */ -#define SYMINFO_FLG_DIRECT 0x0001 /* symbol ref has direct association */ - /* to object containing defn. */ -#define SYMINFO_FLG_PASSTHRU 0x0002 /* ignored - see SYMINFO_FLG_FILTER */ -#define SYMINFO_FLG_COPY 0x0004 /* symbol is a copy-reloc */ -#define SYMINFO_FLG_LAZYLOAD 0x0008 /* object containing defn should be */ - /* lazily-loaded */ -#define SYMINFO_FLG_DIRECTBIND 0x0010 /* ref should be bound directly to */ - /* object containing defn. */ -#define SYMINFO_FLG_NOEXTDIRECT 0x0020 /* don't let an external reference */ - /* directly bind to this symbol */ -#define SYMINFO_FLG_FILTER 0x0002 /* symbol ref is associated to a */ -#define SYMINFO_FLG_AUXILIARY 0x0040 /* standard or auxiliary filter */ - -/* - * Syminfo.si_boundto values. - */ -#define SYMINFO_BT_SELF 0xffff /* symbol bound to self */ -#define SYMINFO_BT_PARENT 0xfffe /* symbol bound to parent */ -#define SYMINFO_BT_NONE 0xfffd /* no special symbol binding */ -#define SYMINFO_BT_EXTERN 0xfffc /* symbol defined as external */ -#define SYMINFO_BT_LOWRESERVE 0xff00 /* beginning of reserved entries */ - -/* - * Syminfo version values. - */ -#define SYMINFO_NONE 0 /* Syminfo version */ -#define SYMINFO_CURRENT 1 -#define SYMINFO_NUM 2 - -/* - * Relocation types. - * - * All machine architectures are defined here to allow tools on one to - * handle others. - */ - -#define R_386_NONE 0 /* No relocation. */ -#define R_386_32 1 /* Add symbol value. */ -#define R_386_PC32 2 /* Add PC-relative symbol value. */ -#define R_386_GOT32 3 /* Add PC-relative GOT offset. */ -#define R_386_PLT32 4 /* Add PC-relative PLT offset. */ -#define R_386_COPY 5 /* Copy data from shared object. */ -#define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ -#define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ -#define R_386_RELATIVE 8 /* Add load address of shared object. */ -#define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ -#define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ -#define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ -#define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ -#define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ -#define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ -#define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ -#define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ -#define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ -#define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ -#define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ -#define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ -#define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ -#define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ -#define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ -#define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ -#define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ -#define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ -#define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ -#define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ -#define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ -#define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ - -/* Null relocation */ -#define R_AARCH64_NONE 256 /* No relocation */ -/* Static AArch64 relocations */ - /* Static data relocations */ -#define R_AARCH64_ABS64 257 /* S + A */ -#define R_AARCH64_ABS32 258 /* S + A */ -#define R_AARCH64_ABS16 259 /* S + A */ -#define R_AARCH64_PREL64 260 /* S + A - P */ -#define R_AARCH64_PREL32 261 /* S + A - P */ -#define R_AARCH64_PREL16 262 /* S + A - P */ - /* Group relocations to create a 16, 32, 48, or 64 bit unsigned data value or address inline */ -#define R_AARCH64_MOVW_UABS_G0 263 /* S + A */ -#define R_AARCH64_MOVW_UABS_G0_NC 264 /* S + A */ -#define R_AARCH64_MOVW_UABS_G1 265 /* S + A */ -#define R_AARCH64_MOVW_UABS_G1_NC 266 /* S + A */ -#define R_AARCH64_MOVW_UABS_G2 267 /* S + A */ -#define R_AARCH64_MOVW_UABS_G2_NC 268 /* S + A */ -#define R_AARCH64_MOVW_UABS_G3 269 /* S + A */ - /* Group relocations to create a 16, 32, 48, or 64 bit signed data or offset value inline */ -#define R_AARCH64_MOVW_SABS_G0 270 /* S + A */ -#define R_AARCH64_MOVW_SABS_G1 271 /* S + A */ -#define R_AARCH64_MOVW_SABS_G2 272 /* S + A */ - /* Relocations to generate 19, 21 and 33 bit PC-relative addresses */ -#define R_AARCH64_LD_PREL_LO19 273 /* S + A - P */ -#define R_AARCH64_ADR_PREL_LO21 274 /* S + A - P */ -#define R_AARCH64_ADR_PREL_PG_HI21 275 /* Page(S+A) - Page(P) */ -#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 /* Page(S+A) - Page(P) */ -#define R_AARCH64_ADD_ABS_LO12_NC 277 /* S + A */ -#define R_AARCH64_LDST8_ABS_LO12_NC 278 /* S + A */ -#define R_AARCH64_LDST16_ABS_LO12_NC 284 /* S + A */ -#define R_AARCH64_LDST32_ABS_LO12_NC 285 /* S + A */ -#define R_AARCH64_LDST64_ABS_LO12_NC 286 /* S + A */ -#define R_AARCH64_LDST128_ABS_LO12_NC 299 /* S + A */ - /* Relocations for control-flow instructions - all offsets are a multiple of 4 */ -#define R_AARCH64_TSTBR14 279 /* S+A-P */ -#define R_AARCH64_CONDBR19 280 /* S+A-P */ -#define R_AARCH64_JUMP26 282 /* S+A-P */ -#define R_AARCH64_CALL26 283 /* S+A-P */ - /* Group relocations to create a 16, 32, 48, or 64 bit PC-relative offset inline */ -#define R_AARCH64_MOVW_PREL_G0 287 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G0_NC 288 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G1 289 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G1_NC 290 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G2 291 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G2_NC 292 /* S+A-P */ -#define R_AARCH64_MOVW_PREL_G3 293 /* S+A-P */ - /* Group relocations to create a 16, 32, 48, or 64 bit GOT-relative offsets inline */ -#define R_AARCH64_MOVW_GOTOFF_G0 300 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G1 302 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G2 304 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 /* G(S)-GOT */ -#define R_AARCH64_MOVW_GOTOFF_G3 306 /* G(S)-GOT */ - /* GOT-relative data relocations */ -#define R_AARCH64_GOTREL64 307 /* S+A-GOT */ -#define R_AARCH64_GOTREL32 308 /* S+A-GOT */ - /* GOT-relative instruction relocations */ -#define R_AARCH64_GOT_LD_PREL19 309 /* G(S)-P */ -#define R_AARCH64_LD64_GOTOFF_LO15 310 /* G(S)-GOT */ -#define R_AARCH64_ADR_GOT_PAGE 311 /* Page(G(S))-Page(P) */ -#define R_AARCH64_LD64_GOT_LO12_NC 312 /* G(S) */ -#define R_AARCH64_LD64_GOTPAGE_LO15 313 /* G(S)-Page(GOT) */ -/* Relocations for thread-local storage */ - /* General Dynamic TLS relocations */ -#define R_AARCH64_TLSGD_ADR_PREL21 512 /* G(TLSIDX(S+A)) - P */ -#define R_AARCH64_TLSGD_ADR_PAGE21 513 /* Page(G(TLSIDX(S+A))) - Page(P) */ -#define R_AARCH64_TLSGD_ADD_LO12_NC 514 /* G(TLSIDX(S+A)) */ -#define R_AARCH64_TLSGD_MOVW_G1 515 /* G(TLSIDX(S+A)) - GOT */ -#define R_AARCH64_TLSGD_MOVW_G0_NC 516 /* G(TLSIDX(S+A)) - GOT */ - /* Local Dynamic TLS relocations */ -#define R_AARCH64_TLSLD_ADR_PREL21 517 /* G(LDM(S))) - P */ -#define R_AARCH64_TLSLD_ADR_PAGE21 518 /* Page(G(LDM(S)))-Page(P) */ -#define R_AARCH64_TLSLD_ADD_LO12_NC 519 /* G(LDM(S)) */ -#define R_AARCH64_TLSLD_MOVW_G1 520 /* G(LDM(S)) - GOT */ -#define R_AARCH64_TLSLD_MOVW_G0_NC 521 /* G(LDM(S)) - GOT */ -#define R_AARCH64_TLSLD_LD_PREL19 522 /* G(LDM(S)) - P */ -#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 /* DTPREL(S+A) */ -#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 /* DTPREL(S+A) */ - /* Initial Exec TLS relocations */ -#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 /* G(TPREL(S+A)) - GOT */ -#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 /* G(TPREL(S+A)) - GOT */ -#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 /* Page(G(TPREL(S+A))) - Page(P) */ -#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 /* G(TPREL(S+A)) */ -#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 /* G(TPREL(S+A)) - P */ - /* Local Exec TLS relocations */ -#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 /* TPREL(S+A) */ -#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 /* TPREL(S+A) */ -/* Dynamic relocations */ - /* Dynamic relocations */ -#define R_AARCH64_COPY 1024 -#define R_AARCH64_GLOB_DAT 1025 /* S + A */ -#define R_AARCH64_JUMP_SLOT 1026 /* S + A */ -#define R_AARCH64_RELATIVE 1027 /* Delta(S) + A , Delta(P) + A */ -#define R_AARCH64_TLS_DTPREL64 1028 /* DTPREL(S+A) */ -#define R_AARCH64_TLS_DTPMOD64 1029 /* LDM(S) */ -#define R_AARCH64_TLS_TPREL64 1030 /* TPREL(S+A) */ -#define R_AARCH64_TLS_DTPREL32 1031 /* DTPREL(S+A) */ -#define R_AARCH64_TLS_DTPMOD32 1032 /* LDM(S) */ -#define R_AARCH64_TLS_TPREL32 1033 /* DTPREL(S+A) */ - -#define R_ALPHA_NONE 0 /* No reloc */ -#define R_ALPHA_REFLONG 1 /* Direct 32 bit */ -#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */ -#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */ -#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */ -#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */ -#define R_ALPHA_GPDISP 6 /* Add displacement to GP */ -#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */ -#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */ -#define R_ALPHA_SREL16 9 /* PC relative 16 bit */ -#define R_ALPHA_SREL32 10 /* PC relative 32 bit */ -#define R_ALPHA_SREL64 11 /* PC relative 64 bit */ -#define R_ALPHA_OP_PUSH 12 /* OP stack push */ -#define R_ALPHA_OP_STORE 13 /* OP stack pop and store */ -#define R_ALPHA_OP_PSUB 14 /* OP stack subtract */ -#define R_ALPHA_OP_PRSHIFT 15 /* OP stack right shift */ -#define R_ALPHA_GPVALUE 16 -#define R_ALPHA_GPRELHIGH 17 -#define R_ALPHA_GPRELLOW 18 -#define R_ALPHA_IMMED_GP_16 19 -#define R_ALPHA_IMMED_GP_HI32 20 -#define R_ALPHA_IMMED_SCN_HI32 21 -#define R_ALPHA_IMMED_BR_HI32 22 -#define R_ALPHA_IMMED_LO32 23 -#define R_ALPHA_COPY 24 /* Copy symbol at runtime */ -#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */ -#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */ -#define R_ALPHA_RELATIVE 27 /* Adjust by program base */ - -#define R_ARM_NONE 0 /* No relocation. */ -#define R_ARM_PC24 1 -#define R_ARM_ABS32 2 -#define R_ARM_REL32 3 -#define R_ARM_PC13 4 -#define R_ARM_ABS16 5 -#define R_ARM_ABS12 6 -#define R_ARM_THM_ABS5 7 -#define R_ARM_ABS8 8 -#define R_ARM_SBREL32 9 -#define R_ARM_THM_PC22 10 -#define R_ARM_THM_PC8 11 -#define R_ARM_AMP_VCALL9 12 -#define R_ARM_SWI24 13 -#define R_ARM_THM_SWI8 14 -#define R_ARM_XPC25 15 -#define R_ARM_THM_XPC22 16 -#define R_ARM_COPY 20 /* Copy data from shared object. */ -#define R_ARM_GLOB_DAT 21 /* Set GOT entry to data address. */ -#define R_ARM_JUMP_SLOT 22 /* Set GOT entry to code address. */ -#define R_ARM_RELATIVE 23 /* Add load address of shared object. */ -#define R_ARM_GOTOFF 24 /* Add GOT-relative symbol address. */ -#define R_ARM_GOTPC 25 /* Add PC-relative GOT table address. */ -#define R_ARM_GOT32 26 /* Add PC-relative GOT offset. */ -#define R_ARM_PLT32 27 /* Add PC-relative PLT offset. */ -#define R_ARM_CALL 28 -#define R_ARM_JMP24 29 -#define R_ARM_MOVW_ABS_NC 43 -#define R_ARM_MOVT_ABS 44 -#define R_ARM_THM_MOVW_ABS_NC 47 -#define R_ARM_THM_MOVT_ABS 48 - -// Block of PC-relative relocations added to work around gcc putting -// object relocations in static executables. -#define R_ARM_THM_JUMP24 30 -#define R_ARM_PREL31 42 -#define R_ARM_MOVW_PREL_NC 45 -#define R_ARM_MOVT_PREL 46 -#define R_ARM_THM_MOVW_PREL_NC 49 -#define R_ARM_THM_MOVT_PREL 50 -#define R_ARM_THM_JMP6 52 -#define R_ARM_THM_ALU_PREL_11_0 53 -#define R_ARM_THM_PC12 54 -#define R_ARM_REL32_NOI 56 -#define R_ARM_ALU_PC_G0_NC 57 -#define R_ARM_ALU_PC_G0 58 -#define R_ARM_ALU_PC_G1_NC 59 -#define R_ARM_ALU_PC_G1 60 -#define R_ARM_ALU_PC_G2 61 -#define R_ARM_LDR_PC_G1 62 -#define R_ARM_LDR_PC_G2 63 -#define R_ARM_LDRS_PC_G0 64 -#define R_ARM_LDRS_PC_G1 65 -#define R_ARM_LDRS_PC_G2 66 -#define R_ARM_LDC_PC_G0 67 -#define R_ARM_LDC_PC_G1 68 -#define R_ARM_LDC_PC_G2 69 -#define R_ARM_GOT_PREL 96 -#define R_ARM_THM_JUMP11 102 -#define R_ARM_THM_JUMP8 103 -#define R_ARM_TLS_GD32 104 -#define R_ARM_TLS_LDM32 105 -#define R_ARM_TLS_IE32 107 - -#define R_ARM_THM_JUMP19 51 -#define R_ARM_GNU_VTENTRY 100 -#define R_ARM_GNU_VTINHERIT 101 -#define R_ARM_RSBREL32 250 -#define R_ARM_THM_RPC22 251 -#define R_ARM_RREL32 252 -#define R_ARM_RABS32 253 -#define R_ARM_RPC24 254 -#define R_ARM_RBASE 255 - - - -/* Name Value Field Calculation */ -#define R_IA_64_NONE 0 /* None */ -#define R_IA_64_IMM14 0x21 /* immediate14 S + A */ -#define R_IA_64_IMM22 0x22 /* immediate22 S + A */ -#define R_IA_64_IMM64 0x23 /* immediate64 S + A */ -#define R_IA_64_DIR32MSB 0x24 /* word32 MSB S + A */ -#define R_IA_64_DIR32LSB 0x25 /* word32 LSB S + A */ -#define R_IA_64_DIR64MSB 0x26 /* word64 MSB S + A */ -#define R_IA_64_DIR64LSB 0x27 /* word64 LSB S + A */ -#define R_IA_64_GPREL22 0x2a /* immediate22 @gprel(S + A) */ -#define R_IA_64_GPREL64I 0x2b /* immediate64 @gprel(S + A) */ -#define R_IA_64_GPREL32MSB 0x2c /* word32 MSB @gprel(S + A) */ -#define R_IA_64_GPREL32LSB 0x2d /* word32 LSB @gprel(S + A) */ -#define R_IA_64_GPREL64MSB 0x2e /* word64 MSB @gprel(S + A) */ -#define R_IA_64_GPREL64LSB 0x2f /* word64 LSB @gprel(S + A) */ -#define R_IA_64_LTOFF22 0x32 /* immediate22 @ltoff(S + A) */ -#define R_IA_64_LTOFF64I 0x33 /* immediate64 @ltoff(S + A) */ -#define R_IA_64_PLTOFF22 0x3a /* immediate22 @pltoff(S + A) */ -#define R_IA_64_PLTOFF64I 0x3b /* immediate64 @pltoff(S + A) */ -#define R_IA_64_PLTOFF64MSB 0x3e /* word64 MSB @pltoff(S + A) */ -#define R_IA_64_PLTOFF64LSB 0x3f /* word64 LSB @pltoff(S + A) */ -#define R_IA_64_FPTR64I 0x43 /* immediate64 @fptr(S + A) */ -#define R_IA_64_FPTR32MSB 0x44 /* word32 MSB @fptr(S + A) */ -#define R_IA_64_FPTR32LSB 0x45 /* word32 LSB @fptr(S + A) */ -#define R_IA_64_FPTR64MSB 0x46 /* word64 MSB @fptr(S + A) */ -#define R_IA_64_FPTR64LSB 0x47 /* word64 LSB @fptr(S + A) */ -#define R_IA_64_PCREL60B 0x48 /* immediate60 form1 S + A - P */ -#define R_IA_64_PCREL21B 0x49 /* immediate21 form1 S + A - P */ -#define R_IA_64_PCREL21M 0x4a /* immediate21 form2 S + A - P */ -#define R_IA_64_PCREL21F 0x4b /* immediate21 form3 S + A - P */ -#define R_IA_64_PCREL32MSB 0x4c /* word32 MSB S + A - P */ -#define R_IA_64_PCREL32LSB 0x4d /* word32 LSB S + A - P */ -#define R_IA_64_PCREL64MSB 0x4e /* word64 MSB S + A - P */ -#define R_IA_64_PCREL64LSB 0x4f /* word64 LSB S + A - P */ -#define R_IA_64_LTOFF_FPTR22 0x52 /* immediate22 @ltoff(@fptr(S + A)) */ -#define R_IA_64_LTOFF_FPTR64I 0x53 /* immediate64 @ltoff(@fptr(S + A)) */ -#define R_IA_64_LTOFF_FPTR32MSB 0x54 /* word32 MSB @ltoff(@fptr(S + A)) */ -#define R_IA_64_LTOFF_FPTR32LSB 0x55 /* word32 LSB @ltoff(@fptr(S + A)) */ -#define R_IA_64_LTOFF_FPTR64MSB 0x56 /* word64 MSB @ltoff(@fptr(S + A)) */ -#define R_IA_64_LTOFF_FPTR64LSB 0x57 /* word64 LSB @ltoff(@fptr(S + A)) */ -#define R_IA_64_SEGREL32MSB 0x5c /* word32 MSB @segrel(S + A) */ -#define R_IA_64_SEGREL32LSB 0x5d /* word32 LSB @segrel(S + A) */ -#define R_IA_64_SEGREL64MSB 0x5e /* word64 MSB @segrel(S + A) */ -#define R_IA_64_SEGREL64LSB 0x5f /* word64 LSB @segrel(S + A) */ -#define R_IA_64_SECREL32MSB 0x64 /* word32 MSB @secrel(S + A) */ -#define R_IA_64_SECREL32LSB 0x65 /* word32 LSB @secrel(S + A) */ -#define R_IA_64_SECREL64MSB 0x66 /* word64 MSB @secrel(S + A) */ -#define R_IA_64_SECREL64LSB 0x67 /* word64 LSB @secrel(S + A) */ -#define R_IA_64_REL32MSB 0x6c /* word32 MSB BD + A */ -#define R_IA_64_REL32LSB 0x6d /* word32 LSB BD + A */ -#define R_IA_64_REL64MSB 0x6e /* word64 MSB BD + A */ -#define R_IA_64_REL64LSB 0x6f /* word64 LSB BD + A */ -#define R_IA_64_LTV32MSB 0x74 /* word32 MSB S + A */ -#define R_IA_64_LTV32LSB 0x75 /* word32 LSB S + A */ -#define R_IA_64_LTV64MSB 0x76 /* word64 MSB S + A */ -#define R_IA_64_LTV64LSB 0x77 /* word64 LSB S + A */ -#define R_IA_64_PCREL21BI 0x79 /* immediate21 form1 S + A - P */ -#define R_IA_64_PCREL22 0x7a /* immediate22 S + A - P */ -#define R_IA_64_PCREL64I 0x7b /* immediate64 S + A - P */ -#define R_IA_64_IPLTMSB 0x80 /* function descriptor MSB special */ -#define R_IA_64_IPLTLSB 0x81 /* function descriptor LSB speciaal */ -#define R_IA_64_SUB 0x85 /* immediate64 A - S */ -#define R_IA_64_LTOFF22X 0x86 /* immediate22 special */ -#define R_IA_64_LDXMOV 0x87 /* immediate22 special */ -#define R_IA_64_TPREL14 0x91 /* imm14 @tprel(S + A) */ -#define R_IA_64_TPREL22 0x92 /* imm22 @tprel(S + A) */ -#define R_IA_64_TPREL64I 0x93 /* imm64 @tprel(S + A) */ -#define R_IA_64_TPREL64MSB 0x96 /* word64 MSB @tprel(S + A) */ -#define R_IA_64_TPREL64LSB 0x97 /* word64 LSB @tprel(S + A) */ -#define R_IA_64_LTOFF_TPREL22 0x9a /* imm22 @ltoff(@tprel(S+A)) */ -#define R_IA_64_DTPMOD64MSB 0xa6 /* word64 MSB @dtpmod(S + A) */ -#define R_IA_64_DTPMOD64LSB 0xa7 /* word64 LSB @dtpmod(S + A) */ -#define R_IA_64_LTOFF_DTPMOD22 0xaa /* imm22 @ltoff(@dtpmod(S+A)) */ -#define R_IA_64_DTPREL14 0xb1 /* imm14 @dtprel(S + A) */ -#define R_IA_64_DTPREL22 0xb2 /* imm22 @dtprel(S + A) */ -#define R_IA_64_DTPREL64I 0xb3 /* imm64 @dtprel(S + A) */ -#define R_IA_64_DTPREL32MSB 0xb4 /* word32 MSB @dtprel(S + A) */ -#define R_IA_64_DTPREL32LSB 0xb5 /* word32 LSB @dtprel(S + A) */ -#define R_IA_64_DTPREL64MSB 0xb6 /* word64 MSB @dtprel(S + A) */ -#define R_IA_64_DTPREL64LSB 0xb7 /* word64 LSB @dtprel(S + A) */ -#define R_IA_64_LTOFF_DTPREL22 0xba /* imm22 @ltoff(@dtprel(S+A)) */ - -#define R_PPC_NONE 0 /* No relocation. */ -#define R_PPC_ADDR32 1 -#define R_PPC_ADDR24 2 -#define R_PPC_ADDR16 3 -#define R_PPC_ADDR16_LO 4 -#define R_PPC_ADDR16_HI 5 -#define R_PPC_ADDR16_HA 6 -#define R_PPC_ADDR14 7 -#define R_PPC_ADDR14_BRTAKEN 8 -#define R_PPC_ADDR14_BRNTAKEN 9 -#define R_PPC_REL24 10 -#define R_PPC_REL14 11 -#define R_PPC_REL14_BRTAKEN 12 -#define R_PPC_REL14_BRNTAKEN 13 -#define R_PPC_GOT16 14 -#define R_PPC_GOT16_LO 15 -#define R_PPC_GOT16_HI 16 -#define R_PPC_GOT16_HA 17 -#define R_PPC_PLTREL24 18 -#define R_PPC_COPY 19 -#define R_PPC_GLOB_DAT 20 -#define R_PPC_JMP_SLOT 21 -#define R_PPC_RELATIVE 22 -#define R_PPC_LOCAL24PC 23 -#define R_PPC_UADDR32 24 -#define R_PPC_UADDR16 25 -#define R_PPC_REL32 26 -#define R_PPC_PLT32 27 -#define R_PPC_PLTREL32 28 -#define R_PPC_PLT16_LO 29 -#define R_PPC_PLT16_HI 30 -#define R_PPC_PLT16_HA 31 -#define R_PPC_SDAREL16 32 -#define R_PPC_SECTOFF 33 -#define R_PPC_SECTOFF_LO 34 -#define R_PPC_SECTOFF_HI 35 -#define R_PPC_SECTOFF_HA 36 - -/* - * TLS relocations - */ -#define R_PPC_TLS 67 -#define R_PPC_DTPMOD32 68 -#define R_PPC_TPREL16 69 -#define R_PPC_TPREL16_LO 70 -#define R_PPC_TPREL16_HI 71 -#define R_PPC_TPREL16_HA 72 -#define R_PPC_TPREL32 73 -#define R_PPC_DTPREL16 74 -#define R_PPC_DTPREL16_LO 75 -#define R_PPC_DTPREL16_HI 76 -#define R_PPC_DTPREL16_HA 77 -#define R_PPC_DTPREL32 78 -#define R_PPC_GOT_TLSGD16 79 -#define R_PPC_GOT_TLSGD16_LO 80 -#define R_PPC_GOT_TLSGD16_HI 81 -#define R_PPC_GOT_TLSGD16_HA 82 -#define R_PPC_GOT_TLSLD16 83 -#define R_PPC_GOT_TLSLD16_LO 84 -#define R_PPC_GOT_TLSLD16_HI 85 -#define R_PPC_GOT_TLSLD16_HA 86 -#define R_PPC_GOT_TPREL16 87 -#define R_PPC_GOT_TPREL16_LO 88 -#define R_PPC_GOT_TPREL16_HI 89 -#define R_PPC_GOT_TPREL16_HA 90 - -/* - * The remaining relocs are from the Embedded ELF ABI, and are not in the - * SVR4 ELF ABI. - */ - -#define R_PPC_EMB_NADDR32 101 -#define R_PPC_EMB_NADDR16 102 -#define R_PPC_EMB_NADDR16_LO 103 -#define R_PPC_EMB_NADDR16_HI 104 -#define R_PPC_EMB_NADDR16_HA 105 -#define R_PPC_EMB_SDAI16 106 -#define R_PPC_EMB_SDA2I16 107 -#define R_PPC_EMB_SDA2REL 108 -#define R_PPC_EMB_SDA21 109 -#define R_PPC_EMB_MRKREF 110 -#define R_PPC_EMB_RELSEC16 111 -#define R_PPC_EMB_RELST_LO 112 -#define R_PPC_EMB_RELST_HI 113 -#define R_PPC_EMB_RELST_HA 114 -#define R_PPC_EMB_BIT_FLD 115 -#define R_PPC_EMB_RELSDA 116 - -#define R_SPARC_NONE 0 -#define R_SPARC_8 1 -#define R_SPARC_16 2 -#define R_SPARC_32 3 -#define R_SPARC_DISP8 4 -#define R_SPARC_DISP16 5 -#define R_SPARC_DISP32 6 -#define R_SPARC_WDISP30 7 -#define R_SPARC_WDISP22 8 -#define R_SPARC_HI22 9 -#define R_SPARC_22 10 -#define R_SPARC_13 11 -#define R_SPARC_LO10 12 -#define R_SPARC_GOT10 13 -#define R_SPARC_GOT13 14 -#define R_SPARC_GOT22 15 -#define R_SPARC_PC10 16 -#define R_SPARC_PC22 17 -#define R_SPARC_WPLT30 18 -#define R_SPARC_COPY 19 -#define R_SPARC_GLOB_DAT 20 -#define R_SPARC_JMP_SLOT 21 -#define R_SPARC_RELATIVE 22 -#define R_SPARC_UA32 23 -#define R_SPARC_PLT32 24 -#define R_SPARC_HIPLT22 25 -#define R_SPARC_LOPLT10 26 -#define R_SPARC_PCPLT32 27 -#define R_SPARC_PCPLT22 28 -#define R_SPARC_PCPLT10 29 -#define R_SPARC_10 30 -#define R_SPARC_11 31 -#define R_SPARC_64 32 -#define R_SPARC_OLO10 33 -#define R_SPARC_HH22 34 -#define R_SPARC_HM10 35 -#define R_SPARC_LM22 36 -#define R_SPARC_PC_HH22 37 -#define R_SPARC_PC_HM10 38 -#define R_SPARC_PC_LM22 39 -#define R_SPARC_WDISP16 40 -#define R_SPARC_WDISP19 41 -#define R_SPARC_GLOB_JMP 42 -#define R_SPARC_7 43 -#define R_SPARC_5 44 -#define R_SPARC_6 45 -#define R_SPARC_DISP64 46 -#define R_SPARC_PLT64 47 -#define R_SPARC_HIX22 48 -#define R_SPARC_LOX10 49 -#define R_SPARC_H44 50 -#define R_SPARC_M44 51 -#define R_SPARC_L44 52 -#define R_SPARC_REGISTER 53 -#define R_SPARC_UA64 54 -#define R_SPARC_UA16 55 -#define R_SPARC_TLS_GD_HI22 56 -#define R_SPARC_TLS_GD_LO10 57 -#define R_SPARC_TLS_GD_ADD 58 -#define R_SPARC_TLS_GD_CALL 59 -#define R_SPARC_TLS_LDM_HI22 60 -#define R_SPARC_TLS_LDM_LO10 61 -#define R_SPARC_TLS_LDM_ADD 62 -#define R_SPARC_TLS_LDM_CALL 63 -#define R_SPARC_TLS_LDO_HIX22 64 -#define R_SPARC_TLS_LDO_LOX10 65 -#define R_SPARC_TLS_LDO_ADD 66 -#define R_SPARC_TLS_IE_HI22 67 -#define R_SPARC_TLS_IE_LO10 68 -#define R_SPARC_TLS_IE_LD 69 -#define R_SPARC_TLS_IE_LDX 70 -#define R_SPARC_TLS_IE_ADD 71 -#define R_SPARC_TLS_LE_HIX22 72 -#define R_SPARC_TLS_LE_LOX10 73 -#define R_SPARC_TLS_DTPMOD32 74 -#define R_SPARC_TLS_DTPMOD64 75 -#define R_SPARC_TLS_DTPOFF32 76 -#define R_SPARC_TLS_DTPOFF64 77 -#define R_SPARC_TLS_TPOFF32 78 -#define R_SPARC_TLS_TPOFF64 79 - -#define R_X86_64_NONE 0 /* No relocation. */ -#define R_X86_64_64 1 /* Add 64 bit symbol value. */ -#define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ -#define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ -#define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ -#define R_X86_64_COPY 5 /* Copy data from shared object. */ -#define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ -#define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ -#define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ -#define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ -#define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ -#define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ -#define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ -#define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ -#define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ -#define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ -#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ -#define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ -#define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ -#define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ -#define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ -#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ -#define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ -#define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ - - -#endif /* !_SYS_ELF_COMMON_H_ */ From patchwork Mon Dec 4 22:22:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120605 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434443edb; Mon, 4 Dec 2017 14:23:10 -0800 (PST) X-Google-Smtp-Source: AGs4zMasHZsQdUzsFDSbqoyAm8xtXenzwwwp9+QGx2I90i7OzvdakldzVHyl5nPvdy/EnDH4eiw7 X-Received: by 10.84.246.18 with SMTP id k18mr16266533pll.374.1512426190052; Mon, 04 Dec 2017 14:23:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426190; cv=none; d=google.com; s=arc-20160816; b=ktFBGcsMyBezEo/P2E4niemIpac0QSxNyMD9z1zj+tEx/hO6TQt4bds26KpXy0kSJK Z8Ae7uu3YeryIuDscWrtPrABiMNdJFMFQcwl9gNnlV9C0dFOtZSSsjCTbHgoRdhnJnwD z7XiWugCciEWPb2wdipy45ptRWrm9/EbHojXz+tl4d5jjRQke5oS+ivdGpH9GjDKfhVw 79+P0rQKxMrBR+/xT3Scjb6FhZynrj84ozwRbxBr3aaRJim+5fwKcFiHUo8gFPTaLR/q gSjWLkUiV/VNTe1YlWeBOPiFRCVp4VLfF2Uwmms8TeX7z6/Gn/URWNWUbgy56ZBFS/8A FcxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=ZRDse+LrjYguTWSF3GYvtDt9yki5ztajl3Yzqalsqp8=; b=tkhFJzG+KOs9QwMkea+6UhsGzBaBkOTqj3jANf0qBoW5/qG1qbQ0mkYfC1OjdrqFEM 2sxL9fD/NbrlXmaYLhv/FwnaHpXL4Sya0n+x8CHc0zbntgwt0NRbPb7rT3GwQ6llSi77 SouvedZ6ROWzn4dGLQfI5m92w6r4BIEsYiMIhZFngG1AtY5HVBIoIsiw6lXVkd2Jkm4z RQ/eAGAIfmvaATgW9tvQnzywSsHZaBkX770pnnpgTBjTtCP6gNjIlg5o2plUxGMdnwhq 3ptUjuMn4r54M/BUKb28FKLY2QNDdlot0VGp04bUM0+E+gYNJ4ufqafvJT3cRzMr9sQs PFlA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=EIkIdGf3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id p8si10966902pfj.378.2017.12.04.14.23.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:10 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=EIkIdGf3; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 275CD221523B3; Mon, 4 Dec 2017 14:18:39 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::229; helo=mail-wr0-x229.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x229.google.com (mail-wr0-x229.google.com [IPv6:2a00:1450:400c:c0c::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C74CA20359E96 for ; Mon, 4 Dec 2017 14:18:37 -0800 (PST) Received: by mail-wr0-x229.google.com with SMTP id q9so18989845wre.7 for ; Mon, 04 Dec 2017 14:23:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=THoPk4NtQwshgtltQhm36rQHgZFUqU6CCcj4/P2VIT0=; b=EIkIdGf3zLBLUw1eIMTDdEQS9QDohL+ElwmeWcEu8f9EQleDOHaasNG3P6y2/TCgLc VKOnhByEy+pu0XWVM5ulm3BodQUmSrsIkELAcVDKfQg15mbErlLdbwSjuZZlQlN+iqG6 O2F9iqeIsg2TDOpyIoGa7Lztb26ArQ+2lVK7g= 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; bh=THoPk4NtQwshgtltQhm36rQHgZFUqU6CCcj4/P2VIT0=; b=ZpTm6FnXL2rZMPrfn6X7d87MSMB3s971kHMbzWA0sdwV856+xx6/CWA4g4xnoppaT5 AMIxht2C7XvxZuEmyIcOQ9FnCB232QLCF+gDWq/e7oX3ny8H+lm+NlRMVz0H93Epx+dv veUag11rTrNSy50qWP80p9a7riSgn8gDA2RdxxwThiOG9fekjmQihoxMU1StfET8S9Ev HI0aMmNfcX24cJzAuJy11zMlypAgKTiGE9ZhawsNoheOhFSRjTTYk6ZOx6o51rnJMSqu ziAO7EEcsJJJaF3NLAWk7eAU5uCFhZ/uU+G0cX/l8DLkg1YDkBidIpjm07gmcN3RpMqZ UB0A== X-Gm-Message-State: AJaThX65K7myWTPbIBbnmIfIXOVpxiMVFIQlivrLieX9eevK24eNCsNH T9f0kAObdcb4Bd2nnbX38GnUhDx3W4A= X-Received: by 10.223.201.138 with SMTP id f10mr14113868wrh.9.1512426185848; Mon, 04 Dec 2017 14:23:05 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:05 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:35 +0000 Message-Id: <20171204222243.15950-6-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 05/13] ArmPlatformPkg: remove old PL011UartLib implementation X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Remove the PL011UartLib implementation that has been superseded by the one under Library/ Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c | 470 -------------------- ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf | 42 -- ArmPlatformPkg/Include/Drivers/PL011Uart.h | 290 ------------ 3 files changed, 802 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c deleted file mode 100644 index 77630237ae91..000000000000 --- a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c +++ /dev/null @@ -1,470 +0,0 @@ -/** @file - Serial I/O Port library functions with no library constructor/destructor - - Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
- Copyright (c) 2011 - 2016, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include -#include -#include - -#include - -#define FRACTION_PART_SIZE_IN_BITS 6 -#define FRACTION_PART_MASK ((1 << FRACTION_PART_SIZE_IN_BITS) - 1) - -// -// EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE is the only -// control bit that is not supported. -// -STATIC CONST UINT32 mInvalidControlBits = EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE; - -/** - - Initialise the serial port to the specified settings. - The serial port is re-configured only if the specified settings - are different from the current settings. - All unspecified settings will be set to the default values. - - @param UartBase The base address of the serial device. - @param UartClkInHz The clock in Hz for the serial device. - Ignored if the PCD PL011UartInteger is not 0 - @param BaudRate The baud rate of the serial device. If the - baud rate is not supported, the speed will be - reduced to the nearest supported one and the - variable's value will be updated accordingly. - @param ReceiveFifoDepth The number of characters the device will - buffer on input. Value of 0 will use the - device's default FIFO depth. - @param Parity If applicable, this is the EFI_PARITY_TYPE - that is computed or checked as each character - is transmitted or received. If the device - does not support parity, the value is the - default parity value. - @param DataBits The number of data bits in each character. - @param StopBits If applicable, the EFI_STOP_BITS_TYPE number - of stop bits per character. - If the device does not support stop bits, the - value is the default stop bit value. - - @retval RETURN_SUCCESS All attributes were set correctly on the - serial device. - @retval RETURN_INVALID_PARAMETER One or more of the attributes has an - unsupported value. - -**/ -RETURN_STATUS -EFIAPI -PL011UartInitializePort ( - IN UINTN UartBase, - IN UINT32 UartClkInHz, - IN OUT UINT64 *BaudRate, - IN OUT UINT32 *ReceiveFifoDepth, - IN OUT EFI_PARITY_TYPE *Parity, - IN OUT UINT8 *DataBits, - IN OUT EFI_STOP_BITS_TYPE *StopBits - ) -{ - UINT32 LineControl; - UINT32 Divisor; - UINT32 Integer; - UINT32 Fractional; - UINT32 HardwareFifoDepth; - - HardwareFifoDepth = (PL011_UARTPID2_VER (MmioRead32 (UartBase + UARTPID2)) \ - > PL011_VER_R1P4) \ - ? 32 : 16 ; - // The PL011 supports a buffer of 1, 16 or 32 chars. Therefore we can accept - // 1 char buffer as the minimum FIFO size. Because everything can be rounded - // down, there is no maximum FIFO size. - if ((*ReceiveFifoDepth == 0) || (*ReceiveFifoDepth >= HardwareFifoDepth)) { - // Enable FIFO - LineControl = PL011_UARTLCR_H_FEN; - *ReceiveFifoDepth = HardwareFifoDepth; - } else { - // Disable FIFO - LineControl = 0; - // Nothing else to do. 1 byte FIFO is default. - *ReceiveFifoDepth = 1; - } - - // - // Parity - // - switch (*Parity) { - case DefaultParity: - *Parity = NoParity; - case NoParity: - // Nothing to do. Parity is disabled by default. - break; - case EvenParity: - LineControl |= (PL011_UARTLCR_H_PEN | PL011_UARTLCR_H_EPS); - break; - case OddParity: - LineControl |= PL011_UARTLCR_H_PEN; - break; - case MarkParity: - LineControl |= ( PL011_UARTLCR_H_PEN \ - | PL011_UARTLCR_H_SPS \ - | PL011_UARTLCR_H_EPS); - break; - case SpaceParity: - LineControl |= (PL011_UARTLCR_H_PEN | PL011_UARTLCR_H_SPS); - break; - default: - return RETURN_INVALID_PARAMETER; - } - - // - // Data Bits - // - switch (*DataBits) { - case 0: - *DataBits = 8; - case 8: - LineControl |= PL011_UARTLCR_H_WLEN_8; - break; - case 7: - LineControl |= PL011_UARTLCR_H_WLEN_7; - break; - case 6: - LineControl |= PL011_UARTLCR_H_WLEN_6; - break; - case 5: - LineControl |= PL011_UARTLCR_H_WLEN_5; - break; - default: - return RETURN_INVALID_PARAMETER; - } - - // - // Stop Bits - // - switch (*StopBits) { - case DefaultStopBits: - *StopBits = OneStopBit; - case OneStopBit: - // Nothing to do. One stop bit is enabled by default. - break; - case TwoStopBits: - LineControl |= PL011_UARTLCR_H_STP2; - break; - case OneFiveStopBits: - // Only 1 or 2 stop bits are supported - default: - return RETURN_INVALID_PARAMETER; - } - - // Don't send the LineControl value to the PL011 yet, - // wait until after the Baud Rate setting. - // This ensures we do not mess up the UART settings halfway through - // in the rare case when there is an error with the Baud Rate. - - // - // Baud Rate - // - - // If PL011 Integer value has been defined then always ignore the BAUD rate - if (FixedPcdGet32 (PL011UartInteger) != 0) { - Integer = FixedPcdGet32 (PL011UartInteger); - Fractional = FixedPcdGet32 (PL011UartFractional); - } else { - // If BAUD rate is zero then replace it with the system default value - if (*BaudRate == 0) { - *BaudRate = FixedPcdGet32 (PcdSerialBaudRate); - if (*BaudRate == 0) { - return RETURN_INVALID_PARAMETER; - } - } - if (0 == UartClkInHz) { - return RETURN_INVALID_PARAMETER; - } - - Divisor = (UartClkInHz * 4) / *BaudRate; - Integer = Divisor >> FRACTION_PART_SIZE_IN_BITS; - Fractional = Divisor & FRACTION_PART_MASK; - } - - // - // If PL011 is already initialized, check the current settings - // and re-initialize only if the settings are different. - // - if (((MmioRead32 (UartBase + UARTCR) & PL011_UARTCR_UARTEN) != 0) && - (MmioRead32 (UartBase + UARTLCR_H) == LineControl) && - (MmioRead32 (UartBase + UARTIBRD) == Integer) && - (MmioRead32 (UartBase + UARTFBRD) == Fractional)) { - // Nothing to do - already initialized with correct attributes - return RETURN_SUCCESS; - } - - // Wait for the end of transmission - while ((MmioRead32 (UartBase + UARTFR) & PL011_UARTFR_TXFE) == 0); - - // Disable UART: "The UARTLCR_H, UARTIBRD, and UARTFBRD registers must not be changed - // when the UART is enabled" - MmioWrite32 (UartBase + UARTCR, 0); - - // Set Baud Rate Registers - MmioWrite32 (UartBase + UARTIBRD, Integer); - MmioWrite32 (UartBase + UARTFBRD, Fractional); - - // No parity, 1 stop, no fifo, 8 data bits - MmioWrite32 (UartBase + UARTLCR_H, LineControl); - - // Clear any pending errors - MmioWrite32 (UartBase + UARTECR, 0); - - // Enable Tx, Rx, and UART overall - MmioWrite32 (UartBase + UARTCR, - PL011_UARTCR_RXE | PL011_UARTCR_TXE | PL011_UARTCR_UARTEN); - - return RETURN_SUCCESS; -} - -/** - - Assert or deassert the control signals on a serial port. - The following control signals are set according their bit settings : - . Request to Send - . Data Terminal Ready - - @param[in] UartBase UART registers base address - @param[in] Control The following bits are taken into account : - . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the - "Request To Send" control signal if this bit is - equal to one/zero. - . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert - the "Data Terminal Ready" control signal if this - bit is equal to one/zero. - . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable - the hardware loopback if this bit is equal to - one/zero. - . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported. - . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/ - disable the hardware flow control based on CTS (Clear - To Send) and RTS (Ready To Send) control signals. - - @retval RETURN_SUCCESS The new control bits were set on the device. - @retval RETURN_UNSUPPORTED The device does not support this operation. - -**/ -RETURN_STATUS -EFIAPI -PL011UartSetControl ( - IN UINTN UartBase, - IN UINT32 Control - ) -{ - UINT32 Bits; - - if (Control & (mInvalidControlBits)) { - return RETURN_UNSUPPORTED; - } - - Bits = MmioRead32 (UartBase + UARTCR); - - if (Control & EFI_SERIAL_REQUEST_TO_SEND) { - Bits |= PL011_UARTCR_RTS; - } else { - Bits &= ~PL011_UARTCR_RTS; - } - - if (Control & EFI_SERIAL_DATA_TERMINAL_READY) { - Bits |= PL011_UARTCR_DTR; - } else { - Bits &= ~PL011_UARTCR_DTR; - } - - if (Control & EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE) { - Bits |= PL011_UARTCR_LBE; - } else { - Bits &= ~PL011_UARTCR_LBE; - } - - if (Control & EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE) { - Bits |= (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN); - } else { - Bits &= ~(PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN); - } - - MmioWrite32 (UartBase + UARTCR, Bits); - - return RETURN_SUCCESS; -} - -/** - - Retrieve the status of the control bits on a serial device. - - @param[in] UartBase UART registers base address - @param[out] Control Status of the control bits on a serial device : - - . EFI_SERIAL_DATA_CLEAR_TO_SEND, - EFI_SERIAL_DATA_SET_READY, - EFI_SERIAL_RING_INDICATE, - EFI_SERIAL_CARRIER_DETECT, - EFI_SERIAL_REQUEST_TO_SEND, - EFI_SERIAL_DATA_TERMINAL_READY - are all related to the DTE (Data Terminal Equipment) - and DCE (Data Communication Equipment) modes of - operation of the serial device. - . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the - receive buffer is empty, 0 otherwise. - . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the - transmit buffer is empty, 0 otherwise. - . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if - the hardware loopback is enabled (the ouput feeds the - receive buffer), 0 otherwise. - . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if - a loopback is accomplished by software, 0 otherwise. - . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to - one if the hardware flow control based on CTS (Clear - To Send) and RTS (Ready To Send) control signals is - enabled, 0 otherwise. - - @retval RETURN_SUCCESS The control bits were read from the serial device. - -**/ -RETURN_STATUS -EFIAPI -PL011UartGetControl ( - IN UINTN UartBase, - OUT UINT32 *Control - ) -{ - UINT32 FlagRegister; - UINT32 ControlRegister; - - - FlagRegister = MmioRead32 (UartBase + UARTFR); - ControlRegister = MmioRead32 (UartBase + UARTCR); - - *Control = 0; - - if ((FlagRegister & PL011_UARTFR_CTS) == PL011_UARTFR_CTS) { - *Control |= EFI_SERIAL_CLEAR_TO_SEND; - } - - if ((FlagRegister & PL011_UARTFR_DSR) == PL011_UARTFR_DSR) { - *Control |= EFI_SERIAL_DATA_SET_READY; - } - - if ((FlagRegister & PL011_UARTFR_RI) == PL011_UARTFR_RI) { - *Control |= EFI_SERIAL_RING_INDICATE; - } - - if ((FlagRegister & PL011_UARTFR_DCD) == PL011_UARTFR_DCD) { - *Control |= EFI_SERIAL_CARRIER_DETECT; - } - - if ((ControlRegister & PL011_UARTCR_RTS) == PL011_UARTCR_RTS) { - *Control |= EFI_SERIAL_REQUEST_TO_SEND; - } - - if ((ControlRegister & PL011_UARTCR_DTR) == PL011_UARTCR_DTR) { - *Control |= EFI_SERIAL_DATA_TERMINAL_READY; - } - - if ((FlagRegister & PL011_UARTFR_RXFE) == PL011_UARTFR_RXFE) { - *Control |= EFI_SERIAL_INPUT_BUFFER_EMPTY; - } - - if ((FlagRegister & PL011_UARTFR_TXFE) == PL011_UARTFR_TXFE) { - *Control |= EFI_SERIAL_OUTPUT_BUFFER_EMPTY; - } - - if ((ControlRegister & (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) - == (PL011_UARTCR_CTSEN | PL011_UARTCR_RTSEN)) { - *Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE; - } - - if ((ControlRegister & PL011_UARTCR_LBE) == PL011_UARTCR_LBE) { - *Control |= EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE; - } - - return RETURN_SUCCESS; -} - -/** - Write data to serial device. - - @param Buffer Point of data buffer which need to be written. - @param NumberOfBytes Number of output bytes which are cached in Buffer. - - @retval 0 Write data failed. - @retval !0 Actual number of bytes written to serial device. - -**/ -UINTN -EFIAPI -PL011UartWrite ( - IN UINTN UartBase, - IN UINT8 *Buffer, - IN UINTN NumberOfBytes - ) -{ - UINT8* CONST Final = &Buffer[NumberOfBytes]; - - while (Buffer < Final) { - // Wait until UART able to accept another char - while ((MmioRead32 (UartBase + UARTFR) & UART_TX_FULL_FLAG_MASK)); - - MmioWrite8 (UartBase + UARTDR, *Buffer++); - } - - return NumberOfBytes; -} - -/** - Read data from serial device and save the data in buffer. - - @param Buffer Point of data buffer which need to be written. - @param NumberOfBytes Number of output bytes which are cached in Buffer. - - @retval 0 Read data failed. - @retval !0 Actual number of bytes read from serial device. - -**/ -UINTN -EFIAPI -PL011UartRead ( - IN UINTN UartBase, - OUT UINT8 *Buffer, - IN UINTN NumberOfBytes - ) -{ - UINTN Count; - - for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) { - while ((MmioRead32 (UartBase + UARTFR) & UART_RX_EMPTY_FLAG_MASK) != 0); - *Buffer = MmioRead8 (UartBase + UARTDR); - } - - return NumberOfBytes; -} - -/** - Check to see if any data is available to be read from the debug device. - - @retval TRUE At least one byte of data is available to be read - @retval FALSE No data is available to be read - -**/ -BOOLEAN -EFIAPI -PL011UartPoll ( - IN UINTN UartBase - ) -{ - return ((MmioRead32 (UartBase + UARTFR) & UART_RX_EMPTY_FLAG_MASK) == 0); -} diff --git a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf deleted file mode 100644 index 3fd4602a2578..000000000000 --- a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf +++ /dev/null @@ -1,42 +0,0 @@ -#/** @file -# -# Component description file for PL011Uart module -# -# Copyright (c) 2011-2016, ARM Ltd. All rights reserved.
-# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL011Uart - FILE_GUID = 4ec8b120-8307-11e0-bc91-0002a5d5c51b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = PL011UartLib - -[Sources.common] - PL011Uart.c - -[LibraryClasses] - DebugLib - IoLib - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[FixedPcd] - gEfiMdeModulePkgTokenSpaceGuid.PcdSerialBaudRate - - gArmPlatformTokenSpaceGuid.PL011UartInteger - gArmPlatformTokenSpaceGuid.PL011UartFractional - gArmPlatformTokenSpaceGuid.PL011UartRegOffsetVariant diff --git a/ArmPlatformPkg/Include/Drivers/PL011Uart.h b/ArmPlatformPkg/Include/Drivers/PL011Uart.h deleted file mode 100644 index 4957dbf85846..000000000000 --- a/ArmPlatformPkg/Include/Drivers/PL011Uart.h +++ /dev/null @@ -1,290 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2016, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __PL011_UART_H__ -#define __PL011_UART_H__ - -#include -#include - -#define PL011_VARIANT_ZTE 1 - -// PL011 Registers -#if FixedPcdGet8 (PL011UartRegOffsetVariant) == PL011_VARIANT_ZTE -#define UARTDR 0x004 -#define UARTRSR 0x010 -#define UARTECR 0x010 -#define UARTFR 0x014 -#define UARTIBRD 0x024 -#define UARTFBRD 0x028 -#define UARTLCR_H 0x030 -#define UARTCR 0x034 -#define UARTIFLS 0x038 -#define UARTIMSC 0x040 -#define UARTRIS 0x044 -#define UARTMIS 0x048 -#define UARTICR 0x04c -#define UARTDMACR 0x050 -#else -#define UARTDR 0x000 -#define UARTRSR 0x004 -#define UARTECR 0x004 -#define UARTFR 0x018 -#define UARTILPR 0x020 -#define UARTIBRD 0x024 -#define UARTFBRD 0x028 -#define UARTLCR_H 0x02C -#define UARTCR 0x030 -#define UARTIFLS 0x034 -#define UARTIMSC 0x038 -#define UARTRIS 0x03C -#define UARTMIS 0x040 -#define UARTICR 0x044 -#define UARTDMACR 0x048 -#endif - -#define UARTPID0 0xFE0 -#define UARTPID1 0xFE4 -#define UARTPID2 0xFE8 -#define UARTPID3 0xFEC - -// Data status bits -#define UART_DATA_ERROR_MASK 0x0F00 - -// Status reg bits -#define UART_STATUS_ERROR_MASK 0x0F - -// Flag reg bits -#if FixedPcdGet8 (PL011UartRegOffsetVariant) == PL011_VARIANT_ZTE -#define PL011_UARTFR_RI (1 << 0) // Ring indicator -#define PL011_UARTFR_TXFE (1 << 7) // Transmit FIFO empty -#define PL011_UARTFR_RXFF (1 << 6) // Receive FIFO full -#define PL011_UARTFR_TXFF (1 << 5) // Transmit FIFO full -#define PL011_UARTFR_RXFE (1 << 4) // Receive FIFO empty -#define PL011_UARTFR_BUSY (1 << 8) // UART busy -#define PL011_UARTFR_DCD (1 << 2) // Data carrier detect -#define PL011_UARTFR_DSR (1 << 3) // Data set ready -#define PL011_UARTFR_CTS (1 << 1) // Clear to send -#else -#define PL011_UARTFR_RI (1 << 8) // Ring indicator -#define PL011_UARTFR_TXFE (1 << 7) // Transmit FIFO empty -#define PL011_UARTFR_RXFF (1 << 6) // Receive FIFO full -#define PL011_UARTFR_TXFF (1 << 5) // Transmit FIFO full -#define PL011_UARTFR_RXFE (1 << 4) // Receive FIFO empty -#define PL011_UARTFR_BUSY (1 << 3) // UART busy -#define PL011_UARTFR_DCD (1 << 2) // Data carrier detect -#define PL011_UARTFR_DSR (1 << 1) // Data set ready -#define PL011_UARTFR_CTS (1 << 0) // Clear to send -#endif - -// Flag reg bits - alternative names -#define UART_TX_EMPTY_FLAG_MASK PL011_UARTFR_TXFE -#define UART_RX_FULL_FLAG_MASK PL011_UARTFR_RXFF -#define UART_TX_FULL_FLAG_MASK PL011_UARTFR_TXFF -#define UART_RX_EMPTY_FLAG_MASK PL011_UARTFR_RXFE -#define UART_BUSY_FLAG_MASK PL011_UARTFR_BUSY - -// Control reg bits -#define PL011_UARTCR_CTSEN (1 << 15) // CTS hardware flow control enable -#define PL011_UARTCR_RTSEN (1 << 14) // RTS hardware flow control enable -#define PL011_UARTCR_RTS (1 << 11) // Request to send -#define PL011_UARTCR_DTR (1 << 10) // Data transmit ready. -#define PL011_UARTCR_RXE (1 << 9) // Receive enable -#define PL011_UARTCR_TXE (1 << 8) // Transmit enable -#define PL011_UARTCR_LBE (1 << 7) // Loopback enable -#define PL011_UARTCR_UARTEN (1 << 0) // UART Enable - -// Line Control Register Bits -#define PL011_UARTLCR_H_SPS (1 << 7) // Stick parity select -#define PL011_UARTLCR_H_WLEN_8 (3 << 5) -#define PL011_UARTLCR_H_WLEN_7 (2 << 5) -#define PL011_UARTLCR_H_WLEN_6 (1 << 5) -#define PL011_UARTLCR_H_WLEN_5 (0 << 5) -#define PL011_UARTLCR_H_FEN (1 << 4) // FIFOs Enable -#define PL011_UARTLCR_H_STP2 (1 << 3) // Two stop bits select -#define PL011_UARTLCR_H_EPS (1 << 2) // Even parity select -#define PL011_UARTLCR_H_PEN (1 << 1) // Parity Enable -#define PL011_UARTLCR_H_BRK (1 << 0) // Send break - -#define PL011_UARTPID2_VER(X) (((X) >> 4) & 0xF) -#define PL011_VER_R1P4 0x2 - -/** - - Initialise the serial port to the specified settings. - All unspecified settings will be set to the default values. - - @param[in] UartBase The base address of the serial device. - @param[in] UartClkInHz The clock in Hz for the serial device. - Ignored if the PCD PL011UartInteger is not 0 - @param[in out] BaudRate The baud rate of the serial device. If the - baud rate is not supported, the speed will be - reduced to the nearest supported one and the - variable's value will be updated accordingly. - @param[in out] ReceiveFifoDepth The number of characters the device will - buffer on input. Value of 0 will use the - device's default FIFO depth. - @param[in out] Parity If applicable, this is the EFI_PARITY_TYPE - that is computed or checked as each character - is transmitted or received. If the device - does not support parity, the value is the - default parity value. - @param[in out] DataBits The number of data bits in each character. - @param[in out] StopBits If applicable, the EFI_STOP_BITS_TYPE number - of stop bits per character. - If the device does not support stop bits, the - value is the default stop bit value. - - @retval RETURN_SUCCESS All attributes were set correctly on the - serial device. - @retval RETURN_INVALID_PARAMETER One or more of the attributes has an - unsupported value. - -**/ -RETURN_STATUS -EFIAPI -PL011UartInitializePort ( - IN UINTN UartBase, - IN UINT32 UartClkInHz, - IN OUT UINT64 *BaudRate, - IN OUT UINT32 *ReceiveFifoDepth, - IN OUT EFI_PARITY_TYPE *Parity, - IN OUT UINT8 *DataBits, - IN OUT EFI_STOP_BITS_TYPE *StopBits - ); - -/** - - Assert or deassert the control signals on a serial port. - The following control signals are set according their bit settings : - . Request to Send - . Data Terminal Ready - - @param[in] UartBase UART registers base address - @param[in] Control The following bits are taken into account : - . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the - "Request To Send" control signal if this bit is - equal to one/zero. - . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert - the "Data Terminal Ready" control signal if this - bit is equal to one/zero. - . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable - the hardware loopback if this bit is equal to - one/zero. - . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported. - . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/ - disable the hardware flow control based on CTS (Clear - To Send) and RTS (Ready To Send) control signals. - - @retval RETURN_SUCCESS The new control bits were set on the device. - @retval RETURN_UNSUPPORTED The device does not support this operation. - -**/ -RETURN_STATUS -EFIAPI -PL011UartSetControl ( - IN UINTN UartBase, - IN UINT32 Control - ); - -/** - - Retrieve the status of the control bits on a serial device. - - @param[in] UartBase UART registers base address - @param[out] Control Status of the control bits on a serial device : - - . EFI_SERIAL_DATA_CLEAR_TO_SEND, - EFI_SERIAL_DATA_SET_READY, - EFI_SERIAL_RING_INDICATE, - EFI_SERIAL_CARRIER_DETECT, - EFI_SERIAL_REQUEST_TO_SEND, - EFI_SERIAL_DATA_TERMINAL_READY - are all related to the DTE (Data Terminal Equipment) - and DCE (Data Communication Equipment) modes of - operation of the serial device. - . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the - receive buffer is empty, 0 otherwise. - . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the - transmit buffer is empty, 0 otherwise. - . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one if - the hardware loopback is enabled (the ouput feeds the - receive buffer), 0 otherwise. - . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one if - a loopback is accomplished by software, 0 otherwise. - . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to - one if the hardware flow control based on CTS (Clear - To Send) and RTS (Ready To Send) control signals is - enabled, 0 otherwise. - - @retval RETURN_SUCCESS The control bits were read from the serial device. - -**/ -RETURN_STATUS -EFIAPI -PL011UartGetControl ( - IN UINTN UartBase, - OUT UINT32 *Control - ); - -/** - Write data to serial device. - - @param Buffer Point of data buffer which need to be written. - @param NumberOfBytes Number of output bytes which are cached in Buffer. - - @retval 0 Write data failed. - @retval !0 Actual number of bytes written to serial device. - -**/ -UINTN -EFIAPI -PL011UartWrite ( - IN UINTN UartBase, - IN UINT8 *Buffer, - IN UINTN NumberOfBytes - ); - -/** - Read data from serial device and save the data in buffer. - - @param Buffer Point of data buffer which need to be written. - @param NumberOfBytes Number of output bytes which are cached in Buffer. - - @retval 0 Read data failed. - @retval !0 Actual number of bytes read from serial device. - -**/ -UINTN -EFIAPI -PL011UartRead ( - IN UINTN UartBase, - OUT UINT8 *Buffer, - IN UINTN NumberOfBytes - ); - -/** - Check to see if any data is available to be read from the debug device. - - @retval TRUE At least one byte of data is available to be read - @retval FALSE No data is available to be read - -**/ -BOOLEAN -EFIAPI -PL011UartPoll ( - IN UINTN UartBase - ); - -#endif From patchwork Mon Dec 4 22:22:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120606 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434542edb; Mon, 4 Dec 2017 14:23:16 -0800 (PST) X-Google-Smtp-Source: AGs4zMb9ZH5gnt9ddgGv5D+dwGN6rsmzPZ9l7ds3IngcHJnVO6l9zTZxDw79RJywslzKuBDWrt3l X-Received: by 10.101.91.133 with SMTP id i5mr15507829pgr.313.1512426196661; Mon, 04 Dec 2017 14:23:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426196; cv=none; d=google.com; s=arc-20160816; b=Z5tNLboCghjA08LSUEXOrIZsqFTA5QRVdJdaURvHJacrar99gXwIbmWe4Xl5NpS+x8 buiDL1yxJjqZuM71uJfYmUZQG23RQFnm/RZP7eowFMwvOkc8sS64UM93Mn0m/ft5by5H 2FQDWw0m10UFSg87YuRUSLQhjucX63Xz7SCaTu+7SPgADzkp6F8iaYp6iE/RmF9FtKUy zX3IIpQv69j/n69a2KuCEztegIe6eMXggJ/MOC7YMeA8474NbU3HNZEpUO3pf3KX/yTl 88YUJ16cyUncXmQkAp5XnO9DbXFLNe4ZstubQSWOyLBQJXynt1Nntc5QIGk+4gvSN1mV cdYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=LgUJk29Nix9ycy/8h0uMPFJdMD0c0houObo1LbpGnFE=; b=Tl8tPKQKJXJov3Lo6LTI2O1XxuBQaewFOw8itrV3n1i8GT/rLnTLgB3LUKfjFCXjN6 uMX24JYwrAAerFUkFC1A1cV0HWZOi3GNY8wo0xU99wJNqF1ylf2ahRYbtaSVoXcObO+e Scr9JGyRjpfFcOR6ZFNtIo70F+VTLYBCZPb60jobDxZ0X6iTb37dQB/n9RzY8AxQEZ81 eHnMV+9oh+avRHbPerZXDPUM1y+4Clyu7xLLuRxXXyP1N7ouh1LECSuDwDyFWBUUKsDE VX73jPhQ1VVFyVnvT7/jesCD/1MzexaO/Ea7D3ouOpDPRxQAtorvxjDUE0JnWwSWSWLQ GwcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=DP4qboNE; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id p3si10887160pfi.253.2017.12.04.14.23.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:16 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=DP4qboNE; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id AFFBE221786D8; Mon, 4 Dec 2017 14:18:40 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::241; helo=mail-wr0-x241.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 457B62216229B for ; Mon, 4 Dec 2017 14:18:39 -0800 (PST) Received: by mail-wr0-x241.google.com with SMTP id g53so19020268wra.2 for ; Mon, 04 Dec 2017 14:23:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zfu91XPpxCpA3n5JXvgOJsJh6qRbfSq0oeZBnysKlws=; b=DP4qboNEK26jravN8MoNsnxEBWT370s20m0PDbpweusdFolAVqbRRb6tbqRwSZnZtQ ezJa2P74O2uscl7UFnmBokV/VBVFyWVPss6i1Pk6pxDnspcnT5aIPP5YVAZBrz0mnZf/ zm1hzG9qUwdcmCmNJHbmoOJGFvcyf1WY2KtOo= 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; bh=zfu91XPpxCpA3n5JXvgOJsJh6qRbfSq0oeZBnysKlws=; b=fPoq12uUs+/iNqmOUJhnOWvWPCtWyKVi48SekEhGBg3xBXQuyOIXX+tMENCtBfnXx0 LpJL0GBl6oF9uPINrBaRd8QsUXZwIYpKRJF7+0eYKUADS2Ovb3aPqPKkOu44ecHlqkoe oi1I0yVmB+xbz1QuXL1yWvNLU/+2J6N4rql6C2mJFQVrE3tNcg3Td7PFzl4z6okpv1nk Opnx4nn4ygiLGBGyPjw9AO3W3FXoYdXtlHmfj69gGb9pIYM5WrDEIecl5WHaY6JvW0lc 0LSGg04+qCjmCeCcUN6V4lRRCPOoCzzW3wkFljg6lBSANwRO+CiD+cDqS9KYcb9/Zq0w /Dtg== X-Gm-Message-State: AJaThX6WiNqoOlDkPHNINjhnAiUufhbP6GU/Z/ok+sESU/qOuvNdoOBn /GPRjYRIT9rGLUNtUg+HNBISgrDkEoE= X-Received: by 10.223.160.184 with SMTP id m53mr14164088wrm.126.1512426187803; Mon, 04 Dec 2017 14:23:07 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:07 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:36 +0000 Message-Id: <20171204222243.15950-7-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 06/13] ArmPlatformPkg: add missing library class declarations to .dec file X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Add ArmPlatformLib, LcdPlatformlib and NorFlashPlatformLib to the [LibraryClasses] section of ArmPlatformPkg.dec. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/ArmPlatformPkg.dec | 3 +++ 1 file changed, 3 insertions(+) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/ArmPlatformPkg.dec b/ArmPlatformPkg/ArmPlatformPkg.dec index 9d47e459eadc..d42404e8cd38 100644 --- a/ArmPlatformPkg/ArmPlatformPkg.dec +++ b/ArmPlatformPkg/ArmPlatformPkg.dec @@ -32,6 +32,9 @@ [Includes.common] Include # Root include for the package [LibraryClasses] + ArmPlatformLib|Include/Library/ArmPlatformLib.h + LcdPlatformLib|Include/Library/LcdPlatformLib.h + NorFlashPlatformLib|Include/Library/NorFlashPlatformLib.h PL011UartLib|Include/Library/PL011UartLib.h [Guids.common] From patchwork Mon Dec 4 22:22:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120608 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434615edb; Mon, 4 Dec 2017 14:23:21 -0800 (PST) X-Google-Smtp-Source: AGs4zMZW36YiefgwthYpe9DQFVP2aQkJ1AkB5JADQ3a7O3Dpxy20GHxpZtMTIIktm8vlv5IVTi2q X-Received: by 10.84.232.74 with SMTP id f10mr15266304pln.90.1512426201531; Mon, 04 Dec 2017 14:23:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426201; cv=none; d=google.com; s=arc-20160816; b=VkPdC3/NNt2nk+Y2NKG05LPm5LFetCATCFrREvpLiKPNaoy5jz8PPk+vXcTrv0ZJzH jJsQx4Ao2/PQ/KdYABGPUh/Ji8gInedVT1Il9No3X2qWRiLll2NVBftNWULx9KUjARTG LeYNlEs1XS1b/jPSBjXRymISAoPvOJNFvnWYdtG7iQVfH1EvlQLy/havOlBsi3xpj6CK gnHzKwoWUBvZSUsJOlwoA2T5/bBGabo3mrE5ulohnfzADhy16Bj+aU3nOjoWuyXQHXBq 8yIUvVYjg/JCVO1ZOzH073wwSxTw1bUsE8rn8tJQSnnLyvaVfpTUy0MMGn9Eb8AsCm5a FttQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=1s1B88EUlsKSLCJ6m2GCIfcqCQrVUi4ESebJVaJeu2o=; b=xyid++bMjfslE2Y/imPDNVWYwbPHSLENZcSDq4YmKPvMKIOBgkYB3L3YIHqeMvVNFL VTCmTxxvem1A/wg/oxwW7UEr6X4nm09HKYZIvf6G6HkSLy7vOYSUNEKNu6fBVlnFBf70 d22HQ3M0NSzvT0L3tWGf11OpVEqFdMZ5gNWRZC+wj5hHbMUMMqFEZx8fK+5qZaYZS01R NeWXNSYrkqbYHmaC3uYzwfqocMC6uqCbHZJ45coWACqfVakp+Tvri1bNFAG1eozVduFZ Vpu/9UutRc5z+F+g7d80GEGWicyt8JlYHNELOdx9WsB+K9qBJR06LcNFhEylPl6nWYrQ qXJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=T4r+l7GV; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id e39si10360960plg.511.2017.12.04.14.23.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:21 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=T4r+l7GV; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 219AE2216229B; Mon, 4 Dec 2017 14:18:43 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::242; helo=mail-wr0-x242.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 58F2322152380 for ; Mon, 4 Dec 2017 14:18:41 -0800 (PST) Received: by mail-wr0-x242.google.com with SMTP id y21so18949174wrc.1 for ; Mon, 04 Dec 2017 14:23:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yV6h5DuzIPvTU68dj8alN6H+9rQAN5fc/E1Jjud9up8=; b=T4r+l7GV7xQi862+fTzbVmZS6UWVduLm23u+RWDIrQQOTxTjjYgokPTAoNQUNA4y8+ 1yuAN0KE8bEDdY2YWooitGuY6cVeWoA4HzJklMhBLsIUE89HvQdBjsdply9ppYg9ZGTu jAcxvowdpHMYWL4xEoubUbxeJtnd2cCONMPVw= 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; bh=yV6h5DuzIPvTU68dj8alN6H+9rQAN5fc/E1Jjud9up8=; b=MDlSAFJ1fTaRoeCU5IA0gxRlqpKn138HnmfrUEwv7cF6Q6zrPfFMd5NXeoG9HgTa53 ziw32fjxhtE0AAFpUUNAVsWkB3RaVioNTP9vxCTvu/LVX7NBsmT7NtGwh9wWRaGpSc1Q MJNJz3harGuBBbPXY0u9tfJGhdyDGmMmlGs1IPn8J+1RMPfGkN25BznbO/WAhJyfDJBr JkL5QhJ4SmEYsdamYUpeD6Ev7vJrycYmAqaYJrvwH9QqaJTwyBCQIwhzyk2Nkt2KM7uA jfBDRGTCIKf6wMXeoC1R9U9LBpf0HatuIDlLsegr7N6Ykg3ReFKD5LfUvWzYWvh073yB KCBg== X-Gm-Message-State: AJaThX4q8sCHN1NkkCllvkUOF9qmUBpccEUPIUpEp+uKG2MAqFDtWP4L 7nhAAn40iQ14cANiy5/iTVCj9wr5hyA= X-Received: by 10.223.153.100 with SMTP id x91mr13082430wrb.189.1512426189995; Mon, 04 Dec 2017 14:23:09 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:09 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:37 +0000 Message-Id: <20171204222243.15950-8-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 07/13] ArmPlatformPkg/LcdGraphicsOutputDxe: move headers into driver directory X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" The HdLcd.h and PL111Lcd.h header files are internal headers that should not be used by other drivers. So move them from Include/Drivers into the driver directory instead. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel --- ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c | 3 +-- ArmPlatformPkg/{Include/Drivers => Drivers/LcdGraphicsOutputDxe}/HdLcd.h | 0 ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c | 3 +-- ArmPlatformPkg/{Include/Drivers => Drivers/LcdGraphicsOutputDxe}/PL111Lcd.h | 0 4 files changed, 2 insertions(+), 4 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c index 2bfe2c0fe2dc..f5d7b53905fb 100644 --- a/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c +++ b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.c @@ -18,8 +18,7 @@ #include #include -#include - +#include "HdLcd.h" #include "LcdGraphicsOutputDxe.h" /********************************************************************** diff --git a/ArmPlatformPkg/Include/Drivers/HdLcd.h b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.h similarity index 100% rename from ArmPlatformPkg/Include/Drivers/HdLcd.h rename to ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/HdLcd.h diff --git a/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c index b5e113b844d4..a9ce60c5b0a6 100644 --- a/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c +++ b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.c @@ -15,9 +15,8 @@ #include #include -#include - #include "LcdGraphicsOutputDxe.h" +#include "PL111Lcd.h" /********************************************************************** * diff --git a/ArmPlatformPkg/Include/Drivers/PL111Lcd.h b/ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.h similarity index 100% rename from ArmPlatformPkg/Include/Drivers/PL111Lcd.h rename to ArmPlatformPkg/Drivers/LcdGraphicsOutputDxe/PL111Lcd.h From patchwork Mon Dec 4 22:22:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120609 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434647edb; Mon, 4 Dec 2017 14:23:25 -0800 (PST) X-Google-Smtp-Source: AGs4zMYg/zeMCMPMYbRYEZk6Qyog8eHXvdEr4JwaZX6FyBf25zAEYBRCq1L1S1QEc98qj4OxxHS4 X-Received: by 10.84.247.148 with SMTP id o20mr16211933pll.137.1512426204881; Mon, 04 Dec 2017 14:23:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426204; cv=none; d=google.com; s=arc-20160816; b=fNt7j6giqwGx8tjaeQC7aCIZ8yCf9Afzu4fjoYWP3xEoBp/hWIl+yQtMz05vb36tRD tRW4dCsw4+KNL8h+rYB7kb/mxwzlzzMFwKV9eR9SnYtzW4i0hMD+lJ1u4HLcjCf98aAZ tTwbJITKlUflyAR4eAEZk+8FxLf4ZAK3C3TozG4wwgBC0tJVqmJPJJg+K2Dl325J0Maj OawON93Sx3sv4OzsNzBnQmtQbQRVHwO9TnaLg/hgAcZUw368i4800cLdWwBPAx9hv184 yJs5SdMyixwg956c1mm8/RV3PdtBe8sgmnYbuaqCrTgprK3jyqgf7JOMwgRoEkbgy07P VERw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=BD+H/neyuFfXNNotayoC56pvt6hixAa8/Kuf8iqkjzY=; b=lFtU5ULHYs6mGSgC0my0GgOdsLWWuUM+5rE9VSqN8riT08h7xdoA/0rh8WL/uvnv3a x/VejLoLFCB5uREvlXMp/DG0++ToR1EMwwZWgNfrGK/3mF54xq5l7LuUUU9lZcgosQok lP/gBLF2D+bFnULEmt75R+Sj7ARLcNz3L5o72qNMdaWkD/eKjfACu4nUQbjbHMLh9s/Z wvFMFKwISrsR3sb4fbqv599NLvZU//fHAsdm0a+J1i6c+WenmSs+gQ8uOqrs6XjX33EB 6LkhFZRWlmgbAXlBPo8b0IEXUuwM1/d6E/ZXqaF2rZ0UQ/8THk1w8Cor+lU7IeLSF9y0 dE6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Pvrxok0z; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id e22si10408848plj.820.2017.12.04.14.23.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=Pvrxok0z; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 5C22422183C8B; Mon, 4 Dec 2017 14:18:44 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::242; helo=mail-wr0-x242.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 60AF3221660C7 for ; Mon, 4 Dec 2017 14:18:43 -0800 (PST) Received: by mail-wr0-x242.google.com with SMTP id a41so17131117wra.6 for ; Mon, 04 Dec 2017 14:23:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fpFNWEVgUzkX/iwRzYO7QhBcPu/vjEpI1WgXQvrMncY=; b=Pvrxok0zvSDZ+Kx78TFX3EW6vg8F4Q1638IOMyyNaC/SyrirRmgEbdR6WhcibX8HB1 wrkbcnqi4H+oSy9G/8KEDssoQ0vRSiwLfX76B3QdsUv4T5u8Y4WUzn+9LErT2D9B4DF3 ISrhsYd19LPBBL7sdQ3eLczWUxHMeaSUcWIPo= 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; bh=fpFNWEVgUzkX/iwRzYO7QhBcPu/vjEpI1WgXQvrMncY=; b=euWT28njeZjmU+judR7XgnLnGFuEeaznnu8Z0C+d28rpiMI5cUSPT1lDPhBL3nrtjW tD71Qt8dFOHkeLpQXayB5IpeRQg1FMKQ/oRtFCDxPzxZAhyqcZtnK12dJVdxT+Ad7l38 yuMH555D5Bw5TJRc9FcpHrZEqwwNUMbuXIlvsZ1xrRvNcylvsn8eigH+9bHR43pXyRvY LPihRtFB87dxc/mviQXzInmycVU8gilE+xNQiEZUztfvPe3Y9GmJtu36UdD4KrBEkCyp ain246WQqCbweH7t+SvisPPhLNg7hkBhwOK2kgJubI0PdVOLxr/mdEOf59TXsS2GgYTw 5jwQ== X-Gm-Message-State: AJaThX5bdwa+HtTwQ8I9K4ng0UHD+8BTuxEMJiQqz728vjp9Pli4twIv VIFVBnl9HiGbIMnc4MFiRZv/CH0rK7U= X-Received: by 10.223.158.203 with SMTP id b11mr13774912wrf.256.1512426191976; Mon, 04 Dec 2017 14:23:11 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:11 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:38 +0000 Message-Id: <20171204222243.15950-9-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 08/13] ArmPlatformPkg: remove unused PL301Axi driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" No platforms use this driver so remove it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.c | 108 -------------------- ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.inf | 27 ----- ArmPlatformPkg/Include/Drivers/PL301Axi.h | 21 ---- 3 files changed, 156 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.c b/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.c deleted file mode 100644 index 8600721c581f..000000000000 --- a/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.c +++ /dev/null @@ -1,108 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include - -#define PL301_QOS_TIDEMARK_MI_0 0x400 -#define PL301_QOS_ACCESSCONTROL_MI_0 0x404 - -#define PL301_QOS_TIDEMARK_MI_1 0x420 -#define PL301_QOS_ACCESSCONTROL_MI_1 0x424 - -#define PL301_QOS_TIDEMARK_MI_2 0x440 -#define PL301_QOS_ACCESSCONTROL_MI_2 0x444 - -#define PL301_AR_ARB_MI_0 0x408 -#define PL301_AW_ARB_MI_0 0x40C - -#define PL301_AR_ARB_MI_1 0x428 -#define PL301_AW_ARB_MI_1 0x42C - -#define PL301_AR_ARB_MI_2 0x448 -#define PL301_AW_ARB_MI_2 0x44C - -#define PL301_MI_1_OFFSET 0x20 -#define PL301_MI_2_OFFSET 0x40 -#define PL301_MI_3_OFFSET 0x60 -#define PL301_MI_4_OFFSET 0x80 -#define PL301_MI_5_OFFSET 0xa0 - -#define V2P_CA9_FAXI_MI0_TIDEMARK_VAL 0x6 -#define V2P_CA9_FAXI_MI0_ACCESSCNTRL_VAL 0x1 - -#define V2P_CA9_FAXI_MI1_TIDEMARK_VAL 0x6 -#define V2P_CA9_FAXI_MI1_ACCESSCNTRL_VAL 0x1 - -#define V2P_CA9_FAXI_MI2_TIDEMARK_VAL 0x6 -#define V2P_CA9_FAXI_MI2_ACCESSCNTRL_VAL 0x1 - - -#define FAxiWriteReg(reg,val) MmioWrite32(FAxiBase + reg, val) -#define FAxiReadReg(reg) MmioRead32(FAxiBase + reg) - -// IN FAxiBase -// Initialize PL301 Dynamic Memory Controller -VOID PL301AxiInit(UINTN FAxiBase) { - // Configure Tidemark Register for Master Port 0 (MI 0) - FAxiWriteReg(PL301_QOS_TIDEMARK_MI_0, V2P_CA9_FAXI_MI0_TIDEMARK_VAL); - - // Configure the Access Control Register (MI 0) - FAxiWriteReg(PL301_QOS_ACCESSCONTROL_MI_0, V2P_CA9_FAXI_MI0_ACCESSCNTRL_VAL); - - // MP0 - // Set priority for Read - FAxiWriteReg(PL301_AR_ARB_MI_0, 0x00000100); - FAxiWriteReg(PL301_AR_ARB_MI_0, 0x01000200); - FAxiWriteReg(PL301_AR_ARB_MI_0, 0x02000200); - FAxiWriteReg(PL301_AR_ARB_MI_0, 0x03000200); - FAxiWriteReg(PL301_AR_ARB_MI_0, 0x04000200); - - // Set priority for Write - FAxiWriteReg(PL301_AW_ARB_MI_0, 0x00000100); - FAxiWriteReg(PL301_AW_ARB_MI_0, 0x01000200); - FAxiWriteReg(PL301_AW_ARB_MI_0, 0x02000200); - FAxiWriteReg(PL301_AW_ARB_MI_0, 0x03000200); - FAxiWriteReg(PL301_AW_ARB_MI_0, 0x04000200); - - // MP1 - // Set priority for Read - FAxiWriteReg(PL301_AR_ARB_MI_1, 0x00000100); - FAxiWriteReg(PL301_AR_ARB_MI_1, 0x01000200); - FAxiWriteReg(PL301_AR_ARB_MI_1, 0x02000200); - FAxiWriteReg(PL301_AR_ARB_MI_1, 0x03000200); - FAxiWriteReg(PL301_AR_ARB_MI_1, 0x04000200); - - // Set priority for Write - FAxiWriteReg(PL301_AW_ARB_MI_1, 0x00000100); - FAxiWriteReg(PL301_AW_ARB_MI_1, 0x01000200); - FAxiWriteReg(PL301_AW_ARB_MI_1, 0x02000200); - FAxiWriteReg(PL301_AW_ARB_MI_1, 0x03000200); - FAxiWriteReg(PL301_AW_ARB_MI_1, 0x04000200); - - // MP2 - // Set priority for Read - FAxiWriteReg(PL301_AR_ARB_MI_2, 0x00000100); - FAxiWriteReg(PL301_AR_ARB_MI_2, 0x01000100); - FAxiWriteReg(PL301_AR_ARB_MI_2, 0x02000100); - FAxiWriteReg(PL301_AR_ARB_MI_2, 0x03000100); - FAxiWriteReg(PL301_AR_ARB_MI_2, 0x04000100); - - // Set priority for Write - FAxiWriteReg(PL301_AW_ARB_MI_2, 0x00000100); - FAxiWriteReg(PL301_AW_ARB_MI_2, 0x01000200); - FAxiWriteReg(PL301_AW_ARB_MI_2, 0x02000200); - FAxiWriteReg(PL301_AW_ARB_MI_2, 0x03000200); - FAxiWriteReg(PL301_AW_ARB_MI_2, 0x04000200); -} diff --git a/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.inf b/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.inf deleted file mode 100644 index 108161fc16c4..000000000000 --- a/ArmPlatformPkg/Drivers/PL301Axi/PL301Axi.inf +++ /dev/null @@ -1,27 +0,0 @@ -#/* @file -# Copyright (c) 2011, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL301Axi - FILE_GUID = 2ea84160-aba0-11df-9896-0002a5d5c51b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = PL301AxiLib - -[Sources] - PL301Axi.c - -[Packages] - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec diff --git a/ArmPlatformPkg/Include/Drivers/PL301Axi.h b/ArmPlatformPkg/Include/Drivers/PL301Axi.h deleted file mode 100644 index ae941839f08b..000000000000 --- a/ArmPlatformPkg/Include/Drivers/PL301Axi.h +++ /dev/null @@ -1,21 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef PL301AXI_H_ -#define PL301AXI_H_ - -VOID PL301AxiInit(UINTN FAxiBase); - - -#endif /* PL301AXI_H_ */ From patchwork Mon Dec 4 22:22:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120610 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434683edb; Mon, 4 Dec 2017 14:23:27 -0800 (PST) X-Google-Smtp-Source: AGs4zMY5Hh42NCJztWZ331XajTc0c+pV2TP6UHnupkMhlPMRANd2qBQvAWuAovrTMP7vDSD0Q8aJ X-Received: by 10.84.141.36 with SMTP id 33mr16072325plu.247.1512426207591; Mon, 04 Dec 2017 14:23:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426207; cv=none; d=google.com; s=arc-20160816; b=OsInKQrBoyESlCU1cJEk1yAlg528gevR+gH8fjdoyZFohDhMlemfPbsuR0CZPdoBYp VY9+HuDIu0B94U+8HKisixl0JnegALIyVyr0oqRNEIO7XMJOhsDgY3eJhgAqiMWMF0oa +DHzuSJj3tIebysFJ7w5hykj0BD5vPVnkxkdusYIQYpaYGyl4RmXC0WZcBRJMWc1l0q8 xpYUpFftnM2e1vs3AYIxSx2tm3cyf1AU+bP+P9f/IetV8yCybm/8faAv4kaS5DJ0rCkW G0FiRq11XXF2RRZWrIcpzfMYKGYTgdLa3HoepzoMWbgXeezbh0e542YvEgIwfmhaI5sN PDLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=4Ro3ffv7VF9mCxq5D+hYEkTZjfa8thf84Ezj4kshH7o=; b=nJYaaC8ySdXpkut8IDT0hawSn0ywYejBgAVgXEXwKghglyGp2pcIFTzK357iybejiw qc/wgC02NAUguuSRGhGgi/oX68iFLBEKvWTQh0yxtM1n9VURMNmEKIkB+rJsfv+wb7tD l5jqKgZVJlJrjuHDN/UqBh298l7YdJH9QDpzedDgA56V8Fa7Y6wYwwI4pChN583eFbCb y7ed6KWOPJBbUAc+sQhyPWHYC3goRjNRl1Aq9ktD3ojxSQ1bOPnoQkHWKDrep4Xrho2D 0kLSGIYIRAdym0QxgunjgyBjsEehw8kGt7mhSqqQHz4qNAeGIunAoxMlcMu3zNguxZxr fsjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LKwfkmUX; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id b193si10054894pga.103.2017.12.04.14.23.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:27 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=LKwfkmUX; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 96AB220356243; Mon, 4 Dec 2017 14:18:46 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::244; helo=mail-wm0-x244.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 8D23B20356241 for ; Mon, 4 Dec 2017 14:18:45 -0800 (PST) Received: by mail-wm0-x244.google.com with SMTP id 9so8619511wme.4 for ; Mon, 04 Dec 2017 14:23:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PcH5C8yYFMCpbEWU9+802UyXgLBBJy4g1DSeg01KgBY=; b=LKwfkmUXbH64XB+u7jdtF/oVeL61djaMo9YIecJsh/2YbSMOLAOrpDK/afmiSgwR8W 8HScZqu6qaLQaSo5Uitmti5nqLIYs2t2TLINxFb/ZlGRB1ydBwXmx1M54eSAhkhjWn66 /oahpFXF/d5MTnKak9H+Y6Rbsd3phLNaxZZ+s= 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; bh=PcH5C8yYFMCpbEWU9+802UyXgLBBJy4g1DSeg01KgBY=; b=kH6rPnnoPB8E+voNobfO3qgn/OkePUVFdUHuzYjO/4ECn4wg/h7BcqYqOthfuMhJk0 FmU9yZhKdMFABMlbHImaKRCrmxn/7AswJ0xCJDkmGUwM0poG74RJhwkO791N0R5JOu7I 9o1Uh5/H0kwTPIUXGRGB5/UYXawHJ7vYqk7e6Dz+3z79ntq/GrCJ1z1fpPLYMPs7Qgjc 6GoyNSLi+LTytijmL891+9fzZx7OcaN8deRs2dEjwGD5UPg21hK0Lh98f6ifwrmuhFSS 2368snJONwC/q2H8OVEOlEXJ+41jZydhqQpVWogU8O3n2+oLhDLwVbYRbii/GePe1IY7 zJxQ== X-Gm-Message-State: AJaThX4tHNuwyzY0+SSjkkGd4IY+I8fGXcrnnal++/FoEjTsck/wh8u8 TkRvA1Bbn4lg9HlvTbR1HsPUYBHl01Y= X-Received: by 10.28.47.66 with SMTP id v63mr7985834wmv.144.1512426194056; Mon, 04 Dec 2017 14:23:14 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:13 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:39 +0000 Message-Id: <20171204222243.15950-10-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 09/13] ArmPlatformPkg: remove unused PL35x driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" No platform uses this so remove it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.S | 60 ---------------- ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.asm | 62 ---------------- ArmPlatformPkg/Drivers/PL35xSmc/PL35xSmc.inf | 29 -------- ArmPlatformPkg/Include/Drivers/PL35xSmc.h | 75 -------------------- 4 files changed, 226 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.S b/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.S deleted file mode 100644 index a26a4d43770e..000000000000 --- a/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.S +++ /dev/null @@ -1,60 +0,0 @@ -# -# Copyright (c) 2011-2012, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -# - -#include -#include -#include -#include - -.text - -#Maintain 8 byte alignment -.align 3 - -GCC_ASM_EXPORT(PL35xSmcInitialize) -GCC_ASM_EXPORT(PL35xSmcSetRefresh) - -// IN r1 Smc Base Address -// IN r2 Smc Configuration Start Address -// IN r3 Smc Configuration End Address -// NOTE: This code is been called before any stack has been setup. It means some registers -// could be overwritten (case of 'r0') -ASM_PFX(PL35xSmcInitialize): - // While (SmcConfigurationStart < SmcConfigurationEnd) - cmp r2, r3 - blxge lr - - // Write to set_cycle register(holding register for NOR 1 cycle register or NAND cycle register) - ldr r0, [r2, #0x4] - str r0, [r1, #PL350_SMC_SET_CYCLES_OFFSET] - - // Write to set_opmode register(holding register for NOR 1 opomode register or NAND opmode register) - ldr r0, [r2, #0x8] - str r0, [r1, #PL350_SMC_SET_OPMODE_OFFSET] - - // Write to direct_cmd register so that the NOR 1 registers(set-cycles and opmode) are updated with holding registers - ldr r0, =PL350_SMC_DIRECT_CMD_ADDR_CMD_UPDATE - ldr r4, [r2, #0x0] - orr r0, r0, r4 - str r0, [r1, #PL350_SMC_DIRECT_CMD_OFFSET] - - add r2, #0xC - b ASM_PFX(PL35xSmcInitialize) - -// IN r1 Smc Base Address -// IN r2 Smc Refresh Period 0 -// IN r3 Smc Refresh Period 1 -ASM_PFX(PL35xSmcSetRefresh): - str r2, [r1, #PL350_SMC_REFRESH_0_OFFSET] - str r3, [r1, #PL350_SMC_REFRESH_1_OFFSET] - blx lr diff --git a/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.asm b/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.asm deleted file mode 100644 index 661b0688c85c..000000000000 --- a/ArmPlatformPkg/Drivers/PL35xSmc/InitializeSMC.asm +++ /dev/null @@ -1,62 +0,0 @@ -// -// Copyright (c) 2011-2012, ARM Limited. All rights reserved. -// -// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the BSD License -// which accompanies this distribution. The full text of the license may be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -// -// - -#include -#include -#include -#include - - INCLUDE AsmMacroIoLib.inc - - EXPORT PL35xSmcInitialize - EXPORT PL35xSmcSetRefresh - - PRESERVE8 - AREA ModuleInitializeSMC, CODE, READONLY - -// IN r1 Smc Base Address -// IN r2 Smc Configuration Start Address -// IN r3 Smc Configuration End Address -// NOTE: This code is been called before any stack has been setup. It means some registers -// could be overwritten (case of 'r0') -PL35xSmcInitialize - // While (SmcConfigurationStart < SmcConfigurationEnd) - cmp r2, r3 - blxge lr - - // Write to set_cycle register(holding register for NOR 1 cycle register or NAND cycle register) - ldr r0, [r2, #0x4] - str r0, [r1, #PL350_SMC_SET_CYCLES_OFFSET] - - // Write to set_opmode register(holding register for NOR 1 opomode register or NAND opmode register) - ldr r0, [r2, #0x8] - str r0, [r1, #PL350_SMC_SET_OPMODE_OFFSET] - - // Write to direct_cmd register so that the NOR 1 registers(set-cycles and opmode) are updated with holding registers - ldr r0, =PL350_SMC_DIRECT_CMD_ADDR_CMD_UPDATE - ldr r4, [r2, #0x0] - orr r0, r0, r4 - str r0, [r1, #PL350_SMC_DIRECT_CMD_OFFSET] - - add r2, #0xC - b PL35xSmcInitialize - -// IN r1 Smc Base Address -// IN r2 Smc Refresh Period 0 -// IN r3 Smc Refresh Period 1 -PL35xSmcSetRefresh - str r2, [r1, #PL350_SMC_REFRESH_0_OFFSET] - str r3, [r1, #PL350_SMC_REFRESH_1_OFFSET] - blx lr - - END diff --git a/ArmPlatformPkg/Drivers/PL35xSmc/PL35xSmc.inf b/ArmPlatformPkg/Drivers/PL35xSmc/PL35xSmc.inf deleted file mode 100644 index 2eee5ab5056f..000000000000 --- a/ArmPlatformPkg/Drivers/PL35xSmc/PL35xSmc.inf +++ /dev/null @@ -1,29 +0,0 @@ -#/* @file -# Copyright (c) 2011, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL35xSmc - FILE_GUID = 10952220-aa32-11df-a438-0002a5d5c51b - MODULE_TYPE = SEC - VERSION_STRING = 1.0 - LIBRARY_CLASS = PL35xSmcLib - -[Sources.common] - InitializeSMC.asm | RVCT - InitializeSMC.S | GCC - -[Packages] - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec diff --git a/ArmPlatformPkg/Include/Drivers/PL35xSmc.h b/ArmPlatformPkg/Include/Drivers/PL35xSmc.h deleted file mode 100644 index 750f5088b6de..000000000000 --- a/ArmPlatformPkg/Include/Drivers/PL35xSmc.h +++ /dev/null @@ -1,75 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef PL35xSMC_H_ -#define PL35xSMC_H_ - -#define PL350_SMC_DIRECT_CMD_OFFSET 0x10 -#define PL350_SMC_SET_CYCLES_OFFSET 0x14 -#define PL350_SMC_SET_OPMODE_OFFSET 0x18 -#define PL350_SMC_REFRESH_0_OFFSET 0x20 -#define PL350_SMC_REFRESH_1_OFFSET 0x24 - -#define PL350_SMC_DIRECT_CMD_ADDR(addr) ((addr) & 0xFFFFF) -#define PL350_SMC_DIRECT_CMD_ADDR_SET_CRE (1 << 20) -#define PL350_SMC_DIRECT_CMD_ADDR_CMD_MODE_UPDATE (3 << 21) -#define PL350_SMC_DIRECT_CMD_ADDR_CMD_UPDATE (2 << 21) -#define PL350_SMC_DIRECT_CMD_ADDR_CMD_MODE (1 << 21) -#define PL350_SMC_DIRECT_CMD_ADDR_CMD_UPDATE_AXI (0 << 21) -#define PL350_SMC_DIRECT_CMD_ADDR_CS_INTERF(interf,chip) (((interf) << 25) | ((chip) << 23)) -#define PL350_SMC_DIRECT_CMD_ADDR_CS(ChipSelect) (((ChipSelect) & 0x7) << 23) - -#define PL350_SMC_SET_OPMODE_MEM_WIDTH_8 (0 << 0) -#define PL350_SMC_SET_OPMODE_MEM_WIDTH_16 (1 << 0) -#define PL350_SMC_SET_OPMODE_MEM_WIDTH_32 (2 << 0) -#define PL350_SMC_SET_OPMODE_SET_RD_SYNC (1 << 2) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_1 (0 << 3) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_4 (1 << 3) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_8 (2 << 3) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_16 (3 << 3) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_32 (4 << 3) -#define PL350_SMC_SET_OPMODE_SET_RD_BURST_LENGTH_CONT (5 << 3) -#define PL350_SMC_SET_OPMODE_SET_WR_SYNC (1 << 6) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_1 (0 << 7) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_4 (1 << 7) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_8 (2 << 7) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_16 (3 << 7) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_32 (4 << 7) -#define PL350_SMC_SET_OPMODE_SET_WR_BURST_LENGTH_CONT (5 << 7) -#define PL350_SMC_SET_OPMODE_SET_BAA (1 << 10) -#define PL350_SMC_SET_OPMODE_SET_ADV (1 << 11) -#define PL350_SMC_SET_OPMODE_SET_BLS (1 << 12) -#define PL350_SMC_SET_OPMODE_SET_BURST_ALIGN_ANY (0 << 13) -#define PL350_SMC_SET_OPMODE_SET_BURST_ALIGN_32 (1 << 13) -#define PL350_SMC_SET_OPMODE_SET_BURST_ALIGN_64 (2 << 13) -#define PL350_SMC_SET_OPMODE_SET_BURST_ALIGN_128 (3 << 13) -#define PL350_SMC_SET_OPMODE_SET_BURST_ALIGN_256 (4 << 13) - -#define PL350_SMC_SET_CYCLE_NAND_T_RC(t) (((t) & 0xF) << 0) -#define PL350_SMC_SET_CYCLE_NAND_T_WC(t) (((t) & 0xF) << 4) -#define PL350_SMC_SET_CYCLE_NAND_T_REA(t) (((t) & 0x7) << 8) -#define PL350_SMC_SET_CYCLE_NAND_T_WP(t) (((t) & 0x7) << 11) -#define PL350_SMC_SET_CYCLE_NAND_T_CLR(t) (((t) & 0x7) << 14) -#define PL350_SMC_SET_CYCLE_NAND_T_AR(t) (((t) & 0x7) << 17) -#define PL350_SMC_SET_CYCLE_NAND_T_RR(t) (((t) & 0x7) << 20) - -#define PL350_SMC_SET_CYCLE_SRAM_T_RC(t) (((t) & 0xF) << 0) -#define PL350_SMC_SET_CYCLE_SRAM_T_WC(t) (((t) & 0xF) << 4) -#define PL350_SMC_SET_CYCLE_SRAM_T_CEOE(t) (((t) & 0x7) << 8) -#define PL350_SMC_SET_CYCLE_SRAM_T_WP(t) (((t) & 0x7) << 11) -#define PL350_SMC_SET_CYCLE_SRAM_T_PC(t) (((t) & 0x7) << 14) -#define PL350_SMC_SET_CYCLE_SRAM_T_TR(t) (((t) & 0x7) << 17) -#define PL350_SMC_SET_CYCLE_SRAM_WE_TIME (1 << 20) - -#endif From patchwork Mon Dec 4 22:22:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120611 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434716edb; Mon, 4 Dec 2017 14:23:30 -0800 (PST) X-Google-Smtp-Source: AGs4zMZgQWEDvXa8WUhz//sGjln7AQB6SLfuL1q0lCdGVphSY1eUkZvG0RLK7xIEWaFoVTX1s80r X-Received: by 10.98.87.142 with SMTP id i14mr20921326pfj.212.1512426210822; Mon, 04 Dec 2017 14:23:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426210; cv=none; d=google.com; s=arc-20160816; b=Kyy7zpi5i+4lYPqW1L0kzwzwC4tttR6pyaBJvQBF1575naSzIIs5GN4VKTlXfmpaIG 3kYmvDnptO2pF3Est8fHn4pfHhCtolYfm39sdhTVe78MEOiB1yCFqg8fCjdCFopQNRyq sQN6AVale4AytOJxzlibPNYsURCh+iDmhi97vq+x6HioqWozdDZ7+hvyFjEaFbgJxiZU 0cr3+ZiFYvzkLRuX5Lyqgb4sZ/XqVYLSUABPJINzHvOC955ffeJ+dbYVuKeDzf6owh6l RnJlaQkGTw6yKkXmgA5Zs+lTakAANUK9VWL5ktvGCZjFJK6OkRpsw/K5/kLIm94X/t1g F+TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=pVNqrqgkcA02WQlOZj1gYWwGFXpmm5LO51boYg53BK8=; b=G72c4c486m74pfjTEaQyKKOXMt3+3FKLIjPGDUSI7quQEOM79z/JjsUpqRO/R5lhk9 446HX2nIVb5T63VfyvaibL/W7RF1xsg7RmdYdiRqGGeMw8J0CAR09H0ewkqXT0TKyxEb WnMe+6CFp+M/Eth2YXmsdOxijXNwgFom6VX01viYB9irycFuDkEg6h9G5+ZCNhLDu3We 7rzjhgbcr/vXZF9831mWzVpzABCk/eD00w98H36SngRzPPCMnHaIKVVWediWVYYh47Ph I4JmHXTpMiBXYyo8GZ9pjGoDfUL3N5KKiokeol0eMu35IXPxmu+aMmU6D0bykn4rowrH Ee9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QhHUiW/b; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id v10si10303074plg.543.2017.12.04.14.23.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:30 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=QhHUiW/b; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D260220356248; Mon, 4 Dec 2017 14:18:49 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::243; helo=mail-wr0-x243.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D00E720356241 for ; Mon, 4 Dec 2017 14:18:47 -0800 (PST) Received: by mail-wr0-x243.google.com with SMTP id a41so17131266wra.6 for ; Mon, 04 Dec 2017 14:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5u7CY0fEdrWapK/JDdVlrFE5J2e9j9D5RDne1uu9Rmg=; b=QhHUiW/boJZkCj7yg1uO9HytzrPdMNdDVVi9kfXAQm2FSlMOrR0KTvz6zqu5HnzgHx MBsLpZ36gwWUSVOx8SJ/c/7+FLaH9uRJSOlVNvCD2R57XqN4/8QPD6SeESp38LtzVQ51 Fg99LHhty8xnVOrXWe4ufkizu2i4J+CUtjuNw= 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; bh=5u7CY0fEdrWapK/JDdVlrFE5J2e9j9D5RDne1uu9Rmg=; b=Is1Swtrm34y5qJvdXlE19AQg/691URFfsp9BVO0vfpBl3BOSpaTYYPlvdRCh573Wk9 yZOQisi2TX+cCZxM/1DYZh+NhVHPrpUjBq1bhqey0T/NPP5EVnMrGDL5fAUdnrefe4Cm 4t7Oit+6/tQJtfDHOw8yyu9/w3mMiVrI6eSbAISc6ofKhq9yp4SF6hLApOpq5HEdA5Mm 8M8l9JhDZfuQbH8meTQSVBzK0WZCOI13c8kEb/l6zoPqgM1fqCvvMnBWMJcR7ehNV1pG jV8wB8iXzqdB81Ra+s7PQt977pwoBnB1IVlwDhrr+8ps029FRpGP+H0JvvKlSuqpic4a rIOQ== X-Gm-Message-State: AJaThX4AD5+l7WS1TMsoiJagPwS41QGUSnn5UdqHKI4ByweYt8tRiy// wnxz1EFxrFyc6P+mfhJTq4oRAnfv01M= X-Received: by 10.223.192.76 with SMTP id c12mr15009367wrf.147.1512426196231; Mon, 04 Dec 2017 14:23:16 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:15 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:40 +0000 Message-Id: <20171204222243.15950-11-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 10/13] ArmPlatformPkg: remove PL34xDmc driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Remove PL34xDmc driver which is not used by any platforms Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.c | 227 ------------- ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.inf | 29 -- ArmPlatformPkg/Include/Drivers/PL341Dmc.h | 336 -------------------- 3 files changed, 592 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.c b/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.c deleted file mode 100644 index 08eba6ec6930..000000000000 --- a/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.c +++ /dev/null @@ -1,227 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include - -#include -#include - -#include - -// Macros for writing to DDR2 controller. -#define DmcWriteReg(reg,val) MmioWrite32(DmcBase + reg, val) -#define DmcReadReg(reg) MmioRead32(DmcBase + reg) - -// Macros for writing/reading to DDR2 PHY controller -#define DmcPhyWriteReg(reg,val) MmioWrite32(DmcPhyBase + reg, val) -#define DmcPhyReadReg(reg) MmioRead32(DmcPhyBase + reg) - -// Initialise PL341 Dynamic Memory Controller -VOID -PL341DmcInit ( - IN UINTN DmcBase, - IN PL341_DMC_CONFIG* DmcConfig - ) -{ - UINTN Index; - UINT32 Chip; - - // Set config mode - DmcWriteReg(DMC_COMMAND_REG, DMC_COMMAND_CONFIGURE); - - // - // Setup the QoS AXI ID bits - // - if (DmcConfig->HasQos) { - // CLCD AXIID = 000 - DmcWriteReg(DMC_ID_0_CFG_REG, DMC_ID_CFG_QOS_ENABLE | DMC_ID_CFG_QOS_MIN); - - // Default disable QoS - DmcWriteReg(DMC_ID_1_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_2_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_3_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_4_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_5_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_6_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_7_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_8_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_9_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_10_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_11_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_12_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_13_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_14_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - DmcWriteReg(DMC_ID_15_CFG_REG, DMC_ID_CFG_QOS_DISABLE); - } - - // - // Initialise memory controlller - // - DmcWriteReg(DMC_REFRESH_PRD_REG, DmcConfig->RefreshPeriod); - DmcWriteReg(DMC_CAS_LATENCY_REG, DmcConfig->CasLatency); - DmcWriteReg(DMC_WRITE_LATENCY_REG, DmcConfig->WriteLatency); - DmcWriteReg(DMC_T_MRD_REG, DmcConfig->t_mrd); - DmcWriteReg(DMC_T_RAS_REG, DmcConfig->t_ras); - DmcWriteReg(DMC_T_RC_REG, DmcConfig->t_rc); - DmcWriteReg(DMC_T_RCD_REG, DmcConfig->t_rcd); - DmcWriteReg(DMC_T_RFC_REG, DmcConfig->t_rfc); - DmcWriteReg(DMC_T_RP_REG, DmcConfig->t_rp); - DmcWriteReg(DMC_T_RRD_REG, DmcConfig->t_rrd); - DmcWriteReg(DMC_T_WR_REG, DmcConfig->t_wr); - DmcWriteReg(DMC_T_WTR_REG, DmcConfig->t_wtr); - DmcWriteReg(DMC_T_XP_REG, DmcConfig->t_xp); - DmcWriteReg(DMC_T_XSR_REG, DmcConfig->t_xsr); - DmcWriteReg(DMC_T_ESR_REG, DmcConfig->t_esr); - DmcWriteReg(DMC_T_FAW_REG, DmcConfig->t_faw); - DmcWriteReg(DMC_T_WRLAT_DIFF, DmcConfig->t_wdata_en); - DmcWriteReg(DMC_T_RDATA_EN, DmcConfig->t_data_en); - - // - // Initialise PL341 Mem Config Registers - // - - // Set PL341 Memory Config - DmcWriteReg(DMC_MEMORY_CONFIG_REG, DmcConfig->MemoryCfg); - - // Set PL341 Memory Config 2 - DmcWriteReg(DMC_MEMORY_CFG2_REG, DmcConfig->MemoryCfg2); - - // Set PL341 Memory Config 3 - DmcWriteReg(DMC_MEMORY_CFG3_REG, DmcConfig->MemoryCfg3); - - // Set PL341 Chip Select - DmcWriteReg(DMC_CHIP_0_CFG_REG, DmcConfig->ChipCfg0); - DmcWriteReg(DMC_CHIP_1_CFG_REG, DmcConfig->ChipCfg1); - DmcWriteReg(DMC_CHIP_2_CFG_REG, DmcConfig->ChipCfg2); - DmcWriteReg(DMC_CHIP_3_CFG_REG, DmcConfig->ChipCfg3); - - // Delay - for (Index = 0; Index < 10; Index++) { - DmcReadReg(DMC_STATUS_REG); - } - - if (DmcConfig->IsUserCfg) { - // - // Set Test Chip PHY Registers via PL341 User Config Reg - // Note that user_cfgX registers are Write Only - // - // DLL Freq set = 250MHz - 266MHz - // - DmcWriteReg(DMC_USER_0_CFG_REG, DmcConfig->User0Cfg); - - // user_config2 - // ------------ - // Set defaults before calibrating the DDR2 buffer impendence - // - Disable ODT - // - Default drive strengths - DmcWriteReg(DMC_USER_2_CFG_REG, 0x40000198); - - // - // Auto calibrate the DDR2 buffers impendence - // - while (!(DmcReadReg(DMC_USER_STATUS_REG) & 0x100)); - - // Set the output driven strength - DmcWriteReg(DMC_USER_2_CFG_REG, 0x40800000 | DmcConfig->User2Cfg); - - // - // Set PL341 Feature Control Register - // - // Disable early BRESP - use to optimise CLCD performance - DmcWriteReg(DMC_FEATURE_CRTL_REG, 0x00000001); - } - - // - // Config memories - // - for (Chip = 0; Chip < DmcConfig->MaxChip; Chip++) { - // Send nop - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_NOP); - - // Pre-charge all - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL); - - // Delay - for (Index = 0; Index < 10; Index++) { - DmcReadReg(DMC_STATUS_REG); - } - - // Set (EMR2) extended mode register 2 - DmcWriteReg(DMC_DIRECT_CMD_REG, - DMC_DIRECT_CMD_CHIP_ADDR(Chip) | - DMC_DIRECT_CMD_BANKADDR(2) | - DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); - - // Set (EMR3) extended mode register 3 - DmcWriteReg(DMC_DIRECT_CMD_REG, - DMC_DIRECT_CMD_CHIP_ADDR(Chip) | - DMC_DIRECT_CMD_BANKADDR(3) | - DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); - - // - // Set (EMR) Extended Mode Register - // - // Put into OCD default state - DmcWriteReg(DMC_DIRECT_CMD_REG,DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_BANKADDR(1) | DMC_DIRECT_CMD_MEMCMD_EXTMODEREG); - - // - // Set (MR) mode register - With DLL reset - // - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_EXTMODEREG | DmcConfig->ModeReg | DDR2_MR_DLL_RESET); - - // Pre-charge all - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL); - // Auto-refresh - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH); - // Auto-refresh - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH); - - // - // Set (MR) mode register - Without DLL reset - // - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | DMC_DIRECT_CMD_MEMCMD_EXTMODEREG | DmcConfig->ModeReg); - - // Delay - for (Index = 0; Index < 10; Index++) { - DmcReadReg(DMC_STATUS_REG); - } - - // - // Set (EMR) extended mode register - Enable OCD defaults - // - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | (0x00090000) | - (1 << DDR_MODESET_SHFT) | (DDR_EMR_OCD_DEFAULT << DDR_EMR_OCD_SHIFT) | DmcConfig->ExtModeReg); - - // Delay - for (Index = 0; Index < 10; Index++) { - DmcReadReg(DMC_STATUS_REG); - } - - // Set (EMR) extended mode register - OCD Exit - DmcWriteReg(DMC_DIRECT_CMD_REG, DMC_DIRECT_CMD_CHIP_ADDR(Chip) | (0x00090000) | - (1 << DDR_MODESET_SHFT) | (DDR_EMR_OCD_NS << DDR_EMR_OCD_SHIFT) | DmcConfig->ExtModeReg); - - // Delay - for (Index = 0; Index < 10; Index++) { - DmcReadReg(DMC_STATUS_REG); - } - } - - // Move DDR2 Controller to Ready state by issueing GO command - DmcWriteReg(DMC_COMMAND_REG, DMC_COMMAND_GO); - - // wait for ready - while (!(DmcReadReg(DMC_STATUS_REG) & DMC_STATUS_READY)); - -} diff --git a/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.inf b/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.inf deleted file mode 100644 index 0f3d862e14ef..000000000000 --- a/ArmPlatformPkg/Drivers/PL34xDmc/PL341Dmc.inf +++ /dev/null @@ -1,29 +0,0 @@ -#/* @file -# Copyright (c) 2011, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL341Dmc - FILE_GUID = edf8da40-aad1-11df-a1f4-0002a5d5c51b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = PL341DmcLib - -[Sources] - PL341Dmc.c - -[Packages] - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec - -[FixedPcd] diff --git a/ArmPlatformPkg/Include/Drivers/PL341Dmc.h b/ArmPlatformPkg/Include/Drivers/PL341Dmc.h deleted file mode 100644 index caba8f445bd8..000000000000 --- a/ArmPlatformPkg/Include/Drivers/PL341Dmc.h +++ /dev/null @@ -1,336 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef _PL341DMC_H_ -#define _PL341DMC_H_ - - -typedef struct { - UINTN HasQos; // has QoS registers - UINTN MaxChip; // number of memory chips accessible - BOOLEAN IsUserCfg; - UINT32 User0Cfg; - UINT32 User2Cfg; - UINT32 RefreshPeriod; - UINT32 CasLatency; - UINT32 WriteLatency; - UINT32 t_mrd; - UINT32 t_ras; - UINT32 t_rc; - UINT32 t_rcd; - UINT32 t_rfc; - UINT32 t_rp; - UINT32 t_rrd; - UINT32 t_wr; - UINT32 t_wtr; - UINT32 t_xp; - UINT32 t_xsr; - UINT32 t_esr; - UINT32 MemoryCfg; - UINT32 MemoryCfg2; - UINT32 MemoryCfg3; - UINT32 ChipCfg0; - UINT32 ChipCfg1; - UINT32 ChipCfg2; - UINT32 ChipCfg3; - UINT32 t_faw; - UINT32 t_data_en; - UINT32 t_wdata_en; - UINT32 ModeReg; - UINT32 ExtModeReg; -} PL341_DMC_CONFIG; - -/* Memory config bit fields */ -#define DMC_MEMORY_CONFIG_COLUMN_ADDRESS_9 0x1 -#define DMC_MEMORY_CONFIG_COLUMN_ADDRESS_10 0x2 -#define DMC_MEMORY_CONFIG_COLUMN_ADDRESS_11 0x3 -#define DMC_MEMORY_CONFIG_COLUMN_ADDRESS_12 0x4 -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_11 (0x0 << 3) -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_12 (0x1 << 3) -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_13 (0x2 << 3) -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_14 (0x3 << 3) -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_15 (0x4 << 3) -#define DMC_MEMORY_CONFIG_ROW_ADDRESS_16 (0x5 << 3) -#define DMC_MEMORY_CONFIG_BURST_2 (0x1 << 15) -#define DMC_MEMORY_CONFIG_BURST_4 (0x2 << 15) -#define DMC_MEMORY_CONFIG_BURST_8 (0x3 << 15) -#define DMC_MEMORY_CONFIG_BURST_16 (0x4 << 15) -#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_1 (0x0 << 21) -#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_2 (0x1 << 21) -#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_3 (0x2 << 21) -#define DMC_MEMORY_CONFIG_ACTIVE_CHIP_4 (0x3 << 21) - -#define DMC_MEMORY_CFG2_CLK_ASYNC (0x0 << 0) -#define DMC_MEMORY_CFG2_CLK_SYNC (0x1 << 0) -#define DMC_MEMORY_CFG2_DQM_INIT (0x1 << 2) -#define DMC_MEMORY_CFG2_CKE_INIT (0x1 << 3) -#define DMC_MEMORY_CFG2_BANK_BITS_2 (0x0 << 4) -#define DMC_MEMORY_CFG2_BANK_BITS_3 (0x3 << 4) -#define DMC_MEMORY_CFG2_MEM_WIDTH_16 (0x0 << 6) -#define DMC_MEMORY_CFG2_MEM_WIDTH_32 (0x1 << 6) -#define DMC_MEMORY_CFG2_MEM_WIDTH_64 (0x2 << 6) -#define DMC_MEMORY_CFG2_MEM_WIDTH_RESERVED (0x3 << 6) - -// -// DMC Configuration Register Map -// -#define DMC_STATUS_REG 0x00 -#define DMC_COMMAND_REG 0x04 -#define DMC_DIRECT_CMD_REG 0x08 -#define DMC_MEMORY_CONFIG_REG 0x0C -#define DMC_REFRESH_PRD_REG 0x10 -#define DMC_CAS_LATENCY_REG 0x14 -#define DMC_WRITE_LATENCY_REG 0x18 -#define DMC_T_MRD_REG 0x1C -#define DMC_T_RAS_REG 0x20 -#define DMC_T_RC_REG 0x24 -#define DMC_T_RCD_REG 0x28 -#define DMC_T_RFC_REG 0x2C -#define DMC_T_RP_REG 0x30 -#define DMC_T_RRD_REG 0x34 -#define DMC_T_WR_REG 0x38 -#define DMC_T_WTR_REG 0x3C -#define DMC_T_XP_REG 0x40 -#define DMC_T_XSR_REG 0x44 -#define DMC_T_ESR_REG 0x48 -#define DMC_MEMORY_CFG2_REG 0x4C -#define DMC_MEMORY_CFG3_REG 0x50 -#define DMC_T_FAW_REG 0x54 -#define DMC_T_RDATA_EN 0x5C /* DFI read data enable register */ -#define DMC_T_WRLAT_DIFF 0x60 /* DFI write data enable register */ - -// Returns the state of the memory controller: -#define DMC_STATUS_CONFIG 0x0 -#define DMC_STATUS_READY 0x1 -#define DMC_STATUS_PAUSED 0x2 -#define DMC_STATUS_LOWPOWER 0x3 - -// Changes the state of the memory controller: -#define DMC_COMMAND_GO 0x0 -#define DMC_COMMAND_SLEEP 0x1 -#define DMC_COMMAND_WAKEUP 0x2 -#define DMC_COMMAND_PAUSE 0x3 -#define DMC_COMMAND_CONFIGURE 0x4 -#define DMC_COMMAND_ACTIVEPAUSE 0x7 - -// Determines the command required -#define DMC_DIRECT_CMD_MEMCMD_PRECHARGEALL 0x0 -#define DMC_DIRECT_CMD_MEMCMD_AUTOREFRESH (0x1 << 18) -#define DMC_DIRECT_CMD_MEMCMD_MODEREG (0x2 << 18) -#define DMC_DIRECT_CMD_MEMCMD_EXTMODEREG (0x2 << 18) -#define DMC_DIRECT_CMD_MEMCMD_NOP (0x3 << 18) -#define DMC_DIRECT_CMD_MEMCMD_DPD (0x1 << 22) -#define DMC_DIRECT_CMD_BANKADDR(n) ((n & 0x3) << 16) -#define DMC_DIRECT_CMD_CHIP_ADDR(n) ((n & 0x3) << 20) - - -// -// AXI ID configuration register map -// -#define DMC_ID_0_CFG_REG 0x100 -#define DMC_ID_1_CFG_REG 0x104 -#define DMC_ID_2_CFG_REG 0x108 -#define DMC_ID_3_CFG_REG 0x10C -#define DMC_ID_4_CFG_REG 0x110 -#define DMC_ID_5_CFG_REG 0x114 -#define DMC_ID_6_CFG_REG 0x118 -#define DMC_ID_7_CFG_REG 0x11C -#define DMC_ID_8_CFG_REG 0x120 -#define DMC_ID_9_CFG_REG 0x124 -#define DMC_ID_10_CFG_REG 0x128 -#define DMC_ID_11_CFG_REG 0x12C -#define DMC_ID_12_CFG_REG 0x130 -#define DMC_ID_13_CFG_REG 0x134 -#define DMC_ID_14_CFG_REG 0x138 -#define DMC_ID_15_CFG_REG 0x13C - -// Set the QoS -#define DMC_ID_CFG_QOS_DISABLE 0 -#define DMC_ID_CFG_QOS_ENABLE 1 -#define DMC_ID_CFG_QOS_MIN 2 - - -// -// Chip configuration register map -// -#define DMC_CHIP_0_CFG_REG 0x200 -#define DMC_CHIP_1_CFG_REG 0x204 -#define DMC_CHIP_2_CFG_REG 0x208 -#define DMC_CHIP_3_CFG_REG 0x20C - -// -// User Defined Pins -// -#define DMC_USER_STATUS_REG 0x300 -#define DMC_USER_0_CFG_REG 0x304 -#define DMC_USER_1_CFG_REG 0x308 -#define DMC_FEATURE_CRTL_REG 0x30C -#define DMC_USER_2_CFG_REG 0x310 - - -// -// PHY Register Settings -// -#define PHY_PTM_DFI_CLK_RANGE 0xE00 // DDR2 PHY PTM register offset -#define PHY_PTM_IOTERM 0xE04 -#define PHY_PTM_PLL_EN 0xe0c -#define PHY_PTM_PLL_RANGE 0xe18 -#define PHY_PTM_FEEBACK_DIV 0xe1c -#define PHY_PTM_RCLK_DIV 0xe20 -#define PHY_PTM_LOCK_STATUS 0xe28 -#define PHY_PTM_INIT_DONE 0xe34 -#define PHY_PTM_ADDCOM_IOSTR_OFF 0xec8 -#define PHY_PTM_SQU_TRAINING 0xee8 -#define PHY_PTM_SQU_STAT 0xeec - -// ============================================================================== -// PIPD 40G DDR2/DDR3 PHY Register definitions -// -// Offsets from APB Base Address -// ============================================================================== -#define PHY_BYTE0_OFFSET 0x000 -#define PHY_BYTE1_OFFSET 0x200 -#define PHY_BYTE2_OFFSET 0x400 -#define PHY_BYTE3_OFFSET 0x600 - -#define PHY_BYTE0_COARSE_SQADJ_INIT 0x064 ;// Coarse squelch adjust -#define PHY_BYTE1_COARSE_SQADJ_INIT 0x264 ;// Coarse squelch adjust -#define PHY_BYTE2_COARSE_SQADJ_INIT 0x464 ;// Coarse squelch adjust -#define PHY_BYTE3_COARSE_SQADJ_INIT 0x664 ;// Coarse squelch adjust - -#define PHY_BYTE0_IOSTR_OFFSET 0x004 -#define PHY_BYTE1_IOSTR_OFFSET 0x204 -#define PHY_BYTE2_IOSTR_OFFSET 0x404 -#define PHY_BYTE3_IOSTR_OFFSET 0x604 - - -;//-------------------------------------------------------------------------- - -// DFI Clock ranges: - -#define PHY_PTM_DFI_CLK_RANGE_200MHz 0x0 -#define PHY_PTM_DFI_CLK_RANGE_201_267MHz 0x1 -#define PHY_PTM_DFI_CLK_RANGE_268_333MHz 0x2 -#define PHY_PTM_DFI_CLK_RANGE_334_400MHz 0x3 -#define PHY_PTM_DFI_CLK_RANGE_401_533MHz 0x4 -#define PHY_PTM_DFI_CLK_RANGE_534_667MHz 0x5 -#define PHY_PTM_DFI_CLK_RANGE_668_800MHz 0x6 - - - -#define PHY_PTM_DFI_CLK_RANGE_VAL PHY_PTM_DFI_CLK_RANGE_334_400MHz - -//-------------------------------------------------------------------------- - - -// PLL Range - -#define PHY_PTM_PLL_RANGE_200_400MHz 0x0 // b0 = frequency >= 200 MHz and < 400 MHz -#define PHY_PTM_PLL_RANGE_400_800MHz 0x1 // b1 = frequency >= 400 MHz. -#define PHY_PTM_FEEBACK_DIV_200_400MHz 0x0 // b0 = frequency >= 200 MHz and < 400 MHz -#define PHY_PTM_FEEBACK_DIV_400_800MHz 0x1 // b1 = frequency >= 400 MHz. -#define PHY_PTM_REFCLK_DIV_200_400MHz 0x0 -#define PHY_PTM_REFCLK_DIV_400_800MHz 0x1 - -#define TC_UIOLHNC_MASK 0x000003C0 -#define TC_UIOLHNC_SHIFT 0x6 -#define TC_UIOLHPC_MASK 0x0000003F -#define TC_UIOLHPC_SHIFT 0x2 -#define TC_UIOHOCT_MASK 0x2 -#define TC_UIOHOCT_SHIFT 0x1 -#define TC_UIOHSTOP_SHIFT 0x0 -#define TC_UIOLHXC_VALUE 0x4 - -#define PHY_PTM_SQU_TRAINING_ENABLE 0x1 -#define PHY_PTM_SQU_TRAINING_DISABLE 0x0 - - -//-------------------------------------- -// JEDEC DDR2 Device Register definitions and settings -//-------------------------------------- -#define DDR_MODESET_SHFT 14 -#define DDR_MODESET_MR 0x0 ;// Mode register -#define DDR_MODESET_EMR 0x1 ;// Extended Mode register -#define DDR_MODESET_EMR2 0x2 -#define DDR_MODESET_EMR3 0x3 - -// -// Extended Mode Register settings -// -#define DDR_EMR_OCD_MASK 0x0000380 -#define DDR_EMR_OCD_SHIFT 0x7 -#define DDR_EMR_RTT_MASK 0x00000044 // DDR2 Device RTT (ODT) settings -#define DDR_EMR_RTT_SHIFT 0x2 -#define DDR_EMR_ODS_MASK 0x00000002 // DDR2 Output Drive Strength -#define DDR_EMR_ODS_SHIFT 0x0001 - -// Termination Values: -#define DDR_EMR_RTT_50R 0x00000044 // DDR2 50 Ohm termination -#define DDR_EMR_RTT_75R 0x00000004 // DDR2 75 Ohm termination -#define DDR_EMR_RTT_150 0x00000040 // DDR2 150 Ohm termination - -// Output Drive Strength Values: -#define DDR_EMR_ODS_FULL 0x0 // DDR2 Full Drive Strength -#define DDR_EMR_ODS_HALF 0x1 // DDR2 Half Drive Strength - -// OCD values -#define DDR_EMR_OCD_DEFAULT 0x7 -#define DDR_EMR_OCD_NS 0x0 - -#define DDR_EMR_ODS_VAL DDR_EMR_ODS_FULL - -#define DDR_SDRAM_START_ADDR 0x10000000 - - -// ---------------------------------------- -// PHY IOTERM values -// ---------------------------------------- -#define PHY_PTM_IOTERM_OFF 0x0 -#define PHY_PTM_IOTERM_150R 0x1 -#define PHY_PTM_IOTERM_75R 0x2 -#define PHY_PTM_IOTERM_50R 0x3 - -#define PHY_BYTE_IOSTR_60OHM 0x0 -#define PHY_BYTE_IOSTR_40OHM 0x1 -#define PHY_BYTE_IOSTR_30OHM 0x2 -#define PHY_BYTE_IOSTR_30AOHM 0x3 - -#define DDR2_MR_BURST_LENGTH_4 (2) -#define DDR2_MR_BURST_LENGTH_8 (3) -#define DDR2_MR_DLL_RESET (1 << 8) -#define DDR2_MR_CAS_LATENCY_4 (4 << 4) -#define DDR2_MR_CAS_LATENCY_5 (5 << 4) -#define DDR2_MR_CAS_LATENCY_6 (6 << 4) -#define DDR2_MR_WR_CYCLES_2 (1 << 9) -#define DDR2_MR_WR_CYCLES_3 (2 << 9) -#define DDR2_MR_WR_CYCLES_4 (3 << 9) -#define DDR2_MR_WR_CYCLES_5 (4 << 9) -#define DDR2_MR_WR_CYCLES_6 (5 << 9) - - -VOID -PL341DmcInit ( - IN UINTN DmcBase, - IN PL341_DMC_CONFIG* DmcConfig - ); - -VOID PL341DmcPhyInit ( - IN UINTN DmcPhyBase - ); - -VOID PL341DmcTrainPHY ( - IN UINTN DmcPhyBase - ); - -#endif /* _PL341DMC_H_ */ From patchwork Mon Dec 4 22:22:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120612 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434742edb; Mon, 4 Dec 2017 14:23:33 -0800 (PST) X-Google-Smtp-Source: AGs4zMaBfOCzkvbd05ypQa6htbqD6i1vP0eBL/Aphq1k+gYhUXoMJl37MUmepYdsqerfvkPPM9zm X-Received: by 10.84.133.15 with SMTP id 15mr15643082plf.367.1512426213400; Mon, 04 Dec 2017 14:23:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426213; cv=none; d=google.com; s=arc-20160816; b=W50rRQMIHsRzvtL2sZAhLgqSyJy0KTYD3jiQITkLVSnsTvpSSHtHrG9UyMlWCE4b+/ /iG2kffulJOeQS1dfjFXm7+XUVa4dyRz/8V4if5jw9dgg4p/pIWQ0vRAR3x6r97lB7+9 tX2N0MhAFA4ET/Xh8d7Y6hfN3BvH/WlM6Yk8wi4XCYUw6pKA+F3oKNe2PPWfopCxyHQs S+mzUe8Fps0wWOR8JOVZc43LfFr2+fTyaWfEOhp/08TKZ0YDnhtJ6PQ6KW2J2SBM+MN3 LDA/KqYNSc69/XdA2bKya+2C3sm201MB+3R1DsWxHIuY/vXnWWngakOku3QnTME63kNS tnJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=3La/2Qo6maYVG9cGD8paAXSnxF8Ej2q3TkOO5SlpKks=; b=WZ7ZDypcyh64fzmgSZB5zVHAJ90DVPgI+RM5DhzKfnG+KckX2L4/Qd+vY2ufVgbpGW DG1cBHB+Yjzgjh5jdtIWRRSmjP4pLhWBqZuwCzLoAE1LQNcHSf1/slvlURS9LyCtE0PN xV4RgUka93hgw7E0MGiyeJTnt1A/MLRZ24wC23BxpxZuYWsepTxDqtaA91Wo+igG9Myo oiGXaTvp9VDYAIURd4giuGPY72TOC3SADLAVxuDSkpUayS24W9lA3fwCuTBIeZKvGIj6 rO0eelr440VxSj4bN/VcMo2A6JuCkrYhE6u1VAHZYrjcm95EQrjPSNdbM0CRVHb5BbV6 rj8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=OUe/AUKA; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id n12si10060789pgr.71.2017.12.04.14.23.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:33 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=OUe/AUKA; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 2094820356247; Mon, 4 Dec 2017 14:18:51 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::241; helo=mail-wm0-x241.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A52ED20356241 for ; Mon, 4 Dec 2017 14:18:49 -0800 (PST) Received: by mail-wm0-x241.google.com with SMTP id b76so17137225wmg.1 for ; Mon, 04 Dec 2017 14:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=NpQFWCRe7WmBC4VkTcuq7Lv7ivhtkVMq/2AaOk8CRD8=; b=OUe/AUKAg98ugbhCgxfyYkAVgq5y3x8lCEMJHMTpHlgHFCx2KjpTXyVZMXSs4VtVv8 aC9EIZ23W6QwLwkqzqtBb1i2hEn6ST/C9iTvWy656rexmKgT9yyPz05EMLO1fXrjgXQc 0eOqWWBGFFTSKBjp/9OjPN1PodEtKoS3sA32U= 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; bh=NpQFWCRe7WmBC4VkTcuq7Lv7ivhtkVMq/2AaOk8CRD8=; b=mMQ3leOdChQph6AvvX+Qec/7lIs/MHkugSFAjU3s+8MfFWHJ+DosZNKltJo4Lyh4vu 0BO0mAM5lN3tlwkPbGvNCJ5x+MRZuKirlJG1i+597eeL/lBLTFPvNE+TDUAk/DKfzGGK 1vJAF0yRC64KzcFBOv1jUrXKdlBfV1RGby7ARa6AxbuK6x9+mRj6RB2/0r8ZdXCBg+53 UB0r41xP8qf7Wx5bMrtVbB7hZbRnrAjsCJQMeULLaOvVmu9tdp9F0sTenxK8+7OzJNMz ppgADhulDmD4+1si1nEh2y+WLx56T1b5nUuq38x6TZyuJ3oKCeyxCG0I0GyGkp/us16k iedQ== X-Gm-Message-State: AKGB3mKXtvAYF+qox31X/cnwaKUjdgUEQRhedW0nLcVY4+hSJUdSwVsl lVwllauSIyErQo9O38GcLMi8eET2iKw= X-Received: by 10.28.92.146 with SMTP id q140mr4665792wmb.41.1512426198195; Mon, 04 Dec 2017 14:23:18 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:17 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:41 +0000 Message-Id: <20171204222243.15950-12-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 11/13] ArmPlatformPkg: remove unused PL310 driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This driver is not used by any platforms so remove it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2Cache.c | 126 -------------------- ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf | 31 ----- ArmPlatformPkg/Include/Drivers/PL310L2Cache.h | 79 ------------ 3 files changed, 236 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2Cache.c b/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2Cache.c deleted file mode 100644 index 1a6ab33720e5..000000000000 --- a/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2Cache.c +++ /dev/null @@ -1,126 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include -#include -#include -#include - -#define L2x0WriteReg(reg,val) MmioWrite32(PcdGet32(PcdL2x0ControllerBase) + reg, val) -#define L2x0ReadReg(reg) MmioRead32(PcdGet32(PcdL2x0ControllerBase) + reg) - -// Initialize PL320 L2 Cache Controller -VOID -L2x0CacheInit ( - IN UINTN L2x0Base, - IN UINT32 L2x0TagLatencies, - IN UINT32 L2x0DataLatencies, - IN UINT32 L2x0AuxValue, - IN UINT32 L2x0AuxMask, - IN BOOLEAN CacheEnabled - ) -{ - UINT32 Data; - UINT32 Revision; - UINT32 Aux; - UINT32 PfCtl; - UINT32 PwrCtl; - - // Check if L2x0 is present and is an ARM implementation - Data = L2x0ReadReg(L2X0_CACHEID); - if ((Data >> 24) != L2X0_CACHEID_IMPLEMENTER_ARM) { - ASSERT(0); - return; - } - - // Check if L2x0 is PL310 - if (((Data >> 6) & 0xF) != L2X0_CACHEID_PARTNUM_PL310) { - ASSERT(0); - return; - } - - // RTL release - Revision = Data & 0x3F; - - // Check if L2x0 is already enabled then we disable it - Data = L2x0ReadReg(L2X0_CTRL); - if (Data & L2X0_CTRL_ENABLED) { - L2x0WriteReg(L2X0_CTRL, L2X0_CTRL_DISABLED); - } - - // - // Set up global configurations - // - - // Auxiliary register: Non-secure interrupt access Control + Event monitor bus enable + SBO - Aux = L2X0_AUXCTRL_NSAC | L2X0_AUXCTRL_EM | L2X0_AUXCTRL_SBO; - // Use AWCACHE attributes for WA - Aux |= L2x0_AUXCTRL_AW_AWCACHE; - // Use default Size - Data = L2x0ReadReg(L2X0_AUXCTRL); - Aux |= Data & L2X0_AUXCTRL_WAYSIZE_MASK; - // Use default associativity - Aux |= Data & L2X0_AUXCTRL_ASSOCIATIVITY; - // Enabled I & D Prefetch - Aux |= L2x0_AUXCTRL_IPREFETCH | L2x0_AUXCTRL_DPREFETCH; - - if (Revision >= 5) { - // Prefetch Offset Register - PfCtl = L2x0ReadReg(L2X0_PFCTRL); - // - Prefetch increment set to 0 - // - Prefetch dropping off - // - Double linefills off - L2x0WriteReg(L2X0_PFCTRL, PfCtl); - - // Power Control Register - L2X0_PWRCTRL - PwrCtl = L2x0ReadReg(L2X0_PWRCTRL); - // - Standby when idle off - // - Dynamic clock gating off - // - Nc,NC-shared dropping off - L2x0WriteReg(L2X0_PWRCTRL, PwrCtl); - } - - if (Revision >= 2) { - L2x0WriteReg(L230_TAG_LATENCY, L2x0TagLatencies); - L2x0WriteReg(L230_DATA_LATENCY, L2x0DataLatencies); - } else { - // PL310 old style latency is not supported yet - ASSERT(0); - } - - // Set the platform specific values - Aux = (Aux & L2x0AuxMask) | L2x0AuxValue; - - // Write Auxiliary value - L2x0WriteReg(L2X0_AUXCTRL, Aux); - - // - // Invalidate all entries in cache - // - L2x0WriteReg(L2X0_INVWAY, 0xffff); - // Poll cache maintenance register until invalidate operation is complete - while(L2x0ReadReg(L2X0_INVWAY) & 0xffff); - - // Write to the Lockdown D and Lockdown I Register 9 if required - // - Not required - - // Clear any residual raw interrupts - L2x0WriteReg(L2X0_INTCLEAR, 0x1FF); - - // Enable the cache - if (CacheEnabled) { - L2x0WriteReg(L2X0_CTRL, L2X0_CTRL_ENABLED); - } -} diff --git a/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf b/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf deleted file mode 100644 index 78f952a1d0c8..000000000000 --- a/ArmPlatformPkg/Drivers/PL310L2Cache/PL310L2CacheSec.inf +++ /dev/null @@ -1,31 +0,0 @@ -#/* @file -# Copyright (c) 2011, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = PL310L2Cache - FILE_GUID = 16ad4fe0-b5b1-11df-8cbf-0002a5d5c51b - MODULE_TYPE = SEC - VERSION_STRING = 1.0 - LIBRARY_CLASS = L2X0CacheLib - -[Sources] - PL310L2Cache.c - -[Packages] - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - MdePkg/MdePkg.dec - -[FixedPcd] - gArmTokenSpaceGuid.PcdL2x0ControllerBase diff --git a/ArmPlatformPkg/Include/Drivers/PL310L2Cache.h b/ArmPlatformPkg/Include/Drivers/PL310L2Cache.h deleted file mode 100644 index a61099806269..000000000000 --- a/ArmPlatformPkg/Include/Drivers/PL310L2Cache.h +++ /dev/null @@ -1,79 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef L2CACHELIB_H_ -#define L2CACHELIB_H_ - -#define L2X0_CACHEID 0x000 -#define L2X0_CTRL 0x100 -#define L2X0_AUXCTRL 0x104 -#define L230_TAG_LATENCY 0x108 -#define L230_DATA_LATENCY 0x10C -#define L2X0_INTCLEAR 0x220 -#define L2X0_CACHE_SYNC 0x730 -#define L2X0_INVWAY 0x77C -#define L2X0_CLEAN_WAY 0x7BC -#define L2X0_PFCTRL 0xF60 -#define L2X0_PWRCTRL 0xF80 - -#define L2X0_CACHEID_IMPLEMENTER_ARM 0x41 -#define L2X0_CACHEID_PARTNUM_PL310 0x03 - -#define L2X0_CTRL_ENABLED 0x1 -#define L2X0_CTRL_DISABLED 0x0 - -#define L2X0_AUXCTRL_EXCLUSIVE (1 << 12) -#define L2X0_AUXCTRL_ASSOCIATIVITY (1 << 16) -#define L2X0_AUXCTRL_WAYSIZE_MASK (3 << 17) -#define L2X0_AUXCTRL_WAYSIZE_16KB (1 << 17) -#define L2X0_AUXCTRL_WAYSIZE_32KB (2 << 17) -#define L2X0_AUXCTRL_WAYSIZE_64KB (3 << 17) -#define L2X0_AUXCTRL_WAYSIZE_128KB (4 << 17) -#define L2X0_AUXCTRL_WAYSIZE_256KB (5 << 17) -#define L2X0_AUXCTRL_WAYSIZE_512KB (6 << 17) -#define L2X0_AUXCTRL_EM (1 << 20) -#define L2X0_AUXCTRL_SHARED_OVERRIDE (1 << 22) -#define L2x0_AUXCTRL_AW_AWCACHE (0 << 23) -#define L2x0_AUXCTRL_AW_NOALLOC (1 << 23) -#define L2x0_AUXCTRL_AW_OVERRIDE (2 << 23) -#define L2X0_AUXCTRL_SBO (1 << 25) -#define L2X0_AUXCTRL_NSAC (1 << 27) -#define L2x0_AUXCTRL_DPREFETCH (1 << 28) -#define L2x0_AUXCTRL_IPREFETCH (1 << 29) -#define L2x0_AUXCTRL_EARLY_BRESP (1 << 30) - -#define L2x0_LATENCY_1_CYCLE 0 -#define L2x0_LATENCY_2_CYCLES 1 -#define L2x0_LATENCY_3_CYCLES 2 -#define L2x0_LATENCY_4_CYCLES 3 -#define L2x0_LATENCY_5_CYCLES 4 -#define L2x0_LATENCY_6_CYCLES 5 -#define L2x0_LATENCY_7_CYCLES 6 -#define L2x0_LATENCY_8_CYCLES 7 - -#define PL310_LATENCIES(Write,Read,Setup) (((Write) << 8) | ((Read) << 4) | (Setup)) -#define PL310_TAG_LATENCIES(Write,Read,Setup) PL310_LATENCIES(Write,Read,Setup) -#define PL310_DATA_LATENCIES(Write,Read,Setup) PL310_LATENCIES(Write,Read,Setup) - -VOID -L2x0CacheInit ( - IN UINTN L2x0Base, - IN UINT32 L2x0TagLatencies, - IN UINT32 L2x0DataLatencies, - IN UINT32 L2x0AuxValue, - IN UINT32 L2x0AuxMask, - IN BOOLEAN CacheEnabled - ); - -#endif /* L2CACHELIB_H_ */ From patchwork Mon Dec 4 22:22:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120613 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434768edb; Mon, 4 Dec 2017 14:23:36 -0800 (PST) X-Google-Smtp-Source: AGs4zMaFVoEqTheewwUVOHWNw3UL6PzNdwzStM1vqHhwN/BDkDng5wgQWnUv0HM3aGF1Xt2e82q6 X-Received: by 10.84.240.196 with SMTP id l4mr3724418plt.140.1512426216375; Mon, 04 Dec 2017 14:23:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426216; cv=none; d=google.com; s=arc-20160816; b=NE2igpPgMfD4nDVuWNZPeAtK6Aa8Xn88MbIx5/SwmeLkZc3giuhr7AmfmvMTIINU4G houu045wTybFQyDrUB9xz9Npaf5F7BHdtkXD60ECnZ4kCRzr/MjtxhYeoI8VHWxtPVjH qutGnQwLCINeZ2H8lS3trBkulRQkdfWtLX52k4c9ohHZQX50S5mpB3Sf6qSYfAXfXGYs nbela7U24n92Ly+Rjd22ntA9Hu5N0wK6kVsLX1sIThunm8xgWdf5OpVGk190kPw98j8/ O4UoaDN3FbqQggSAsKIgd4R5FgxmO2g9wUf51oRFjPjkYpzQciIuyI3SzeHcH2dcG3wW 4sng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=+PhiudVXnDPoN5r6DQFb+QxokFCW4unFJbC/Cj5fP/M=; b=EdTBLAAa/8LFQxWJwi/MEQU9vZWDqUKacPdTCddUQ26esyBmhRapDDx5MbVfpBRuN5 81Mvc5EDQ9R0/hUQCYgzkqdzw9vk6V4hJ7X+O2Ep4aZmixUfFDGXI5RlLyPJZkttBreX 9xFGx1UF3URH8KWnjJZhk4bXzW07erfanGt8NBSfMsY4LusYo11vPOzlxypc/zfZbCs3 M26Dicn9ZFOYo0SdeONGLz3uphvRZ62Sw3Mb9lM88DATLkjX+vsZsoApD/baQeIqzffN y4xhyLccWMcPI8MN11jKrVkTsqs/4eykvtGkcN0SN4HDdq+7vdeBy3b4PySa6h7o6fCz T+lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=aX8mjDI4; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [198.145.21.10]) by mx.google.com with ESMTPS id b8si9994271pgv.728.2017.12.04.14.23.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:36 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) client-ip=198.145.21.10; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=aX8mjDI4; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 198.145.21.10 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 5FD102035624F; Mon, 4 Dec 2017 14:18:52 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::244; helo=mail-wm0-x244.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 90A1020356241 for ; Mon, 4 Dec 2017 14:18:51 -0800 (PST) Received: by mail-wm0-x244.google.com with SMTP id l141so8627341wmg.1 for ; Mon, 04 Dec 2017 14:23:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lh62q1GJoX4dAAA+Cj33PlDM1oIZs7fZ7FNKJUVUm+k=; b=aX8mjDI4XHKFShb2hYjpta8d5ZhZtbJ53cpDvsvagEuuk5cTEJZl2hfHAN52FKMn4Z s6PgfkhJeeZKhyaG9c+NsGIQ2T1iQdDGJKyHWMmFegh6ACC+Q+8nrrK3CQq3+n7UEZiA gXJPa/uh6qtRMAbWno9Dx4pnvWxlEKmBKekvU= 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; bh=lh62q1GJoX4dAAA+Cj33PlDM1oIZs7fZ7FNKJUVUm+k=; b=gFkgfkgcmS5zFjc7JarZkehjHln4LT/eY6/1ktm/0XMH6yfdLI/7+WGRKvXwXf590+ a+6mHjNYySaAlft8p4nmFVfI0KNt+4x0PhdP79lsJfUH4SS3rgN8ANFHBWEuyYt7Zlf6 MVbKjpAB1TsqWllJnJ6B7LuJWE478ci8QeiIUXQdYkHR/JvIPoBbhFwxSSJBuSoJrG3A aGlh/I0p4lZDH33qQ4jY+cr3eZ9NyL18KFhJHZxBv813eDnyFSu+upzUvMkhz+dMGG97 ng4WiZbsP9B8uj3q5oEVQzAfdeHVsQbBdbqJ6FAbWXphgNxCnP8TIgNoKBoIBxjs4mqX CtfQ== X-Gm-Message-State: AKGB3mL2PTi6av8w/0RGAEld0MLXJ9UHdwGjW680bkV/uZdeLarseXeU OVVLNMovXChhF6ddJGvfS1S1pexr5/M= X-Received: by 10.28.0.6 with SMTP id 6mr8291839wma.109.1512426200147; Mon, 04 Dec 2017 14:23:20 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:19 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:42 +0000 Message-Id: <20171204222243.15950-13-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 12/13] ArmPlatformPkg: remove unused ArmTrustZone driver X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" This driver is no longer used anywhere so remove it. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c | 113 -------------------- ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf | 33 ------ ArmPlatformPkg/Include/Drivers/ArmTrustzone.h | 105 ------------------ 3 files changed, 251 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c b/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c deleted file mode 100644 index 1f002198e552..000000000000 --- a/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.c +++ /dev/null @@ -1,113 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#include -#include - -#include - -#define TZPC_DECPROT0_STATUS_REG 0x800 -#define TZPC_DECPROT0_SET_REG 0x804 -#define TZPC_DECPROT0_CLEAR_REG 0x808 - -#define TZASC_CONFIGURATION_REG 0x000 -#define TZASC_REGIONS_REG 0x100 -#define TZASC_REGION0_LOW_ADDRESS_REG 0x100 -#define TZASC_REGION0_HIGH_ADDRESS_REG 0x104 -#define TZASC_REGION0_ATTRIBUTES 0x108 - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZPCSetDecProtBits ( - IN UINTN TzpcBase, - IN UINTN TzpcId, - IN UINTN Bits - ) -{ - if (TzpcId > TZPC_DECPROT_MAX) { - return EFI_INVALID_PARAMETER; - } - - MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_SET_REG + (TzpcId * 0x0C), Bits); - - return EFI_SUCCESS; -} - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZPCClearDecProtBits ( - IN UINTN TzpcBase, - IN UINTN TzpcId, - IN UINTN Bits - ) -{ - if (TzpcId> TZPC_DECPROT_MAX) { - return EFI_INVALID_PARAMETER; - } - - MmioWrite32 ((UINTN)TzpcBase + TZPC_DECPROT0_CLEAR_REG + (TzpcId * 0x0C), Bits); - - return EFI_SUCCESS; -} - -/** - FIXME: Need documentation -**/ -UINT32 -TZASCGetNumRegions ( - IN UINTN TzascBase - ) -{ - return (MmioRead32 ((UINTN)TzascBase + TZASC_CONFIGURATION_REG) & 0xF); -} - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZASCSetRegion ( - IN INTN TzascBase, - IN UINTN RegionId, - IN UINTN Enabled, - IN UINTN LowAddress, - IN UINTN HighAddress, - IN UINTN Size, - IN UINTN Security, - IN UINTN SubregionDisableMask - ) -{ - UINT32* Region; - UINT32 RegionAttributes; - - if (RegionId > TZASCGetNumRegions(TzascBase)) { - return EFI_INVALID_PARAMETER; - } - - RegionAttributes = TZASC_REGION_ATTR_SECURITY(Security) | - TZASC_REGION_ATTR_SUBREG_DISABLE(SubregionDisableMask) | - TZASC_REGION_ATTR_SIZE(Size) | - TZASC_REGION_ATTR_ENABLE(Enabled); - - Region = (UINT32*)((UINTN)TzascBase + TZASC_REGIONS_REG + (RegionId * 0x10)); - - MmioWrite32((UINTN)(Region), TZASC_REGION_SETUP_LO_ADDR(LowAddress)); - MmioWrite32((UINTN)(Region+1), HighAddress); - MmioWrite32((UINTN)(Region+2), RegionAttributes); - - return EFI_SUCCESS; -} diff --git a/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf b/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf deleted file mode 100644 index 6f90589a5b90..000000000000 --- a/ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf +++ /dev/null @@ -1,33 +0,0 @@ -#/* @file -# Copyright (c) 2011-2012, ARM Limited. All rights reserved. -# -# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#*/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmTrustZoneLib - FILE_GUID = 5962d040-8b8a-11df-9a71-0002a5d5c51b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = ArmTrustZoneLib - - -[Sources.common] - ArmTrustZone.c - -[Packages] - MdePkg/MdePkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - BaseLib - IoLib diff --git a/ArmPlatformPkg/Include/Drivers/ArmTrustzone.h b/ArmPlatformPkg/Include/Drivers/ArmTrustzone.h deleted file mode 100644 index 827b5cd568c1..000000000000 --- a/ArmPlatformPkg/Include/Drivers/ArmTrustzone.h +++ /dev/null @@ -1,105 +0,0 @@ -/** @file -* -* Copyright (c) 2011-2012, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - -#ifndef __ARM_TRUSTZONE_H__ -#define __ARM_TRUSTZONE_H__ - -#include - -// Setup TZ Protection Controller -#define TZPC_DECPROT_0 0 -#define TZPC_DECPROT_1 1 -#define TZPC_DECPROT_2 2 -#define TZPC_DECPROT_MAX 2 - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZPCSetDecProtBits ( - IN UINTN TzpcBase, - IN UINTN TzpcId, - IN UINTN Bits - ); - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZPCClearDecProtBits ( - IN UINTN TzpcBase, - IN UINTN TzpcId, - IN UINTN Bits - ); - -// Setup TZ Address Space Controller -#define TZASC_REGION_ENABLED 1 -#define TZASC_REGION_DISABLED 0 -#define TZASC_REGION_SIZE_32KB 0xE -#define TZASC_REGION_SIZE_64KB 0xF -#define TZASC_REGION_SIZE_128KB 0x10 -#define TZASC_REGION_SIZE_256KB 0x11 -#define TZASC_REGION_SIZE_512KB 0x12 -#define TZASC_REGION_SIZE_1MB 0x13 -#define TZASC_REGION_SIZE_2MB 0x14 -#define TZASC_REGION_SIZE_4MB 0x15 -#define TZASC_REGION_SIZE_8MB 0x16 -#define TZASC_REGION_SIZE_16MB 0x17 -#define TZASC_REGION_SIZE_32MB 0x18 -#define TZASC_REGION_SIZE_64MB 0x19 -#define TZASC_REGION_SIZE_128MB 0x1A -#define TZASC_REGION_SIZE_256MB 0x1B -#define TZASC_REGION_SIZE_512MB 0x1C -#define TZASC_REGION_SIZE_1GB 0x1D -#define TZASC_REGION_SIZE_2GB 0x1E -#define TZASC_REGION_SIZE_4GB 0x1F -#define TZASC_REGION_SECURITY_SR (1 << 3) -#define TZASC_REGION_SECURITY_SW (1 << 2) -#define TZASC_REGION_SECURITY_SRW (TZASC_REGION_SECURITY_SR|TZASC_REGION_SECURITY_SW) -#define TZASC_REGION_SECURITY_NSR (1 << 1) -#define TZASC_REGION_SECURITY_NSW 1 -#define TZASC_REGION_SECURITY_NSRW (TZASC_REGION_SECURITY_NSR|TZASC_REGION_SECURITY_NSW) - -/* Some useful masks */ -#define TZASC_REGION_SETUP_LO_ADDR_MASK 0xFFFF8000 - -#define TZASC_REGION_ATTR_SECURITY_MASK 0xF -#define TZASC_REGION_ATTR_SUBREG_DIS_MASK 0xFF -#define TZASC_REGION_ATTR_SIZE_MASK 0x3F -#define TZASC_REGION_ATTR_EN_MASK 0x1 - -#define TZASC_REGION_SETUP_LO_ADDR(x) ((x) & TZASC_REGION_SETUP_LO_ADDR_MASK) - -#define TZASC_REGION_ATTR_SECURITY(x) (((x) & TZASC_REGION_ATTR_SECURITY_MASK) << 28) -#define TZASC_REGION_ATTR_SUBREG_DISABLE(x) \ - (((x) & TZASC_REGION_ATTR_SUBREG_DIS_MASK) << 8) -#define TZASC_REGION_ATTR_SIZE(x) (((x) & TZASC_REGION_ATTR_SIZE_MASK) << 1) -#define TZASC_REGION_ATTR_ENABLE(x) ((x) & TZASC_REGION_ATTR_EN_MASK) - -/** - FIXME: Need documentation -**/ -EFI_STATUS -TZASCSetRegion ( - IN INTN TzascBase, - IN UINTN RegionId, - IN UINTN Enabled, - IN UINTN LowAddress, - IN UINTN HighAddress, - IN UINTN Size, - IN UINTN Security, - IN UINTN SubregionDisableMask - ); - -#endif From patchwork Mon Dec 4 22:22:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 120614 Delivered-To: patch@linaro.org Received: by 10.80.152.193 with SMTP id j59csp1434793edb; Mon, 4 Dec 2017 14:23:39 -0800 (PST) X-Google-Smtp-Source: AGs4zMbwVUtMzjDbcoQxqk0GIVzDytw/qLmINEUHO8J4ewTER/7bbL8QbVJgqsXI3lsI+41TqMky X-Received: by 10.84.138.193 with SMTP id 59mr16235567plp.446.1512426219189; Mon, 04 Dec 2017 14:23:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512426219; cv=none; d=google.com; s=arc-20160816; b=xMkxEHmyZ/Z8IgJ/0usplClTqCfJNSQh7VWlqNcsEFOK3XH7gwTw4KkcSO0cMIe1lu 9Ntf3cmTqyvItVJNk8eU20MGip9x8oXEUsNMvP4AfwvMugg8VgvYynCljW+LlawenHEE IAHgMPAQ17dZUM/TtB3qDaHjhxaiSyz6J96FepLbH2ppHWHw0CCviDvOvMOB3IejNjvu sKKoggs6pP5kMrc+zQsVx0XgNKCXS0f8+I0iBdjqQV740h/hjhJl91ngEo0yGQ/V0iX7 D6Lq3JAaJfBG3usggkWe/WZ7Ath+IZIY1HsQgKGfg3FeMwF+Byq6XF3g/fMfn58EkUh5 nZMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=mDf0PNILiPfM90yVdj9bQ16WP8Mi0z6/Lximiwfkytw=; b=iz/Diy130DkFwWVxOYaTqrGuAhL8fU0zQFMo2ufTse3U6fqpsvQvuZXoRjaZBzF+3o PDUEUUFmleDNvpRjkpN+Zd8RU8KemomNBqPBYLDiAAwdeYb72Q6+HkbIn/4Hi3ANplEe VZBeN5LQlxRcFimvD1QW0Y8EryLGrDkX0BmvV3jsVMvvUkrURKAZNmIP+QScSAFiAGbH 7vq3EvCCgQA0sGyHFwINYdbMqa1eOPc+BCHuflMycZIuUdTdRS5ajXbz6nkRsFJbS2B1 MRIFgfPhbS/cSqj6gcd/sIl4qF6/W1ujPRMQPJtENRzeErMbgRfvblMRvwHN/ZBaYEka Lu7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=MqPO85xQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id p11si10949380pfh.334.2017.12.04.14.23.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:39 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b=MqPO85xQ; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id A33A12035624E; Mon, 4 Dec 2017 14:18:55 -0800 (PST) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c09::231; helo=mail-wm0-x231.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wm0-x231.google.com (mail-wm0-x231.google.com [IPv6:2a00:1450:400c:c09::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 94AE720356241 for ; Mon, 4 Dec 2017 14:18:54 -0800 (PST) Received: by mail-wm0-x231.google.com with SMTP id l141so8627510wmg.1 for ; Mon, 04 Dec 2017 14:23:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5P6U2JNpIb+e/VXLv0+IZeO0uaiTqdf5tOtqGjHwxCU=; b=MqPO85xQdwoero6gUNWt7B0aBI4vfpW7TQt1kk2Sc+701X2764AVCSJKZCrAfzRHky mHWVjvbnGKRNlUzJqD0atkP1olG2NcN8xGwlfdm8lLKFC7d5apgNvIE1P+E3RttxV9Bl 1PY207tl190M6aK4EfZ6uDOtv0+GVEXawB0Pg= 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; bh=5P6U2JNpIb+e/VXLv0+IZeO0uaiTqdf5tOtqGjHwxCU=; b=FBA3sL9mR63z2B7DCjkHhkEyrRL21c08/tU3dxm2USuAORr/qG9YBjYN6tAOqTidQJ lkVTGDONdiXrWr++naBxbG/oMM24B2hZe9CEfO9GU5HLAV/fGtzc+ICdMCTH0wSon9G2 V8iZCV3gSl3hnQu8PMlWa0Q/p6hgop9dLNvAAHaGusozKK+blLUiIV7n41QHXQeSXfZA lqFGcBxw9OSVqeccsVrtb/yYh20lFkWmdKU5QRQ9ZSW0tRcPGMI30AL3ycYhPD624mFl EtvMCLEyxnVidH03xFsYUkSt0frkIUU9D/wAWI1DUrlpURc4ykO1sDwcoMl0BSjJ92+G pNaA== X-Gm-Message-State: AKGB3mJoACgcvW1+ldV3ncEiYnIJlvTfVa17nWT43BK0Je/ZesfvJoKl 3y/Mt6NUpCR5R8XePo7QoFD8idQ7zaQ= X-Received: by 10.28.173.213 with SMTP id w204mr4459048wme.126.1512426202466; Mon, 04 Dec 2017 14:23:22 -0800 (PST) Received: from localhost.localdomain ([105.150.171.234]) by smtp.gmail.com with ESMTPSA id x133sm5667961wmd.44.2017.12.04.14.23.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 04 Dec 2017 14:23:21 -0800 (PST) From: Ard Biesheuvel To: edk2-devel@lists.01.org Date: Mon, 4 Dec 2017 22:22:43 +0000 Message-Id: <20171204222243.15950-14-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171204222243.15950-1-ard.biesheuvel@linaro.org> References: <20171204222243.15950-1-ard.biesheuvel@linaro.org> Subject: [edk2] [PATCH v2 13/13] ArmPlatformPkg: remove unused SP804 driver and TimerLib implementation X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: leif.lindholm@linaro.org, Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" None of the platforms we support use these so remove them. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel Reviewed-by-if-no-comments-by-15-Dec: Leif Lindholm --- ArmPlatformPkg/ArmPlatformPkg.dec | 7 - ArmPlatformPkg/Drivers/SP804TimerDxe/SP804Timer.c | 395 -------------------- ArmPlatformPkg/Drivers/SP804TimerDxe/SP804TimerDxe.inf | 59 --- ArmPlatformPkg/Include/Drivers/SP804Timer.h | 57 --- ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.c | 256 ------------- ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf | 44 --- 6 files changed, 818 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel diff --git a/ArmPlatformPkg/ArmPlatformPkg.dec b/ArmPlatformPkg/ArmPlatformPkg.dec index d42404e8cd38..6a7bbc02d011 100644 --- a/ArmPlatformPkg/ArmPlatformPkg.dec +++ b/ArmPlatformPkg/ArmPlatformPkg.dec @@ -86,13 +86,6 @@ [PcdsFixedAtBuild.common] # ARM Primecells # - ## SP804 DualTimer - gArmPlatformTokenSpaceGuid.PcdSP804TimerFrequencyInMHz|1|UINT32|0x0000001D - gArmPlatformTokenSpaceGuid.PcdSP804TimerPeriodicInterruptNum|0|UINT32|0x0000001E - gArmPlatformTokenSpaceGuid.PcdSP804TimerPeriodicBase|0|UINT32|0x0000002A - gArmPlatformTokenSpaceGuid.PcdSP804TimerPerformanceBase|0|UINT32|0x0000002B - gArmPlatformTokenSpaceGuid.PcdSP804TimerMetronomeBase|0|UINT32|0x0000002C - ## SP805 Watchdog gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase|0x0|UINT32|0x00000023 gArmPlatformTokenSpaceGuid.PcdSP805WatchdogClockFrequencyInHz|32000|UINT32|0x00000021 diff --git a/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804Timer.c b/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804Timer.c deleted file mode 100644 index 7ae25e9bb92a..000000000000 --- a/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804Timer.c +++ /dev/null @@ -1,395 +0,0 @@ -/** @file - Template for Timer Architecture Protocol driver of the ARM flavor - - Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
- Copyright (c) 2011 - 2012, ARM Ltd. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#define SP804_TIMER_PERIODIC_BASE ((UINTN)PcdGet32 (PcdSP804TimerPeriodicBase)) -#define SP804_TIMER_METRONOME_BASE ((UINTN)PcdGet32 (PcdSP804TimerMetronomeBase)) -#define SP804_TIMER_PERFORMANCE_BASE ((UINTN)PcdGet32 (PcdSP804TimerPerformanceBase)) - -// The notification function to call on every timer interrupt. -EFI_TIMER_NOTIFY mTimerNotifyFunction = (EFI_TIMER_NOTIFY)NULL; -EFI_EVENT EfiExitBootServicesEvent = (EFI_EVENT)NULL; - -// The current period of the timer interrupt -UINT64 mTimerPeriod = 0; - -// Cached copy of the Hardware Interrupt protocol instance -EFI_HARDWARE_INTERRUPT_PROTOCOL *gInterrupt = NULL; - -// Cached interrupt vector -UINTN gVector; - - -/** - - C Interrupt Handler called in the interrupt context when Source interrupt is active. - - - @param Source Source of the interrupt. Hardware routing off a specific platform defines - what source means. - - @param SystemContext Pointer to system register context. Mostly used by debuggers and will - update the system context after the return from the interrupt if - modified. Don't change these values unless you know what you are doing - -**/ -VOID -EFIAPI -TimerInterruptHandler ( - IN HARDWARE_INTERRUPT_SOURCE Source, - IN EFI_SYSTEM_CONTEXT SystemContext - ) -{ - EFI_TPL OriginalTPL; - - // - // DXE core uses this callback for the EFI timer tick. The DXE core uses locks - // that raise to TPL_HIGH and then restore back to current level. Thus we need - // to make sure TPL level is set to TPL_HIGH while we are handling the timer tick. - // - OriginalTPL = gBS->RaiseTPL (TPL_HIGH_LEVEL); - - // If the interrupt is shared then we must check if this interrupt source is the one associated to this Timer - if (MmioRead32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_MSK_INT_STS_REG) != 0) { - // Clear the periodic interrupt - MmioWrite32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_INT_CLR_REG, 0); - - // Signal end of interrupt early to help avoid losing subsequent ticks from long duration handlers - gInterrupt->EndOfInterrupt (gInterrupt, Source); - - if (mTimerNotifyFunction) { - mTimerNotifyFunction (mTimerPeriod); - } - } - - gBS->RestoreTPL (OriginalTPL); -} - -/** - This function registers the handler NotifyFunction so it is called every time - the timer interrupt fires. It also passes the amount of time since the last - handler call to the NotifyFunction. If NotifyFunction is NULL, then the - handler is unregistered. If the handler is registered, then EFI_SUCCESS is - returned. If the CPU does not support registering a timer interrupt handler, - then EFI_UNSUPPORTED is returned. If an attempt is made to register a handler - when a handler is already registered, then EFI_ALREADY_STARTED is returned. - If an attempt is made to unregister a handler when a handler is not registered, - then EFI_INVALID_PARAMETER is returned. If an error occurs attempting to - register the NotifyFunction with the timer interrupt, then EFI_DEVICE_ERROR - is returned. - - @param This The EFI_TIMER_ARCH_PROTOCOL instance. - @param NotifyFunction The function to call when a timer interrupt fires. This - function executes at TPL_HIGH_LEVEL. The DXE Core will - register a handler for the timer interrupt, so it can know - how much time has passed. This information is used to - signal timer based events. NULL will unregister the handler. - @retval EFI_SUCCESS The timer handler was registered. - @retval EFI_UNSUPPORTED The platform does not support timer interrupts. - @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a handler is already - registered. - @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a handler was not - previously registered. - @retval EFI_DEVICE_ERROR The timer handler could not be registered. - -**/ -EFI_STATUS -EFIAPI -TimerDriverRegisterHandler ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - IN EFI_TIMER_NOTIFY NotifyFunction - ) -{ - if ((NotifyFunction == NULL) && (mTimerNotifyFunction == NULL)) { - return EFI_INVALID_PARAMETER; - } - - if ((NotifyFunction != NULL) && (mTimerNotifyFunction != NULL)) { - return EFI_ALREADY_STARTED; - } - - mTimerNotifyFunction = NotifyFunction; - - return EFI_SUCCESS; -} - -/** - Make sure all Dual Timers are disabled -**/ -VOID -EFIAPI -ExitBootServicesEvent ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - // Disable 'Periodic Operation' timer if enabled - if (MmioRead32(SP804_TIMER_PERIODIC_BASE + SP804_TIMER_CONTROL_REG) & SP804_TIMER_CTRL_ENABLE) { - MmioAnd32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_CONTROL_REG, 0); - } - - // Disable 'Metronome/Delay' timer if enabled - if (MmioRead32(SP804_TIMER_METRONOME_BASE + SP804_TIMER_CONTROL_REG) & SP804_TIMER_CTRL_ENABLE) { - MmioAnd32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CONTROL_REG, 0); - } - - // Disable 'Performance' timer if enabled - if (MmioRead32(SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CONTROL_REG) & SP804_TIMER_CTRL_ENABLE) { - MmioAnd32 (SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CONTROL_REG, 0); - } -} - -/** - - This function adjusts the period of timer interrupts to the value specified - by TimerPeriod. If the timer period is updated, then the selected timer - period is stored in EFI_TIMER.TimerPeriod, and EFI_SUCCESS is returned. If - the timer hardware is not programmable, then EFI_UNSUPPORTED is returned. - If an error occurs while attempting to update the timer period, then the - timer hardware will be put back in its state prior to this call, and - EFI_DEVICE_ERROR is returned. If TimerPeriod is 0, then the timer interrupt - is disabled. This is not the same as disabling the CPU's interrupts. - Instead, it must either turn off the timer hardware, or it must adjust the - interrupt controller so that a CPU interrupt is not generated when the timer - interrupt fires. - - @param This The EFI_TIMER_ARCH_PROTOCOL instance. - @param TimerPeriod The rate to program the timer interrupt in 100 nS units. If - the timer hardware is not programmable, then EFI_UNSUPPORTED is - returned. If the timer is programmable, then the timer period - will be rounded up to the nearest timer period that is supported - by the timer hardware. If TimerPeriod is set to 0, then the - timer interrupts will be disabled. - - - @retval EFI_SUCCESS The timer period was changed. - @retval EFI_UNSUPPORTED The platform cannot change the period of the timer interrupt. - @retval EFI_DEVICE_ERROR The timer period could not be changed due to a device error. - -**/ -EFI_STATUS -EFIAPI -TimerDriverSetTimerPeriod ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - IN UINT64 TimerPeriod - ) -{ - EFI_STATUS Status; - UINT64 TimerTicks; - - // always disable the timer - MmioAnd32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_CONTROL_REG, ~SP804_TIMER_CTRL_ENABLE); - - if (TimerPeriod == 0) { - // Leave timer disabled from above, and... - - // Disable timer 0/1 interrupt for a TimerPeriod of 0 - Status = gInterrupt->DisableInterruptSource (gInterrupt, gVector); - } else { - // Convert TimerPeriod into 1MHz clock counts (us units = 100ns units * 10) - TimerTicks = DivU64x32 (TimerPeriod, 10); - TimerTicks = MultU64x32 (TimerTicks, PcdGet32(PcdSP804TimerFrequencyInMHz)); - - // if it's larger than 32-bits, pin to highest value - if (TimerTicks > 0xffffffff) { - TimerTicks = 0xffffffff; - } - - // Program the SP804 timer with the new count value - MmioWrite32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_LOAD_REG, TimerTicks); - - // enable the timer - MmioOr32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_ENABLE); - - // enable timer 0/1 interrupts - Status = gInterrupt->EnableInterruptSource (gInterrupt, gVector); - } - - // Save the new timer period - mTimerPeriod = TimerPeriod; - return Status; -} - -/** - This function retrieves the period of timer interrupts in 100 ns units, - returns that value in TimerPeriod, and returns EFI_SUCCESS. If TimerPeriod - is NULL, then EFI_INVALID_PARAMETER is returned. If a TimerPeriod of 0 is - returned, then the timer is currently disabled. - - @param This The EFI_TIMER_ARCH_PROTOCOL instance. - @param TimerPeriod A pointer to the timer period to retrieve in 100 ns units. If - 0 is returned, then the timer is currently disabled. - - - @retval EFI_SUCCESS The timer period was returned in TimerPeriod. - @retval EFI_INVALID_PARAMETER TimerPeriod is NULL. - -**/ -EFI_STATUS -EFIAPI -TimerDriverGetTimerPeriod ( - IN EFI_TIMER_ARCH_PROTOCOL *This, - OUT UINT64 *TimerPeriod - ) -{ - if (TimerPeriod == NULL) { - return EFI_INVALID_PARAMETER; - } - - *TimerPeriod = mTimerPeriod; - return EFI_SUCCESS; -} - -/** - This function generates a soft timer interrupt. If the platform does not support soft - timer interrupts, then EFI_UNSUPPORTED is returned. Otherwise, EFI_SUCCESS is returned. - If a handler has been registered through the EFI_TIMER_ARCH_PROTOCOL.RegisterHandler() - service, then a soft timer interrupt will be generated. If the timer interrupt is - enabled when this service is called, then the registered handler will be invoked. The - registered handler should not be able to distinguish a hardware-generated timer - interrupt from a software-generated timer interrupt. - - @param This The EFI_TIMER_ARCH_PROTOCOL instance. - - @retval EFI_SUCCESS The soft timer interrupt was generated. - @retval EFI_UNSUPPORTED The platform does not support the generation of soft timer interrupts. - -**/ -EFI_STATUS -EFIAPI -TimerDriverGenerateSoftInterrupt ( - IN EFI_TIMER_ARCH_PROTOCOL *This - ) -{ - return EFI_UNSUPPORTED; -} - -/** - Interface structure for the Timer Architectural Protocol. - - @par Protocol Description: - This protocol provides the services to initialize a periodic timer - interrupt, and to register a handler that is called each time the timer - interrupt fires. It may also provide a service to adjust the rate of the - periodic timer interrupt. When a timer interrupt occurs, the handler is - passed the amount of time that has passed since the previous timer - interrupt. - - @param RegisterHandler - Registers a handler that will be called each time the - timer interrupt fires. TimerPeriod defines the minimum - time between timer interrupts, so TimerPeriod will also - be the minimum time between calls to the registered - handler. - - @param SetTimerPeriod - Sets the period of the timer interrupt in 100 nS units. - This function is optional, and may return EFI_UNSUPPORTED. - If this function is supported, then the timer period will - be rounded up to the nearest supported timer period. - - - @param GetTimerPeriod - Retrieves the period of the timer interrupt in 100 nS units. - - @param GenerateSoftInterrupt - Generates a soft timer interrupt that simulates the firing of - the timer interrupt. This service can be used to invoke the registered handler if the timer interrupt has been masked for - a period of time. - -**/ -EFI_TIMER_ARCH_PROTOCOL gTimer = { - TimerDriverRegisterHandler, - TimerDriverSetTimerPeriod, - TimerDriverGetTimerPeriod, - TimerDriverGenerateSoftInterrupt -}; - - -/** - Initialize the state information for the Timer Architectural Protocol and - the Timer Debug support protocol that allows the debugger to break into a - running program. - - @param ImageHandle of the loaded driver - @param SystemTable Pointer to the System Table - - @retval EFI_SUCCESS Protocol registered - @retval EFI_OUT_OF_RESOURCES Cannot allocate protocol data structure - @retval EFI_DEVICE_ERROR Hardware problems - -**/ -EFI_STATUS -EFIAPI -TimerInitialize ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_HANDLE Handle = NULL; - EFI_STATUS Status; - - // Set the interrupt timer number - gVector = PcdGet32(PcdSP804TimerPeriodicInterruptNum); - - // Find the interrupt controller protocol. ASSERT if not found. - Status = gBS->LocateProtocol (&gHardwareInterruptProtocolGuid, NULL, (VOID **)&gInterrupt); - ASSERT_EFI_ERROR (Status); - - // Disable the timer - Status = TimerDriverSetTimerPeriod (&gTimer, 0); - ASSERT_EFI_ERROR (Status); - - // Install interrupt handler - Status = gInterrupt->RegisterInterruptSource (gInterrupt, gVector, TimerInterruptHandler); - ASSERT_EFI_ERROR (Status); - - // configure timer 0 for periodic operation, 32 bits, no prescaler, and interrupt enabled - MmioWrite32 (SP804_TIMER_PERIODIC_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_PERIODIC | SP804_TIMER_CTRL_32BIT | SP804_PRESCALE_DIV_1 | SP804_TIMER_CTRL_INT_ENABLE); - - // Set up default timer - Status = TimerDriverSetTimerPeriod (&gTimer, FixedPcdGet32(PcdTimerPeriod)); // TIMER_DEFAULT_PERIOD - ASSERT_EFI_ERROR (Status); - - // Install the Timer Architectural Protocol onto a new handle - Status = gBS->InstallMultipleProtocolInterfaces( - &Handle, - &gEfiTimerArchProtocolGuid, &gTimer, - NULL - ); - ASSERT_EFI_ERROR(Status); - - // Register for an ExitBootServicesEvent - Status = gBS->CreateEvent (EVT_SIGNAL_EXIT_BOOT_SERVICES, TPL_NOTIFY, ExitBootServicesEvent, NULL, &EfiExitBootServicesEvent); - ASSERT_EFI_ERROR (Status); - - return Status; -} diff --git a/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804TimerDxe.inf b/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804TimerDxe.inf deleted file mode 100644 index 386d9649efab..000000000000 --- a/ArmPlatformPkg/Drivers/SP804TimerDxe/SP804TimerDxe.inf +++ /dev/null @@ -1,59 +0,0 @@ -#/** @file -# -# Component description file for Timer module -# -# Copyright (c) 2009 - 2010, Apple Inc. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = ArmVeTimerDxe - FILE_GUID = a73d663d-a491-4278-9a69-9521be3379f2 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - - ENTRY_POINT = TimerInitialize - -[Sources.common] - SP804Timer.c - -[Packages] - MdePkg/MdePkg.dec - EmbeddedPkg/EmbeddedPkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - -[LibraryClasses] - BaseLib - UefiRuntimeServicesTableLib - UefiLib - UefiBootServicesTableLib - BaseMemoryLib - DebugLib - UefiDriverEntryPoint - IoLib - -[Guids] - -[Protocols] - gEfiTimerArchProtocolGuid - gHardwareInterruptProtocolGuid - -[Pcd.common] - gArmPlatformTokenSpaceGuid.PcdSP804TimerFrequencyInMHz - gArmPlatformTokenSpaceGuid.PcdSP804TimerPeriodicInterruptNum - gArmPlatformTokenSpaceGuid.PcdSP804TimerPeriodicBase - gArmPlatformTokenSpaceGuid.PcdSP804TimerPerformanceBase - gArmPlatformTokenSpaceGuid.PcdSP804TimerMetronomeBase - gEmbeddedTokenSpaceGuid.PcdTimerPeriod - -[Depex] - gHardwareInterruptProtocolGuid diff --git a/ArmPlatformPkg/Include/Drivers/SP804Timer.h b/ArmPlatformPkg/Include/Drivers/SP804Timer.h deleted file mode 100644 index 904b13c19325..000000000000 --- a/ArmPlatformPkg/Include/Drivers/SP804Timer.h +++ /dev/null @@ -1,57 +0,0 @@ -/** @file -* -* Copyright (c) 2011, ARM Limited. All rights reserved. -* -* This program and the accompanying materials -* are licensed and made available under the terms and conditions of the BSD License -* which accompanies this distribution. The full text of the license may be found at -* http://opensource.org/licenses/bsd-license.php -* -* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -* -**/ - - -#ifndef _SP804_TIMER_H__ -#define _SP804_TIMER_H__ - -// SP804 Timer constants -// Note: The SP804 Timer module comprises two timers, Timer_0 and Timer_1 -// These timers are identical and all their registers have an offset of 0x20 -// i.e. SP804_TIMER_0_LOAD_REG = 0x00 and SP804_TIMER_1_LOAD_REG = 0x20 -// Therefore, define all registers only once and adjust the base addresses by 0x20 -#define SP804_TIMER_LOAD_REG 0x00 -#define SP804_TIMER_CURRENT_REG 0x04 -#define SP804_TIMER_CONTROL_REG 0x08 -#define SP804_TIMER_INT_CLR_REG 0x0C -#define SP804_TIMER_RAW_INT_STS_REG 0x10 -#define SP804_TIMER_MSK_INT_STS_REG 0x14 -#define SP804_TIMER_BG_LOAD_REG 0x18 - -// Timer control register bit definitions -#define SP804_TIMER_CTRL_ONESHOT BIT0 -#define SP804_TIMER_CTRL_32BIT BIT1 -#define SP804_TIMER_CTRL_PRESCALE_MASK (BIT3|BIT2) -#define SP804_PRESCALE_DIV_1 0 -#define SP804_PRESCALE_DIV_16 BIT2 -#define SP804_PRESCALE_DIV_256 BIT3 -#define SP804_TIMER_CTRL_INT_ENABLE BIT5 -#define SP804_TIMER_CTRL_PERIODIC BIT6 -#define SP804_TIMER_CTRL_ENABLE BIT7 - -// Other SP804 Timer definitions -#define SP804_MAX_TICKS 0xFFFFFFFF - -// SP810 System Controller constants -#define SP810_SYS_CTRL_REG 0x00 -#define SP810_SYS_CTRL_TIMER0_TIMCLK BIT15 // 0=REFCLK, 1=TIMCLK -#define SP810_SYS_CTRL_TIMER0_EN BIT16 -#define SP810_SYS_CTRL_TIMER1_TIMCLK BIT17 // 0=REFCLK, 1=TIMCLK -#define SP810_SYS_CTRL_TIMER1_EN BIT18 -#define SP810_SYS_CTRL_TIMER2_TIMCLK BIT19 // 0=REFCLK, 1=TIMCLK -#define SP810_SYS_CTRL_TIMER2_EN BIT20 -#define SP810_SYS_CTRL_TIMER3_TIMCLK BIT21 // 0=REFCLK, 1=TIMCLK -#define SP810_SYS_CTRL_TIMER3_EN BIT22 - -#endif diff --git a/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.c b/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.c deleted file mode 100644 index 16798e9ba97f..000000000000 --- a/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.c +++ /dev/null @@ -1,256 +0,0 @@ -/** @file - - Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
- Copyright (c) 2011 - 2014, ARM Limited. All rights reserved. - - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include - -#include -#include -#include -#include -#include -#include - -#define SP804_TIMER_METRONOME_BASE ((UINTN)PcdGet32 (PcdSP804TimerMetronomeBase)) -#define SP804_TIMER_PERFORMANCE_BASE ((UINTN)PcdGet32 (PcdSP804TimerPerformanceBase)) - -// Setup SP810's Timer2 for managing delay functions. And Timer3 for Performance counter -// Note: ArmVE's Timer0 and Timer1 are used by TimerDxe. -RETURN_STATUS -EFIAPI -TimerConstructor ( - VOID - ) -{ - // Check if the Metronome Timer is already initialized - if ((MmioRead32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CONTROL_REG) & SP804_TIMER_CTRL_ENABLE) == 0) { - // Configure the Metronome Timer for free running operation, 32 bits, no prescaler, and interrupt disabled - MmioWrite32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_32BIT | SP804_PRESCALE_DIV_1); - - // Start the Metronome Timer ticking - MmioOr32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_ENABLE); - } - - // Check if the Performance Timer is already initialized - if ((MmioRead32 (SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CONTROL_REG) & SP804_TIMER_CTRL_ENABLE) == 0) { - // Configure the Performance timer for free running operation, 32 bits, no prescaler, interrupt disabled - MmioWrite32 (SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_32BIT | SP804_PRESCALE_DIV_1); - - // Start the Performance Timer ticking - MmioOr32 (SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CONTROL_REG, SP804_TIMER_CTRL_ENABLE); - } - - return RETURN_SUCCESS; -} - -/** - Stalls the CPU for at least the given number of microseconds. - - Stalls the CPU for the number of microseconds specified by MicroSeconds. - The hardware timer is 32 bits. - The maximum possible delay is (0xFFFFFFFF / TimerFrequencyMHz), i.e. ([32bits] / FreqInMHz) - For example: - +----------------+------------+----------+----------+ - | TimerFrequency | MaxDelay | MaxDelay | MaxDelay | - | (MHz) | (us) | (s) | (min) | - +----------------+------------+----------+----------+ - | 1 | 0xFFFFFFFF | 4294 | 71.5 | - | 5 | 0x33333333 | 859 | 14.3 | - | 10 | 0x19999999 | 429 | 7.2 | - | 50 | 0x051EB851 | 86 | 1.4 | - +----------------+------------+----------+----------+ - If it becomes necessary to support higher delays, then consider using the - real time clock. - - During this delay, the cpu is not yielded to any other process, with one exception: - events that are triggered off a timer and which execute at a higher TPL than - this function. These events may call MicroSecondDelay (or NanoSecondDelay) to - fulfil their own needs. - Therefore, this function must be re-entrant, as it may be interrupted and re-started. - - @param MicroSeconds The minimum number of microseconds to delay. - - @return The value of MicroSeconds inputted. - -**/ -UINTN -EFIAPI -MicroSecondDelay ( - IN UINTN MicroSeconds - ) -{ - UINT64 DelayTicks64; // Convert from microseconds to timer ticks, more bits to detect over-range conditions. - UINTN DelayTicks; // Convert from microseconds to timer ticks, native size for general calculations. - UINTN StartTicks; // Timer value snapshot at the start of the delay - UINTN TargetTicks; // Timer value to signal the end of the delay - UINTN CurrentTicks; // Current value of the 64-bit timer value at any given moment - - // If we snapshot the timer at the start of the delay function then we minimise unaccounted overheads. - StartTicks = MmioRead32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CURRENT_REG); - - // We are operating at the limit of 32bits. For the range checking work in 64 bits to avoid overflows. - DelayTicks64 = MultU64x32((UINT64)MicroSeconds, PcdGet32(PcdSP804TimerFrequencyInMHz)); - - // We are limited to 32 bits. - // If the specified delay is exactly equal to the max range of the timer, - // then the start will be equal to the stop plus one timer overflow (wrap-around). - // To avoid having to check for that, reduce the maximum acceptable range by 1 tick, - // i.e. reject delays equal or greater than the max range of the timer. - if (DelayTicks64 >= (UINT64)SP804_MAX_TICKS) { - DEBUG((EFI_D_ERROR,"MicroSecondDelay: ERROR: MicroSeconds=%d exceed SP804 count range. Max MicroSeconds=%d\n", - MicroSeconds, - ((UINTN)SP804_MAX_TICKS/PcdGet32(PcdSP804TimerFrequencyInMHz)))); - } - ASSERT(DelayTicks64 < (UINT64)SP804_MAX_TICKS); - - // From now on do calculations only in native bit size. - DelayTicks = (UINTN)DelayTicks64; - - // Calculate the target value of the timer. - - //Note: SP804 timer is counting down - if (StartTicks >= DelayTicks) { - // In this case we do not expect a wrap-around of the timer to occur. - // CurrentTicks must be less than StartTicks and higher than TargetTicks. - // If this is not the case, then the delay has been reached and may even have been exceeded if this - // function was suspended by a higher priority interrupt. - - TargetTicks = StartTicks - DelayTicks; - - do { - CurrentTicks = MmioRead32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CURRENT_REG); - } while ((CurrentTicks > TargetTicks) && (CurrentTicks <= StartTicks)); - - } else { - // In this case TargetTicks is larger than StartTicks. - // This means we expect a wrap-around of the timer to occur and we must wait for it. - // Before the wrap-around, CurrentTicks must be less than StartTicks and less than TargetTicks. - // After the wrap-around, CurrentTicks must be larger than StartTicks and larger than TargetTicks. - // If this is not the case, then the delay has been reached and may even have been exceeded if this - // function was suspended by a higher priority interrupt. - - // The order of operations is essential to avoid arithmetic overflow problems - TargetTicks = ((UINTN)SP804_MAX_TICKS - DelayTicks) + StartTicks; - - // First wait for the wrap-around to occur - do { - CurrentTicks = MmioRead32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CURRENT_REG); - } while (CurrentTicks <= StartTicks); - - // Then wait for the target - do { - CurrentTicks = MmioRead32 (SP804_TIMER_METRONOME_BASE + SP804_TIMER_CURRENT_REG); - } while (CurrentTicks > TargetTicks); - } - - return MicroSeconds; -} - -/** - Stalls the CPU for at least the given number of nanoseconds. - - Stalls the CPU for the number of nanoseconds specified by NanoSeconds. - - When the timer frequency is 1MHz, each tick corresponds to 1 microsecond. - Therefore, the nanosecond delay will be rounded up to the nearest 1 microsecond. - - @param NanoSeconds The minimum number of nanoseconds to delay. - - @return The value of NanoSeconds inputted. - -**/ -UINTN -EFIAPI -NanoSecondDelay ( - IN UINTN NanoSeconds - ) -{ - UINTN MicroSeconds; - - // Round up to 1us Tick Number - MicroSeconds = NanoSeconds / 1000; - MicroSeconds += ((NanoSeconds % 1000) == 0) ? 0 : 1; - - MicroSecondDelay (MicroSeconds); - - return NanoSeconds; -} - -/** - Retrieves the current value of a 64-bit free running performance counter. - - The counter can either count up by 1 or count down by 1. If the physical - performance counter counts by a larger increment, then the counter values - must be translated. The properties of the counter can be retrieved from - GetPerformanceCounterProperties(). - - @return The current value of the free running performance counter. - -**/ -UINT64 -EFIAPI -GetPerformanceCounter ( - VOID - ) -{ - // Free running 64-bit/32-bit counter is needed here. - // Don't think we need this to boot, just to do performance profile - UINT64 Value; - Value = MmioRead32 (SP804_TIMER_PERFORMANCE_BASE + SP804_TIMER_CURRENT_REG); - return Value; -} - - -/** - Retrieves the 64-bit frequency in Hz and the range of performance counter - values. - - If StartValue is not NULL, then the value that the performance counter starts - with immediately after is it rolls over is returned in StartValue. If - EndValue is not NULL, then the value that the performance counter end with - immediately before it rolls over is returned in EndValue. The 64-bit - frequency of the performance counter in Hz is always returned. If StartValue - is less than EndValue, then the performance counter counts up. If StartValue - is greater than EndValue, then the performance counter counts down. For - example, a 64-bit free running counter that counts up would have a StartValue - of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24-bit free running counter - that counts down would have a StartValue of 0xFFFFFF and an EndValue of 0. - - @param StartValue The value the performance counter starts with when it - rolls over. - @param EndValue The value that the performance counter ends with before - it rolls over. - - @return The frequency in Hz. - -**/ -UINT64 -EFIAPI -GetPerformanceCounterProperties ( - OUT UINT64 *StartValue, OPTIONAL - OUT UINT64 *EndValue OPTIONAL - ) -{ - if (StartValue != NULL) { - // Timer starts with the reload value - *StartValue = 0xFFFFFFFF; - } - - if (EndValue != NULL) { - // Timer counts down to 0x0 - *EndValue = (UINT64)0ULL; - } - - return PcdGet64 (PcdEmbeddedPerformanceCounterFrequencyInHz); -} diff --git a/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf b/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf deleted file mode 100644 index fb5cc189261e..000000000000 --- a/ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf +++ /dev/null @@ -1,44 +0,0 @@ -#/** @file -# Timer library implementation -# -# -# Copyright (c) 2011, ARM Ltd. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -# -#**/ - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = SP804TimerLib - FILE_GUID = 09cefa99-0d07-487f-a651-fb44f094b1c7 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = TimerLib - - CONSTRUCTOR = TimerConstructor - -[Sources.common] - SP804TimerLib.c - -[Packages] - MdePkg/MdePkg.dec - ArmPkg/ArmPkg.dec - ArmPlatformPkg/ArmPlatformPkg.dec - EmbeddedPkg/EmbeddedPkg.dec - -[LibraryClasses] - DebugLib - IoLib - BaseLib - -[Pcd] - gArmPlatformTokenSpaceGuid.PcdSP804TimerFrequencyInMHz - gArmPlatformTokenSpaceGuid.PcdSP804TimerPerformanceBase - gArmPlatformTokenSpaceGuid.PcdSP804TimerMetronomeBase - gEmbeddedTokenSpaceGuid.PcdEmbeddedPerformanceCounterFrequencyInHz