From patchwork Wed Apr 19 23:39:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Garg X-Patchwork-Id: 752228 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 3w7LcQ5CMKz9ryv for ; Wed, 19 Apr 2017 22:17:58 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 71178C21D4C; Wed, 19 Apr 2017 12:17:25 +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_H2, 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 EDD9EC21D57; Wed, 19 Apr 2017 12:17:08 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 73E5CC21D5A; Wed, 19 Apr 2017 12:16:50 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0055.outbound.protection.outlook.com [104.47.32.55]) by lists.denx.de (Postfix) with ESMTPS id C18AAC21D5A for ; Wed, 19 Apr 2017 12:16:46 +0000 (UTC) Received: from BY2PR03CA056.namprd03.prod.outlook.com (10.141.249.29) by BLUPR03MB248.namprd03.prod.outlook.com (10.255.213.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10; Wed, 19 Apr 2017 12:16:45 +0000 Received: from BY2FFO11OLC010.protection.gbl (2a01:111:f400:7c0c::102) by BY2PR03CA056.outlook.office365.com (2a01:111:e400:2c5d::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1034.10 via Frontend Transport; Wed, 19 Apr 2017 12:16:44 +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 BY2FFO11OLC010.mail.protection.outlook.com (10.1.15.21) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1019.14 via Frontend Transport; Wed, 19 Apr 2017 12:16:44 +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 v3JCGP4w028026; Wed, 19 Apr 2017 05:16:40 -0700 From: Sumit Garg To: Date: Thu, 20 Apr 2017 05:09:12 +0530 Message-ID: <1492645153-29661-2-git-send-email-sumit.garg@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1492645153-29661-1-git-send-email-sumit.garg@nxp.com> References: <1492645153-29661-1-git-send-email-sumit.garg@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131370778045464209; (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)(39410400002)(39400400002)(39380400002)(39860400002)(39840400002)(39450400003)(39850400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(5660300001)(76176999)(50466002)(5003940100001)(86362001)(48376002)(50986999)(33646002)(105606002)(6916009)(38730400002)(2906002)(110136004)(53936002)(106466001)(77096006)(47776003)(356003)(54906002)(4326008)(189998001)(6666003)(8656002)(8676002)(85426001)(305945005)(50226002)(104016004)(2950100002)(8936002)(81166006)(36756003)(2351001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR03MB248; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC010; 1:UjDzm2LNIVMP+OEZtkMuCIk2UiIpdub/+7mesjDb9XoGywF9zZaXjngOq2ZdD+STHVbfaUhSu9AuZlrp3dU9Kg1zqz7Hg4BbVOZsMD+Jv2dFvBlq9MMQKP9hQxfD9QqJbXvmPUusdx5iFpiIRo/51dDW1GdISfGlhgV9TGtNBqLCFl+g8mUWHUGY0L9LDc0hyHXBNLimkoSFQrOO2FcsWahI5fsn3vaynyNvhFIE1xO+6wyvCQOBiF+Nb4EoZiZG9cx+DKxRJ28aWfDkhZd456Gklo0HvJtOoBCr9b9PhWT637KGHm+w5xyDNFiP/jbbGDMyCrnIR6YrFMi+6UnOVMArG50DVj0MGgd996+AnxAsHhzzKjR4e8RUHBcv8ACPDQR+Z1vdH3pBDNPmvzu731NuXaKyZXJBm0gbnzAAlPxLZrqnoH48X7P2krRo0AHa+RhoHaKtH/2N/KqRfPuUuuVz3JQlLIH2vaxskA4tpoHcAOF4Y5xKSMkn5xRdlNhpxZbQ68TS66nBrOTFtg1cZ+vzD0boONrIwIbDn8OLCQaKdYuLdxsCIa+sQHDa5khh6I22YIZvPAIF6qeYKEbIbtCWner8ShfqVIXQ2OfrlUMNA4uLPMGaHEcbtULhaYvveEn0cQ4xKkuhAB3U45KVajhWY00KlZA1JPk31GsPQBKSa3ItWJtNH25b3Rm3CYZl78Hk7dd7Q/z8GCt/t2/DYteVr4kE+TahFWCNLbm43as= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dfca7e32-d36f-467e-d243-08d4871df1a5 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BLUPR03MB248; X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB248; 3:L961eC4iRb1jtcf57l9LDspLo7duEhQY92ge9InF4+bp7jJUBksoiszMPO8rAjehWsHu2sN6dzCsxhKpELBNyRcwNQso5YR9tZM+RL5aVvoeZyZOy3XinsJTasp57VwsU9kUJVhhaLQffPDX1hhKv0vIEtcte5gqnYAgBNJzMIweF2oyC8Rb0vwvY54ds6xUlr3vIUWnchPFzYAV45YzmX4I0P7QwfMe+uWlQqL0XKo2Kvasssp5NvbSlhV4OpaqRut8+EOhSdJhX27uUrgahNSqRn1v4T0SRnb7Ob9vQq0sqEW7KkWUO/vQ0XR6d1Kr5/SNa3SHX9KlO5MDdkq13Y79y+Y7ieSpx6eOS8pWhPLu7HImCQ2jNTHSDI+lrAxs2jzevE/E2wBjOvtsyvd1Zg6lKgrI7iGI7Uo7J9RAkXCCLRMHJhHHPBaXz4qZFZJU; 25:fmkS7V8NxG1r1GkRmOHAdACA+lEy+NkNDsdaExRPtW3vAkG6eWSlVPuVFgshTcrzlcBHk2VQDetlMGI2SorVrtSpCDcguT7ndvauxzXCjppy2KeaDhVyw94QydZlThCxqDpP1erf12pSgHN6tu82iKqYNkNQ3PgK406M/J39RycNVC4xcdEEeZsAiqs0YfXDrDEmeWgTrR+aCHweKPDgW4AqAf1cCQt9wvEXDePLKjY5egMCkGX99JdBK7AhZPLg9qaTrYH1qV89uUckTa/As77lbf4Aq+e+7bI6s4eaYl4vuJDgCocMnzgxur+jBPnzBFuuSoDOXNuMWvEtFhFqk6t7qJTRnpJEqCkOTeqOdsyJQNXUowLLLNaRhC/tY6FN0GwYvWPQK3WsZq2SRN1KBFesHk5RwDZ4k1PFQEt6kkz7Gnj/vzx4efbglyQ1isx7BZiN1DgatmvKGXz5uh37yg== X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB248; 31:mQfLhNJ0FO2PIESaWeLY8Zne0d4aBf5SMcdX1vVAeqtns8ik/qFzTFszjspAAktRPbfh3B/38RjY5fFrGlYxK8U7mGM7qxQQk2mi9sDXGFnpQo2LnK+oXD9iJuADAvMyCDEiE/RoFOA+DQuASS6y20DiCplg8LA89wu4pvksfGXugGGcXzO0YBPM+MXWII329myy1d/3/JVAZAuqaxyNiShCbThkHeSzgWF0WQmkod2BXUQQ849pZLRyVDrRO9D6oE+OIMH6joEnhlC6BggPA5IqJ7vv7Idv08UYevEDxQo= 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)(13024025)(13023025)(13018025)(13015025)(13017025)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123556025)(20161123565025)(20161123561025); SRVR:BLUPR03MB248; BCL:0; PCL:0; RULEID:(400006); SRVR:BLUPR03MB248; X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB248; 4:/VraO6IkaEF38eQK8W8w38Q3F0kaWqqGKKRDFftrJxGw2uSFwMABY38Yt/cK5KEgiUHTNkson/pf4NMN/gVWfp5tXigO3XJFG7KSAx9MU8bfjJgC/sWXJrzyKPz7v+LPptJb69ovlLSiF1UCmBgAbzVJ8SJSgT1JG7zIcxNHAftnyeSVIHLOeg0S1Kkj60E/s4Ro9sxM0anlKQ89+Ann0o2Wxm7dtTGevufaxEdTNWQaj3UTA7925ohDcC1rJ7oXOh5XYQWUeAI3J3izbi8yONCxkwousIodlS+DQZLxvyiJ1lPdT/UoQl/PgK+utfE0T1XOopyMR7fvtL12wtgOeDbVm52pImlcosnGt6hKcf9w55qBFdh9FQakYrbR9Ebpcbnon3i45JR0xJiWLJkpdazJJ+NnjyrafZ+Zh7fzgDlXZoQe+c8dSHyS01QS2oLQABQIK0EuDk1odiBPLgk1Ji2lbDoCeN8BOYbkf5y8ZJgZk3K+HNt0cs++7evbreOsK//th2KwBBX+qt3Pc1cXlKCZ6eiVHHhkIpWs3oGozP1v0G09PsRNf2ngwzUHudYxQF2K4G4RixkXt4+Hnn1M5Ny2yQ9vNIXcbVdj0PgFOOu/39anQNyll923GIJa4k2f0fRBZdp6fheVLNoKRgQ1JxO/bBMTwy5pvmjWHxxCB/EVwtcIpKqq0/w7Vey64sQ+eisbO+bYHVlw4POb9LRzr7BfasYxVie+Lc2AeeMxD1Tr/U77T1/8jCqkiQ9Xy55JEkDSuq40FIyv2ZgUCJHDS5yZhrReCxiewlEmXUAWGJI+0bBOyZeFjnk4fHGCBw3C3obLomAWM4LJyfKo5G979hbWqSCH8SY1rnsrR4GptADDZWfPBnn0dHFjRpmFF8JUTiNPQ5BgAHlFUSc8MQV8Cjy1YUazNCT73fqcFFIHOkc= X-Forefront-PRVS: 028256169F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR03MB248; 23:TfftXwQmDgEyxwNhGvXlme/av7nQlp/aH5MyubWBYv?= =?us-ascii?Q?cC6IUxkkdi56sHPbmQoemM8oE4jjZN+JRVrT7doYmZH4YmcL0mTTtthyKISl?= =?us-ascii?Q?hCYTN9joUpoqWHKzSaecrjRKS9QGOhsrkYGkTxmSdBllaj7pWqmpRFw3Cfpn?= =?us-ascii?Q?TKCIpnOmOsMzNEtZfl/dJ0Uazu9T6ocIwWzJqPUGiS+QudMDURXcKZfdOlW9?= =?us-ascii?Q?ZwjsdQUY+pYoaSRXLMjAfIEa669Z4UwAEGgV7AbOFLuTU2+OOjQy/qKjT2SA?= =?us-ascii?Q?WiqWhplLMn7fiq7zxPwzGcjSf+8+g5Abn5SmSll8we/sGUB5tr0rRIA7c1Rd?= =?us-ascii?Q?I5yhg9sav/wb54XV1d0kex8wsX1bkHhl02LneqhgQ17TEg7oZuHPVLPy/g1A?= =?us-ascii?Q?1RcNvChvBBEDDV67QIH0p0iyfAECxJ9CTkQF2Zqfl6Az1E1IbJEXClEU4d3w?= =?us-ascii?Q?KGCFHPo4VcsKKu659jhPPNdzU6W6A6Ev8WVAhndI65uzCxSTuIghnGeRTbIj?= =?us-ascii?Q?tJuUic2mNxIA5BUgeFot4L396cIsiMNn4rclg1elQqqSOOQaRwzAB3QLfwoH?= =?us-ascii?Q?YQG78CU1JEXgGUq6ZmMour6Txk/QXkEbyl5Xn+Ziiy2t++AUKQ7EK70sfz6z?= =?us-ascii?Q?ZC8XOzWKm/f4nfXcfmByh6zH2Hb7pS/Bc+GFgiMgbOu5+cG3sAjF79m1f4Ix?= =?us-ascii?Q?s2kORmV/03CIKaQCmVqmgYAl+kSGSMvvncHJLHZSYg5sbOcEAPnPxR48opLj?= =?us-ascii?Q?bvpr1sMk83OpHxRSuIaReBf5KbTLrPYoYcGR2hIMRE48gooQAASGbi2Hqss3?= =?us-ascii?Q?ocfQHV+/LTe5FYysuvr5B6kfszH5Gxn1Bjzjp+XKXKcAfL2IszE/O70JN31A?= =?us-ascii?Q?h6YwhTVjgAE3/FImCw/9DjlfXGeQ+U0oK3iTgXTEPOUzTNk5im1qjv9nFvzU?= =?us-ascii?Q?COr5cMrDT4Rlm9p1AIZBerKdG5mX297oJkcVqmsOB4wEw9oR9xKdVHpp7aL5?= =?us-ascii?Q?OW/sQB6/7slj/5ZK2Myk6bADskSdApoudDCyWPeXJVw1us/CYLkO3s9tZ0sV?= =?us-ascii?Q?pOYqR9uZT3pg1aSy5sQ8YcoLrbhyO4HFw9ki9I1mbvN+G4vhFN6bdkEkowft?= =?us-ascii?Q?YI/4M4/GOIn/KQXkwoVp0XuDfYiL0w7qjoKo9MGXOUjk75zwgnuoMmz5N5FZ?= =?us-ascii?Q?PGTBXXftyvYl3NQwu3sC6kzpxo2EMaCohd?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB248; 6:mUTBaONY+U5seJp1aab+685phgxMF/UsWW5hBg+0SHAUo0I31nEu9mEO0EkxvndmA80uoqWmqMgPYEMFTIStBU+DQoE8kheVF9QwdJu6JzVvuKZEYpi89zQOOvUMVzBtYK4Mz1EJlhEL6RaMPesls7iyswaZvwza5WGnfq3MVgx171g2eUpg6MQcGVcH6Mb3zjBnKN6Dl3dJDYRoB/atarOb0JaYDCTzd5qVHWDYRF+8tAp+bvSmTP1nQhgG/MmJf1c0KZE0nSfrY9tmUnbAAdRqAWyHJxRfvSSCGJw6GZi0HzwhsQ5ys9bK8HEoHWiU4+1XM2V3hlU7JAofqMogMxbSd5ut+rNWGWEJIXc4YrH/IvEvJaofRqzUh1P4RQRZyoHIYfFlYDMjDDoXaDJniGTqae+e3+2iwkg02VOHSFW70wcO3y9wWdJ3m4q7/p94OVlIPR8B3m5Q8Eh3M4F/yMQIohUsRM7NjGuMmvtzbPLbZ9Ikd5z2B2eIduPfdTbRYTz/Y+Pd97x1GTiNf0GYdg==; 5:BA55aTzdmypHSFp8nRT6el869HYz5D3OIi/N93ry3CqXdxf+phaFusS8zc0nOjGxESpNt0D7Qc/7sVO8dgAUITCwwO7OHgEAs7V6nxBRl3dzRM+H+hLOXTLaaPZzG048BZIdLVf7WG0F9iL8858GWI+OxIHVuVyce2PkwMRS71vspDpJh1OZyXsvLmPllA4q; 24:9JEHNF8sXo+VMJlSgwbqkN3xO0jvRUDnV75zfO0RGyc1k1BRjsxE4E/3czBqG5YpzAYhkGwt2rgCQKPSmXxfJfJncVNjJYH67hJE/dfONEk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR03MB248; 7:uikeeEbRha1M2Lah2Xcv4x/+MinrvZY3K55nyL+OMEHfoX90PfQoZzDVhuBGunNnuiZtWa9MeT2lsTmELlVdn94iHIYLrLZFCoVVjN64qC4hlVumJW7N9DO3u6iGNbhZxQBY8zrbIykcr5H5KmVyADSIKA1PBNvtjEjLccrN946psZdKBH31KdwoGl3vA2hCDtqZ0ooDcPN4CzzIgbTyRsN3bRiHu5+1k8kZnEsyFfo7De+xwLet8PQlILxU9SvxRtgDfsoxzVrebV4tDGA1m1QtzTEKU5bcgCecC4JkKLTOq3HjenWitEId0CqiKldkDwTa+6/4rZ7v3oWNdjApEA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2017 12:16:44.2188 (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: BLUPR03MB248 Cc: Udit Agarwal , vinitha.pillai@nxp.com, ruchika.gupta@nxp.com Subject: [U-Boot] [PATCH v2 2/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 --- Changes in v2: Changed order of patch 1 & 2. Also moved assignment of ppa_esbc_hdr to CONFIG_SYS_LS_PPA_ESBC_ADDR in XIP space as it's not required in case of SD/NAND. arch/arm/cpu/armv8/fsl-layerscape/ppa.c | 72 ++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 2 deletions(-) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c index 7f87bb8..26c47a1 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c @@ -37,13 +37,20 @@ int ppa_init(void) int ret; #ifdef CONFIG_CHAIN_OF_TRUST - uintptr_t ppa_esbc_hdr = CONFIG_SYS_LS_PPA_ESBC_ADDR; + uintptr_t ppa_esbc_hdr = 0; 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 ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR; debug("%s: PPA image load from XIP\n", __func__); +#ifdef CONFIG_CHAIN_OF_TRUST + ppa_esbc_hdr = CONFIG_SYS_LS_PPA_ESBC_ADDR; +#endif #else /* !CONFIG_SYS_LS_PPA_FW_IN_XIP */ size_t fw_length, fdt_header_len = sizeof(struct fdt_header); @@ -53,7 +60,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 +88,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 +110,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 +144,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 +180,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 +234,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 +249,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