From patchwork Fri Apr 7 23:08:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Garg X-Patchwork-Id: 748201 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3vzyNP3ZbNz9s7C for ; Fri, 7 Apr 2017 21:41:57 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 31EE3C21CAF; Fri, 7 Apr 2017 11:41:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, DATE_IN_FUTURE_06_12, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D8857C21C48; Fri, 7 Apr 2017 11:41:50 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 77F6DC21C48; Fri, 7 Apr 2017 11:41:49 +0000 (UTC) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0089.outbound.protection.outlook.com [104.47.41.89]) by lists.denx.de (Postfix) with ESMTPS id 9E27FC21C3F for ; Fri, 7 Apr 2017 11:41:48 +0000 (UTC) Received: from BN6PR03CA0034.namprd03.prod.outlook.com (10.175.124.20) by BY2PR03MB396.namprd03.prod.outlook.com (10.141.141.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Fri, 7 Apr 2017 11:41:46 +0000 Received: from BN1AFFO11FD047.protection.gbl (2a01:111:f400:7c10::121) by BN6PR03CA0034.outlook.office365.com (2603:10b6:404:10c::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1019.17 via Frontend Transport; Fri, 7 Apr 2017 11:41:45 +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 BN1AFFO11FD047.mail.protection.outlook.com (10.58.53.62) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1005.5 via Frontend Transport; Fri, 7 Apr 2017 11:41:45 +0000 Received: from b49020-OptiPlex-790.ap.freescale.net (b49020-OptiPlex-790.ap.freescale.net [10.232.132.83]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v37Bff2c032621; Fri, 7 Apr 2017 04:41:42 -0700 From: Sumit Garg To: Date: Sat, 8 Apr 2017 04:38:54 +0530 Message-ID: <1491606536-3858-1-git-send-email-sumit.garg@nxp.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131360389058293180; (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)(39840400002)(39860400002)(39450400003)(39400400002)(39380400002)(39850400002)(39410400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(77096006)(5003940100001)(305945005)(356003)(85426001)(53936002)(5660300001)(97736004)(50466002)(48376002)(8676002)(81166006)(8936002)(50226002)(36756003)(86362001)(54906002)(47776003)(104016004)(189998001)(8656002)(33646002)(2351001)(106466001)(105606002)(6916009)(50986999)(6666003)(2906002)(110136004)(38730400002)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR03MB396; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD047; 1:+Iu/v2911O3Gi5SlCnkEDiutBTj9YLlED8z9feBSLlPsv0i4fb6sPgHNWlzWrKGILQ/BX6e+EfVyxIcb0MKwb6Oz4T+Gl0jIdv1O6NSdwRJO7FV+5dH5mvrFC4zH82ivAl/SHCKchsCaxkVCoBR0Cb5CE5ZHD0if0xN3nEBzFMwoaQ3/7Zfa0P8KuDBNh34DSKpzRpQhGS1EnNzI/uKp2WaHlP4f0Z1PBSLpRLCjWr8rfiLoTYIp6BiQ70a0cEYUBmZFqlSbhpXzYKtkPY7bthE1wEhjiSvM1CVPNTH82f9oITVujhGfyX+rsJITxIFWwYElAYD9UhwtfD7DNX3lEoQGR31nTDLehZGstpNiFvSRwQE6uQ3KRu19fcsQbC+RT8qMSWmNBTqGG0TbIrq++czUUksHEz2rxmJLeJbV5RPhn8LV3VhZCnYB5JyeP2UH7FF7SCi18oB9dPd8fu8aivhlr2EnqtrKxg8MwXAnlPVYQIu3QpXyo+r9uYyWRQfptQEu+3Lp7985XxxnXVXhJ5hQb23sF/h4Vk9L17rQ1bHWKUFuTKP/FAM5dfeAhGgEXW7FwFWbotTJcc28JXpvYSVrbC7AmLLRfLcxSPWnD5ApG/b5klYAHqwXrd+vG/at5g8qvks+ItCdSGY7hoP3rCKpbu9jxYkZoC2uMGCWGB1mh8SvdXM4C3Cv53rzHmNlzMQOzRT3Ru/nu6pjD8WbrlALyPds5PFtQmR/a/lOoS0= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: f1a11407-dd1a-4966-6dbc-08d47dab11d7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY2PR03MB396; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB396; 3:6j6d5ailcIwkfeE/qu+zUMmh4/OYlyvhDudtP3S5FlCtcMexq6MqQUMcBsRc4c9JSdieAGDNu28yu+WpG46EH4HrWdyMChgD3etVykuB40ICTJbhPW8kOPIxTvcMGIxjXk07IZSR6wa3PaLiA3IJIlbwoiPeRSaG2ILJcWdeFsZnQz/KCcc0Cv0J20utRZBdve7eUu8RYKA0GYBC8eWr0MvvOJN/qhYyTDf69Blb6QWkq8XeX/Zam4KQ/oEBIagbZrGtgpR91PwmjDCIWkeOA1nD0YuI5xqNeKbLvQhYSXRw1ky8o9TVsKGqea13eKpy+j56V2WX5f3dTjebxViVfFyBBElznb5eutZC134ytafXJHIg8jedJEJfDQDHdl2muIAHKkP8okda1Jh6qgexKk/gQppsGqQgTDl2tUtfSh30dM88HNucU9E1B6D1APRW; 25:+ojhTX/Km+RcLEmu7P/tjCoI69kUMvMvFb5XoIiloFcQ+k0ll0+7ej91mrAwGoI6UNC2vc0vKiTcDPmn/hcwFuuBJTPfRafji9+7BnfyVUzF+Rfp4zkbMvlmVEN8hnZfrThrScB/AgxcZB7dOmzbdaraeQsHT05oNSVVPubgmoxsd9F/NheoZutWqLvTUbNUB9OQVJxvrcFPtvA9SGfAAcKfwUoEklTZlcos1zuvX5kpsxpO7PV/U0EIHuW9DXb0q4uJ2CpJth3t6dsL/O2lA78Duo2As9p6ZCjxnnL8bWEa1ONltBgpGhL8Glj3+0vSq3QcdHtIDQXnZmbSwY9cyTb8WnyFxBDauR6e3udrlv9jl1zjD8P038HegHKHqZbHwskOKOlQMf/O0oQKsShvg9h94mebvc8OMgbYFnxOSim+7/eD5LO0Q56tKY8/8ZEg8WDRqNI+YxU1vVGZkVauqw== X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB396; 31:wV4DyZTPZTjHHEYmmNCGNsB2yYFja/mxKX7mfFA+t6FC+v2aquLVLKcM8zzdj68rR7A6K9ysrq3zmyzp7va8kkXANQtP3oW/VOPNpeDNctSL+UlqJxiw8fOhzKn5G3DJPDX8E9s549sOTGN8xSAP5QWg7GN7XgdPfV9AzbMsMDOYWXmkKocMXJxlR4RPW4d78JYVIXsfcHgS+j2RznqmbyKYwrkRHOsmFrY8cnGi9y8/JlgKJ5/9Ey8hH6ExP8WVFKnVsfAqu4IGUJ56YvbTbw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(601004)(2401047)(13015025)(8121501046)(5005006)(13017025)(13024025)(13018025)(13023025)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123556025)(20161123563025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259075)(20161123561025)(20161123565025); SRVR:BY2PR03MB396; BCL:0; PCL:0; RULEID:(400006); SRVR:BY2PR03MB396; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB396; 4:Pe3/Lvoq4bN7bSe46YQvWQNyIAb2f4/lklkx2FN1tQDLWITGzWBssKuUCa6FcHei2CP/TcvdXv5uCe7Au8hyJ33QvpnMlUZBUnDt+pjRTHyVJtVo+JiM2xqlfPFmw5D5SxVkPGeG4jiqg8DG6smxxj9JIf6VEKVt83tpjU2oVBNp6f32PvDZgqYD8F1ydT5lQqEgPMS2Eg8VHaPtOYoDZG7dSHt+G9tvuyGgRld338uT/SMZT4RQAZlvY1aEuHSxnwe/hYBv1rnkrWLESbIPwWe0uBbo5eFu2QadAl3sUTtMRUFVWfU6v4rgXVGJd1kXEKsO03wGs0ojlEDS2gHN4JbVcYC40WbbZrOlNC5b0fdD1PVk9OMUpFcrBl+WD8vwdke/P3SjpomAFhx7ago34PlBZRgVr/Jh8l8k4C5sOWAQWSf1fPGL0jc4UU40BJZQp06/P2Szn7ez06WB5bu+Pn8SToQ5SjmTaquBcKJzX3m+4fl409tF83mQ+e04Z+2wnWVWrQE/Yd1TegHchcDQWmQ5sXyPSaKLsvt1ZN5qemd5PuGs7OkP7B3vTNNFlJweoyLc9j008VuTqrqFTEKM1UySjfNx+MJ/BmFfjhqtGV0tEhOv5NHQpYbrogBbpxx3eCMb+hr0mqxMC4UQKksaitAbuP6JWTasamdVC7Xp6555SloyoNeIKv2Kr6USd5cmHXaXZOALgRrsQ1zvXiKx3UhyCI9AJyArzXIlkwDPAefeTgB3y+S3Fes6LwYHfblx8jumdKFP8lF8Rx5DebSVQGEUMgG6ytoHPsdcHy+rUVNka6JFyr6gFon8FEaMzgJzw86V9/2AtgTSGaST/HY8IVI/OZDIfZjQwqgOSQOCx9w9VUsHBJVpE+MxzEWTqHG7EJY+d4ZwlLjKhv/OtAPu+3La8l2NWBqzo3rmbCYm0aY= X-Forefront-PRVS: 0270ED2845 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR03MB396; 23:gV7ltfCJI6I86VqssvE0bBn0XLM/vXijzplrAiRh04?= =?us-ascii?Q?Y1LqGSdEdzf1ewtgmLNqRkzerk98pMLq5loZF5YIqAayo19OFMRPzPLH44Vf?= =?us-ascii?Q?X2wQkH3hmPpFXvBUIl54AxFdGJ12/b7QLHEZJsHF28jgnuZRM2+MYNuTGfuA?= =?us-ascii?Q?W2fDF62jJ7EDfiPt/2jUrKsGZ4ayejtPubmglQICVJ94dAwmJPEdC2w2ZTio?= =?us-ascii?Q?31xoxTOY7yq+ZiijhlS6zOxajE4u5kz5L958rf0X+Ja/JivsNVSXDBlTwgyR?= =?us-ascii?Q?JfkiqKKQMBWTAnBNopkTAcERudQa1y6WVP6m9POVVtfq7wMX7i9mGXihWDal?= =?us-ascii?Q?O3EJVpLW8kJGp/x2JY6ww2c5wEl7zQeWyIUjx5l886IeI5eQLtLToFprhy19?= =?us-ascii?Q?wrTcPMraD90insNjGtRhyI2rwqYJPSTCSreRmRU0BiQ4KOFnfqRjVlzM9tcS?= =?us-ascii?Q?RVtVlY2zxNlrB3TWMUIRWJIZS5kheir8E04MVuNt3vTnjfxud8k0BfiKfON8?= =?us-ascii?Q?NEQBhcB8WstXy3/h9RAHWKoe0OL/UZp9WVFESQviA69fDrRB4fjprCV4DlCe?= =?us-ascii?Q?QnaoXaD4Fxnmj9WmjsRGo/Hr5iUhmE7i87IngnBirINrGNBgfl61bD06+7NM?= =?us-ascii?Q?6y0NdD9kJ09DYFjF0t3jD0YywQq5Ka85vHZXdEAzxyZlvY+FNWgvqYfXehV8?= =?us-ascii?Q?5oaCBEH4YRnaxlmpg9Ab2qwFg7yCtK7T74rVhIsvdSaGKAKdPXa6Jt0Ibw8g?= =?us-ascii?Q?Ke5m089y0ilMAFeBZIt/lvz0U1aH5M8vrW6kIvCI5N+j/c5ge+yO4yzaVEMi?= =?us-ascii?Q?4Z+DgalPJ38D0l1PadUwP0NX//uS2RUfSFgx91MQIfmaLESNFjJENS6iZumF?= =?us-ascii?Q?m2UiHyC/XWtrmflUVccWmG+PCmGFGG9PyOkGwRcui0dNWC5L16QEu4x19yxh?= =?us-ascii?Q?rFSnMOs0RaGaP21iTuv8hu2DgaHTVqi39wx8ut4X+5695rgWHkXD51ucrZpC?= =?us-ascii?Q?7bUky4ekpkfOANwjfKM8LnFpWzc5cN8crS+8VgCtE+NmLVVxP9lS3NtrouXC?= =?us-ascii?Q?vOIkvgx+Bu1K9w9lEph1qCMWrjcWH09sZBhbwT0gehU8Gb2za4EsKACVXmqh?= =?us-ascii?Q?uL6p6YtWqsXfXrvJ8W7o2MaYCiVWwqjHoBGrNWJJ+Ftax+Aqk/xxjHXwzL0N?= =?us-ascii?Q?SxPXKOmtk98nU=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB396; 6:6vQ34mp5uqfF+om4+NFJKH0hVBU0PscF2fdZng05uAQCpsYi++WLl0PhvAq6pdqmcRd/RWvD6yRBFV3/v4htd59z8F0DCUoyTf7H82jM7eBQzB1TNqC/v9bwJauxRFcSH4XzE0Lfi8dF3euqtYaOb5Kj3IxbLx0vjnvug1+u0oxUCdNOgil9+vjiSrhmKYcARH07a38UrWvwlTwCpN/Utz0fEBAivjdqSlIYKAuqBytnS3JkgRNZ5qU1A3+25hmO+ObAKkAd6XyyTo84uQ76cRIPq9SqaZxcVWKfrLRplcoYYoGTIHqP4bzrXuk5ZJHH4F1LXea9Y8davRz5NnAPmEsvbx+wrmHa1fqWwlMgB2FPVo6tIOPxW5lji1/3UbC3+GInsPWUHx5/1lnSB1LeDA==; 5:mTaldR9c3UIoD1gleHihdntggn3ZFPD0JSQPSKJofKbwDakIRkbJBSyApInErC0nxvhco6mJ6W/YvLYi/jm7TWcuM5FAzqKgahrIJLEEjSczfdPatzxsaCSLs2mqa54SLv7HpNvBy4UlqcNQcSIk0fmxuMunOSEHWXf9d6Wa9+hC8AfbWXq5JkggL//Tekfv; 24:9ziJy47jTTlaJQJe7G0VfeigYXDC6/qYzagwSEHq1O7kHzhsOj3xwpucM8XfGPafMcbwmcNMMNjfdv6mTvR2RPRJidWWA18Y4B8XFR1s1n8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB396; 7:ZBUEyDWEkoEkkQ06pZ5DWGeJ7qQsJCMIKBKrwiLUEZaNgeQy4RZzcyptVd5MFnsyuJTYF3SS91avhTH5cQumJTsumga0ySMskCebUPANJxMYLrXdp79i0GQeNHnhkwbVASvTi2t5VYr7MQkECYpcdFGtJCtmR0+1e4yH3C4aLbR/9l7aICIU/FNupSHfeo+tZWcz9jom0o9Tw7dnhfp+BTsjUr5GiXQWLAInbIl28+uxiEJSq+4k2kHLGLvtT3ovFAAr51JohOab+VzPiHPLKMIlTPy9eSiBpoO0XgWTiM9I4Zfjk1YGox1cowFfHB/NqrxJbiQeIoJvv7ic2rhJlg== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2017 11:41:45.6421 (UTC) 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: BY2PR03MB396 Cc: Udit Agarwal , vinitha.pillai@nxp.com, ruchika.gupta@nxp.com Subject: [U-Boot] [PATCH 1/3] fsl: PPA: add support PPA image validation from NAND and SD X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Sumit Garg Signed-off-by: Udit Agarwal Tested-by: Vinitha Pillai --- arch/arm/cpu/armv8/fsl-layerscape/ppa.c | 67 ++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c index 7f87bb8..d8f1d36 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c @@ -39,6 +39,10 @@ int ppa_init(void) #ifdef CONFIG_CHAIN_OF_TRUST uintptr_t ppa_esbc_hdr = CONFIG_SYS_LS_PPA_ESBC_ADDR; uintptr_t ppa_img_addr = 0; +#if defined(CONFIG_SYS_LS_PPA_FW_IN_MMC) || \ + defined(CONFIG_SYS_LS_PPA_FW_IN_NAND) + void *ppa_hdr_ddr; +#endif #endif #ifdef CONFIG_SYS_LS_PPA_FW_IN_XIP @@ -53,7 +57,7 @@ int ppa_init(void) int dev = CONFIG_SYS_MMC_ENV_DEV; struct fdt_header *fitp; u32 cnt; - u32 blk = CONFIG_SYS_LS_PPA_FW_ADDR / 512; + u32 blk; debug("%s: PPA image load from eMMC/SD\n", __func__); @@ -81,6 +85,7 @@ int ppa_init(void) return -ENOMEM; } + blk = CONFIG_SYS_LS_PPA_FW_ADDR / 512; cnt = DIV_ROUND_UP(fdt_header_len, 512); debug("%s: MMC read PPA FIT header: dev # %u, block # %u, count %u\n", __func__, dev, blk, cnt); @@ -102,6 +107,29 @@ int ppa_init(void) return ret; } +#ifdef CONFIG_CHAIN_OF_TRUST + ppa_hdr_ddr = malloc(CONFIG_LS_PPA_ESBC_HDR_SIZE); + if (!ppa_hdr_ddr) { + printf("PPA: malloc failed for PPA header\n"); + return -ENOMEM; + } + + blk = CONFIG_SYS_LS_PPA_ESBC_ADDR >> 9; + cnt = DIV_ROUND_UP(CONFIG_LS_PPA_ESBC_HDR_SIZE, 512); + ret = mmc->block_dev.block_read(&mmc->block_dev, blk, cnt, ppa_hdr_ddr); + if (ret != cnt) { + free(ppa_hdr_ddr); + printf("MMC/SD read of PPA header failed\n"); + return -EIO; + } + debug("Read PPA header to 0x%p\n", ppa_hdr_ddr); + + /* flush cache after read */ + flush_cache((ulong)ppa_hdr_ddr, cnt * 512); + + ppa_esbc_hdr = (uintptr_t)ppa_hdr_ddr; +#endif + fw_length = fdt_totalsize(fitp); free(fitp); @@ -113,6 +141,7 @@ int ppa_init(void) return -ENOMEM; } + blk = CONFIG_SYS_LS_PPA_FW_ADDR / 512; cnt = DIV_ROUND_UP(fw_length, 512); debug("%s: MMC read PPA FIT image: dev # %u, block # %u, count %u\n", __func__, dev, blk, cnt); @@ -148,6 +177,31 @@ int ppa_init(void) return ret; } +#ifdef CONFIG_CHAIN_OF_TRUST + ppa_hdr_ddr = malloc(CONFIG_LS_PPA_ESBC_HDR_SIZE); + if (!ppa_hdr_ddr) { + printf("PPA: malloc failed for PPA header\n"); + return -ENOMEM; + } + + fw_length = CONFIG_LS_PPA_ESBC_HDR_SIZE; + + ret = nand_read(nand_info[0], (loff_t)CONFIG_SYS_LS_PPA_ESBC_ADDR, + &fw_length, (u_char *)ppa_hdr_ddr); + if (ret == -EUCLEAN) { + free(ppa_hdr_ddr); + printf("NAND read of PPA firmware at offset 0x%x failed\n", + CONFIG_SYS_LS_PPA_FW_ADDR); + return -EIO; + } + debug("Read PPA header to 0x%p\n", ppa_hdr_ddr); + + /* flush cache after read */ + flush_cache((ulong)ppa_hdr_ddr, fw_length); + + ppa_esbc_hdr = (uintptr_t)ppa_hdr_ddr; +#endif + fw_length = fdt_totalsize(&fit); ppa_fit_addr = malloc(fw_length); @@ -177,6 +231,13 @@ int ppa_init(void) #ifdef CONFIG_CHAIN_OF_TRUST ppa_img_addr = (uintptr_t)ppa_fit_addr; if (fsl_check_boot_mode_secure() != 0) { + /* + * In case of failure in validation, fsl_secboot_validate + * would not return back in case of Production environment + * with ITS=1. In Development environment (ITS=0 and + * SB_EN=1), the function may return back in case of + * non-fatal failures. + */ ret = fsl_secboot_validate(ppa_esbc_hdr, PPA_KEY_HASH, &ppa_img_addr); @@ -185,6 +246,10 @@ int ppa_init(void) else printf("PPA validation Successful\n"); } +#if defined(CONFIG_SYS_LS_PPA_FW_IN_MMC) || \ + defined(CONFIG_SYS_LS_PPA_FW_IN_NAND) + free(ppa_hdr_ddr); +#endif #endif #ifdef CONFIG_FSL_LSCH3