From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.33.83; helo=nam01-bn3-obe.outbound.protection.outlook.com; envelope-from=meenakshi.aggarwal@nxp.com; receiver=edk2-devel@lists.01.org Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0083.outbound.protection.outlook.com [104.47.33.83]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B04832034D825 for ; Tue, 7 Nov 2017 00:50:27 -0800 (PST) Received: from BN6PR03CA0095.namprd03.prod.outlook.com (10.164.122.161) by BN3PR03MB2354.namprd03.prod.outlook.com (10.166.74.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.218.6; Tue, 7 Nov 2017 08:54:25 +0000 Received: from BL2FFO11FD026.protection.gbl (2a01:111:f400:7c09::173) by BN6PR03CA0095.outlook.office365.com (2603:10b6:405:6f::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.197.13 via Frontend Transport; Tue, 7 Nov 2017 08:54:18 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD026.mail.protection.outlook.com (10.173.161.105) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.178.5 via Frontend Transport; Tue, 7 Nov 2017 08:54:18 +0000 Received: from uefi-OptiPlex-790.ap.freescale.net (uefi-OptiPlex-790.ap.freescale.net [10.232.132.78]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vA78s4DZ009319; Tue, 7 Nov 2017 01:54:15 -0700 From: Meenakshi Aggarwal To: , , , Date: Tue, 7 Nov 2017 20:12:08 +0530 Message-ID: <1510065736-9394-3-git-send-email-meenakshi.aggarwal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1510065736-9394-1-git-send-email-meenakshi.aggarwal@nxp.com> References: <1510065736-9394-1-git-send-email-meenakshi.aggarwal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131545184584761916; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7966004)(39380400002)(39860400002)(376002)(346002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(54906003)(2950100002)(498600001)(106466001)(105606002)(110136005)(47776003)(5003940100001)(4326008)(189998001)(316002)(16586007)(33646002)(5660300001)(86362001)(8676002)(50466002)(305945005)(81156014)(8656006)(2906002)(68736007)(6666003)(8936002)(81166006)(104016004)(356003)(16799955002)(15188155005)(97736004)(77096006)(50226002)(966005)(2201001)(53376002)(85426001)(76176999)(36756003)(50986999)(53936002)(48376002)(6306002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB2354; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD026; 1:yqCyXHqsdO0eKwquj77JBYFb0EdN0SnSslcPEQ6yU9/a00S69cEEsgiDF0apB1k39lfT/iPsNwcYoKRacHgQTnLmItg3O8gtCIuL7ie8mmJrwfARkGk2oJSO3x8w3IhC MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 144484b9-b8a4-4102-20db-08d525bd218b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603199); SRVR:BN3PR03MB2354; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2354; 3:i0bmn/I2yHxF29dqqm+bO+aFvLOwe4mqsBcBfVHxaTGsU4V+oY2CqJKnJ9OoqzfKCpvYGepVhq/Ss/QBolFbBSxC99Vmvjrihdb/EeotAabJJbVOhlsLrDUMX07Y08cmQjR3+E/n6OtIAfBrtYUyW5cBaLQSgVF1K4lfI6J+j5XNFqCifV0dYVaEvXO3y1t0Sb22CyT1lrJ6YUnUPCznww4QRjPfM5/2WQA9UMc6YkHUSWLtA/x4JKYomDZYr47wLKOmsdBlvBNkJAfUy4cGbHqrATHIJGXZh1gfs4ziKt7BUEgUfS9x8iZhRotOWhZ/JQEEnJzi3CdnRgeBCNDaPgWsQYjtQgTNXzY69yWLBpU=; 25:KVaZwK+zF8jIAc0Q14h3OVkzvV4niAsT7JnfJGhuDVXaj2QP3deIeUBLVgsZ67ICDO8YhvFLqWcrruggxaYlcuoL3ukmZ/Aboxb5q3y+iFpCSTAkAm61Nuzca0x8dZAcMfzVxqqW8wfX+xaBZj3RDXedwd9bA1eUOJsMp2BdA2eCFe2cNMz1i0l2HtAJ2AolWc6YkzH+xqMh/LioahlaM9SLcL5ZDiwSXBFq6Ut7lDTh1DF7xrz4WaOeMp5tIE+EOxXq/U9qRQCTO/DlDo/rxUMJbKgPWmVG93I0gtXGO1PUupvFOa54bGPHgelfQ0KjuWtjL4J+x5OQ+kckFQuXZA== X-MS-TrafficTypeDiagnostic: BN3PR03MB2354: X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2354; 31:ieB2OcF6fgTC7223hJNv/wxWV2oQ++dhNZDqYQsWTkU+cwNz44AgPV2NBHol5jSlKtpL5KByGH0Sg6Doiz9TfT4EpaTm3O03gtXUAPcKT21QUKzftEOv8Tqo8mWQFV+jHfsmMnQ+cb0plM5qd0oagaBjL8fIvKt6OrsvdtfbYtDSeG0PtdWttBcf1H1Situ3ktVUhtrEJDS4wAm5hke6slxNLpLP2Pf2lRrbrCkLYiw=; 4:JJXHsCnz+1qlXW8PXohqkKiLgma8B/vGYvUaTr+2qmbFW6pTHv4oq36pxZJ0uGdJ9US7uZ3o2bhwPpu29LF8J+lGh4GewHQ8ZAWO6yCXsYnaugHMBsCTwAE/wIlTX0/ZIgm7sD82XJI1L1JVn5/nUYTRx5+fXRWWm9D71FyVCvCBog+oH9mCA6r565FrGcBnPHn+NQEnlE+oVxmAGaP61QkRmyBpWJyh2RhnpWdxU/WvMhMvOsuI2LOWkUcj+zEkvB46ZcBkakYqqSpARvyMn5Ch+j0w3gYo8iPPnnH4LDyzI97Hle6i/ioOruAAjQ5t X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(5005006)(8121501046)(3002001)(100000703101)(100105400095)(3231021)(10201501046)(93006095)(93001095)(6055026)(2017110403001)(6096035)(20161123565025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123556025)(20161123561025)(20161123559100)(20161123563025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN3PR03MB2354; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN3PR03MB2354; X-Forefront-PRVS: 0484063412 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR03MB2354; 23:9m6+worVLpWYT/8SJFDvm4z/lHLfTdqWXdeuV6U90?= =?us-ascii?Q?ShvM9EosZ2t+fpromLrb9cISoPQYdl0m7z6YQmrNGf4AQewza4+Qq7cmioLS?= =?us-ascii?Q?hGPvnVc8IVXsvq4SP7sIS81zBlbewE01hqoksV4SbgUSxVYnayLOmC4OhVOy?= =?us-ascii?Q?n8xsHh0xJvQ9rhegtRkTcnKGu0eNoaq5cGKt5OxZCk6ZhTViX0lEX575sbtM?= =?us-ascii?Q?8E8KFNTcYnv4ILtfgSolP8+jPrar+juhjiLB3BE42tpBAJR77uvMoZlT8jMx?= =?us-ascii?Q?yOLm3eUx3RBGElaX/Nl2zGUX9Oyo4Uk0ywtZQeEMLjukYQs9GcchNeiSJ4rS?= =?us-ascii?Q?5DNuRe2emJTqLAPiQodx+yAZ73bLW/ZjNuW/B3pr2hL9OX8X4EOyV9F4e/BI?= =?us-ascii?Q?cIqoADyHk7HiBVgYOcvQbn6j8iK/50PfLyZE3DC80nuX8WYJS7gcwGLntdwD?= =?us-ascii?Q?3dVYc15Q3rVz23szOfBr+HdVMqCl/h32SrHykn8+GoGoYcPGS0YR8jA0tNti?= =?us-ascii?Q?0OAyfyWPqZi6zWibKgO0CSGBk6qWxriyPATQYpynwncEz2suNvSq/g0KV+ro?= =?us-ascii?Q?eFTPxX5D6sJItUUSsfm1mKCzw3lWCMLSMX9Eym55UkIC7Ned3UU3KyNA4+Ck?= =?us-ascii?Q?NsH5nOAdl8LxUUr7UQkNmhYAgg7oxrMSD+GRZpeALN4xLWsM+xvwEd9StlEW?= =?us-ascii?Q?ESETrrctKHNuKqot+efDxDnAr07/jJic4EF/QrgMQ/D/tRlfQNeIoi9mkdR5?= =?us-ascii?Q?iz1ZwjhLPadvseXnbp8xu+WIOVnRTIRDLxkEVcc5PnpEYmKxMU+UCeWISwLP?= =?us-ascii?Q?V/zTfHxBruMXuzaRI+O1yh/nOIPgyG6aaNwwheFWzW2dVX8pkBeirdCylw10?= =?us-ascii?Q?JBjHWL8BV5367/enSZKhRjg8DiN8dmFrB/610JdYCjd3EPNQi9keGgfGiesl?= =?us-ascii?Q?xHUSisaM586zySzTKDy0vbcCdyUwNwTr7MXIzLyXgNywu92mK5OpjRiSREDM?= =?us-ascii?Q?FXfBQknMVp0Ji7RsUSsekhPhQ+WqIaFwHO5mZ8GcotYhC1TBgOluYNNJk97O?= =?us-ascii?Q?4XtZC1YU5TPD+zNwuZuo17zF1wmST3Raboea5K/MRLguEUtmPjby6Bbb+J2q?= =?us-ascii?Q?x2j+VOfrWVSwhhtbIKrpV47ltjEyBiWzRDkI4JUSJAtDvkpMco5uD+kLRuW3?= =?us-ascii?Q?+ol1SNGzrHo+woA0Rc2MIYaswYeCyDHLaIcz3lpdBfrusuAij1BavD2uNY7U?= =?us-ascii?Q?j5Vi6umYiouG8H7S5Lc+hPSOa8rFJDskZASHDsiX4kKrKvgIKnyefSqZruZD?= =?us-ascii?B?UT09?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2354; 6:j/v32xA9nQ3p5BafNHxTqjovVTyQF54gaSAcr3QaxZcK4DLZwb9uhnxH7U/un5CouvhksvreJlAIma+5l18BI+PfzO/K2sek9S3iBLL3Xr2OuXY/tZZtinc1P2Bbx161d6ZeC31mV77/uIW6An3lcgIBBy8Msg0NUpaPHfVu/LAbqH8XgvzBURqA51SssQ1oSjSakEHSzottQyQ38XuintGzb7jFoU3j84BRWatdF1PPO2latjRr1ezopX4dlX9CFiZQDYjvgeBn7xezHdlcF0McSnWMIcYPbc1Djh0R50rJdy5frxINmJ97sVYE1kf17wbJ6PjBLG2ZEhKGU2LLjix2qCcIFWEzbIIQcR4x+B4=; 5:YORWC7hkq/SWP0gYzzQShNeKjoICI0fbSncY/BX6Ud4sRBXQjJZ7R2lJpy5VkAXjW3nvJP93EEMJVvBhzuixUthqzKylzYSgP/TTqWikTmE7eDQ/6b0S7miBhFLOX90JXfQz5OEObQIZ6fJjNPG8G0c6lyoG6qieuby4CpR50hU=; 24:xBWoJxIFyicIfleaHcdRRaqdHlp9GGh+lcAyDPRwEBM6O+aExbu6SoERBywRhZaibL7T+IQX65AoyZ2uy7sn/NJSSkUepuO2CK6EB7DIEz8=; 7:+PR86+W4K9+pJDDiamHCCbB9VXeGuUcVzsK/rkbk2/9JUTVtR2rx6iZxccANIFaV7R36JGzTFZlbSdyk7Gd2L6O8945bC8YdCkkw2/Vva0xC/iZvcX8LjosAiobns+38jy4RICXCZ/jgLWlGAjrfJHOnYxr0JXwu0/4Vact5Tgv1zYY4CozpGn0PM9rifv2RrDe2ynMSCPS04eBZcExxB55fYLVNVmI0UuEdPeHYvr45fHKXRMw0WcARm7zMGS+o SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2017 08:54:18.3045 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 144484b9-b8a4-4102-20db-08d525bd218b X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB2354 Subject: [PATCH 02/10] Platform/NXP: Add support for system reset library 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: , X-List-Received-Date: Tue, 07 Nov 2017 08:50:28 -0000 Content-Type: text/plain Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Meenakshi Aggarwal --- .../NXP/Library/ResetSystemLib/ResetSystemLib.c | 96 ++++++++++++++++++++++ .../NXP/Library/ResetSystemLib/ResetSystemLib.inf | 33 ++++++++ 2 files changed, 129 insertions(+) create mode 100644 Platform/NXP/Library/ResetSystemLib/ResetSystemLib.c create mode 100644 Platform/NXP/Library/ResetSystemLib/ResetSystemLib.inf diff --git a/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.c b/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.c new file mode 100644 index 0000000..897324a --- /dev/null +++ b/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.c @@ -0,0 +1,96 @@ +/** ResetSystemLib.c + Do a generic Cold Reset + + Based on Reset system library implementation in + BeagleBoardPkg/Library/ResetSystemLib/ResetSystemLib.c + + Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.
+ Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved. + Copyright 2017 NXP + + 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 + +/** + Resets the entire platform. + + @param ResetType : The type of reset to perform. + @param ResetStatus : The status code for the reset. + @param DataSize : The size, in bytes, of WatchdogData. + @param ResetData : For a ResetType of EfiResetCold, EfiResetWarm, or + EfiResetShutdown the data buffer starts with a Null-terminated + Unicode string, optionally followed by additional binary data. +**/ +EFI_STATUS +EFIAPI +LibResetSystem ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN CHAR16 *ResetData OPTIONAL + ) +{ + ARM_SMC_ARGS ArmSmcArgs; + + switch (ResetType) { + case EfiResetPlatformSpecific: + case EfiResetWarm: + // Map a warm reset into a cold reset + case EfiResetCold: + // Send a PSCI 0.2 SYSTEM_RESET command + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_RESET; + break; + case EfiResetShutdown: + // Send a PSCI 0.2 SYSTEM_OFF command + ArmSmcArgs.Arg0 = ARM_SMC_ID_PSCI_SYSTEM_OFF; + break; + default: + ASSERT (FALSE); + return EFI_UNSUPPORTED; + } + + ArmCallSmc (&ArmSmcArgs); + + // We should never be here + DEBUG ((DEBUG_VERBOSE, "%a: PSCI failed in performing %d\n", + __FUNCTION__, ArmSmcArgs.Arg0)); + + CpuDeadLoop (); + return EFI_UNSUPPORTED; +} + +/** + Initialize any infrastructure required for LibResetSystem () to function. + + @param ImageHandle : The firmware allocated handle for the EFI image. + @param SystemTable : A pointer to the EFI System Table. + + @retval EFI_SUCCESS : The constructor always returns EFI_SUCCESS. + +**/ +EFI_STATUS +EFIAPI +LibInitializeResetSystem ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + return EFI_SUCCESS; +} diff --git a/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.inf b/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.inf new file mode 100644 index 0000000..c57fff8 --- /dev/null +++ b/Platform/NXP/Library/ResetSystemLib/ResetSystemLib.inf @@ -0,0 +1,33 @@ +# @ResetSystemLib.inf +# Reset System lib to make it easy to port new platforms +# +# Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved. +# Copyright 2017 NXP +# +# 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 = ResetSystemLib + FILE_GUID = 781371a2-3fdd-41d4-96a1-7b34cbc9e895 + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = EfiResetSystemLib + +[Sources.common] + ResetSystemLib.c + +[Packages] + ArmPkg/ArmPkg.dec + MdePkg/MdePkg.dec + +[LibraryClasses] + ArmSmcLib + BaseLib -- 1.9.1