From patchwork Thu Jul 14 16:27:52 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Garg X-Patchwork-Id: 648298 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3rqsKD4tXhz9s1h for ; Thu, 14 Jul 2016 20:25:20 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4B09C4BA0E; Thu, 14 Jul 2016 12:25:19 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ALFpM69VT8ff; Thu, 14 Jul 2016 12:25:19 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8F8654B99D; Thu, 14 Jul 2016 12:25:18 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 303534B99D for ; Thu, 14 Jul 2016 12:25:14 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Zu2k6krx88dB for ; Thu, 14 Jul 2016 12:25:14 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0083.outbound.protection.outlook.com [104.47.41.83]) by theia.denx.de (Postfix) with ESMTPS id 5E6BD4B811 for ; Thu, 14 Jul 2016 12:25:09 +0200 (CEST) Received: from BLUPR0301CA0026.namprd03.prod.outlook.com (10.162.113.164) by SN2PR03MB2416.namprd03.prod.outlook.com (10.166.211.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.528.16; Thu, 14 Jul 2016 10:09:24 +0000 Received: from BY2FFO11FD056.protection.gbl (2a01:111:f400:7c0c::112) by BLUPR0301CA0026.outlook.office365.com (2a01:111:e400:5259::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.539.14 via Frontend Transport; Thu, 14 Jul 2016 10:09:24 +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; nxp.com; dkim=none (message not signed) header.d=none; 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 BY2FFO11FD056.mail.protection.outlook.com (10.1.15.193) with Microsoft SMTP Server (TLS) id 15.1.523.9 via Frontend Transport; Thu, 14 Jul 2016 10:09:23 +0000 Received: from localhost.localdomain.ap.freescale.net ([10.232.14.164]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id u6EA8woD019249; Thu, 14 Jul 2016 03:09:19 -0700 From: Sumit Garg To: Date: Thu, 14 Jul 2016 12:27:52 -0400 Message-ID: <1468513673-5406-3-git-send-email-sumit.garg@nxp.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1468513673-5406-1-git-send-email-sumit.garg@nxp.com> References: <1468513673-5406-1-git-send-email-sumit.garg@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131129645639171639; (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)(7916002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(4326007)(8666005)(7846002)(106466001)(50986999)(97736004)(47776003)(86362001)(2351001)(105606002)(81156014)(104016004)(189998001)(87936001)(76176999)(68736007)(356003)(50226002)(48376002)(36756003)(2950100001)(110136002)(586003)(50466002)(8676002)(8936002)(85426001)(92566002)(305945005)(11100500001)(229853001)(81166006)(5003940100001)(2906002)(19580395003)(19580405001)(6806005)(33646002)(77096005)(7059030)(4720700001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR03MB2416; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD056; 1:a+SBwO3Tapvox6qi7t1Sak0qsFClxDPH3jLO4de7zJGpceUcjDSaqPrTWFkl3NskkPEQ520Hj0pL3e3vJuAGFlEeeebAC2Tqi0s51nb1H7yGhBXm7HnojThut+28SjqlpKLc3Yp7MmtAhmxrBO8bb31xn4sJisdyKJgN5WdWjVwSYYsudFvi/+FDo+opWbhGsZCxIYTJ2Ay2anjvu371k9MfvapPMmA8MsnB0XQrvAFFU8HkfcL8vVVgshYqtzOmI/m2i707zFcN2jnEA510/4EWNqn1F50sHi7sir8ygiOfpe01qNpbhDlin/82ue9xcB/u1vyx94wUt8ox9nBDWA+t+TFed4adfdiT22TytmuQncLUGi6YmiMZXknZojGy7xVJHyawNbm+gAwAZi0H8nj76fyhtk0udawvvQ23ubOKmwSK+aX2S91DFOA34zm/xDj8XHWsGm/EpN5c4zH7LxuUntXmq81PXJsC86HvNBGMxx/q5QvwiAgDLAqjpuJie/MGtnILBlQn1aYocs3CDCgpkZcvjIW53A/aXUGZgdFA8zZ/r6mIuuQsZXVDgZexWXZbKD7cm/NfESnE1vin3ydOrJq8wcNFUmylBjnoq2VuRDbpLuuR5Eozuj6UFCOpLcIgcamZEZFfhQPdlHG1tq3sQ0/ucvALKiVYOCuq+2Vfvu04tln/QGsGA8KPhWuk76LHpX+6qUTX2EFs8aVjFr8fxJ4UHSouSGVN82XtD4w= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 0b7b2aa5-080b-4a82-733f-08d3abceee3c X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2416; 2:gcpjUMQMjqoaJeXh917semqmu8Nx1HB1tPNuWUfF53EukToGSYsnsK7a9DNu9JUUrw93ikNfSFspEUloSxjnNJscebNcVRIUNaY8+4k3v57EtpaPo7h6Ftye8eoixP3EeOF9lVZk38rReopAN0oqDxj2OsPCN211RzyszcF3dk2wE6BFPvBWJQ/cuqEQaBJN; 3:V82LCqsnWCHk1s+729vbyF68hzJ1zcMMviuWO0WCoFcqpccR2zjkiN6bNrou+8Dopd3QbNtO7/W8YqDulYPIF0HCkpJw1KktKG2C21i/5+/2c7mtCgIluwC5dN/Fs7ILKHHrrVdhAW1ouF1s35NWm6VW/POH8uMl2SLSwQM2UeQMy9Hq8Z1zmwj1cADec53eo3YTU4YHiSyudi7gSSPHW/8DUsq5N1H9Egs52Ax/g4A=; 25:S/ZcdRalEtAaXrpJ5eQcwaaaMf32rr4a0oVK76lK8Rt+RnpcacPCF101gXFmmD6ghkQXz6vatdoSIxTBGY+gqERTNOkt3DsoFF7jhBZBJVy6J+GE0DOxeNrkqVUCG9alWlFcSnxO+gGrtn3Tek2kuUKFvJg3ZJgfkNej/HHgZ8YmMOdEVi/AzDs/W81reFDrO4E/cqymo7zQCHXVmQw4+ETBvJYQTZ5KNZ0Bsp5LgBOSrnpBpyoAObKw7svdon2NV/pwZhTeUV6g1MlHwUPVvHUnJ9N9w9eCeWSF/QRQecShZLncU385BVhtnDeTedzGrWxLk4c6LJYwBGYVZo1i2zMvKhbqxHyW6qB5nZ92E9kHI+enzfeOHe4uYKssjsS44ATfL7J7kjGa0Md7S5wSBNLPBVUg2y3YFULHbhAop8U= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN2PR03MB2416; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2416; 31:qFLFuvaesqDrXEb3gj4P7/nR9R99eG9zXKLe9JHpBgaLnFlg4EMWAEXaIIqtT4Z4Zph6PNfs7rJZBxOxJl4bdZAh4f1w4edM992nsYuhJt328qlC+g0MNLvOcGlvbQxTOkYmOTeoG/NMDyj98ue1Eo0yWwt5LQBh2JPvLabUEe5D/W70kgzBKRpHGoEcGS1DNWN7Rbpi37QI7/ZJHX8HOQ==; 4:WMcE7YqyKbvy7PyTU6NR0nQk68uIELtQczQ3BRbPKbjqP9dezFl+ZfbCJPGfHpXeUm480y2omcOojANtcerx9N+k7YqILsXuQxhKVLfd0eMRixs2rzgexKt/DvCZbRfMqJR2hUxnpbjhVZ2wEl8lCa40O4J591qOWKY9reCRaJzT9SnlCClDnAaQwIrLYyMYOI5mkebhtcFRwyI06ZzLuSvdaGdkqMynLbrTqcFbwA84sD21ouiL1QPer8I4GEjp4zunXHK6viTSm7yZwPKFqmZ4AFwNRVaAhlA+pFlwcfBxTi45vhpwTc2W+sQODqZHF35qqYCNwqB6Ub+gVKOb2QEI4fgZu9ffP4mY/dzTxFOikOdlu6KXwC+LefVf7cRW10TwHhc+jd37/MLdyDDHWnnet38qcKrMUweoWddD0YfCxwLR3j/DTFuF/Op3tHQK3CqRrCzwf7rq4BfkaJYSMraTJ5NJoW6cYAnWENSZzS5iflhkE2gffs3Ku3SfxaF+mYDeqknqrFo+XN6O2oJmJQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(13023025)(8121501046)(5005006)(13018025)(13017025)(13015025)(13024025)(10201501046)(3002001)(6055026); SRVR:SN2PR03MB2416; BCL:0; PCL:0; RULEID:(400006); SRVR:SN2PR03MB2416; X-Forefront-PRVS: 00032065B2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR03MB2416; 23:5YsGofo8oWzIFGcMWMVXvR523HIZEfBTQ30W6E/kk?= =?us-ascii?Q?DpSbn1hXevkgz7z3oyxxUA4wzrX6Fq6X07m8L1IZCtx2PFAhmS18TSQR4+CF?= =?us-ascii?Q?Bat1YdUY53YhNuRPgzUNAkk1LSlc0jp13gGW0c2yTfpITH+HTzlNtk6foMfu?= =?us-ascii?Q?BLURpyEyKXnOUNT0e6GaMrZ9yo8xRtkDWEnfUUR9re157ZinAYBaok2g1AYo?= =?us-ascii?Q?tTJihXaV1/EAOgoQVvWoLQ9yqZPwrh28NmbgDsahCIsikyngCPReRc8TfU1p?= =?us-ascii?Q?c1A+JxpL2zTLMwGpLyNHLMmvT1xUoymP2JdR+gZ2lM2ZOD+2/4TB9mMWqjIK?= =?us-ascii?Q?vXoCbSuGH7AafsbT474OdSXEtqTpvC55HwjIzttPb8l6Ik+YSPEdiuo0e4RM?= =?us-ascii?Q?7/vleqcnM2Zi5/R8Gpl+y0Nk3kBrni3LP9VZ20wIWpjZTo2WuLnSExShzkDQ?= =?us-ascii?Q?yWGVjRWH5KIzph74wGBAp+sj8q6YLkbPRnRUPMtDr9ZOREBz/8TBjvGHJ3JZ?= =?us-ascii?Q?g6uSB49lj2H3UM5iAQgoXJZEImweKaH4tSPsVSrma79VNRiLjBU67D1ZakAm?= =?us-ascii?Q?tkWKWLLUSde2SOcdKBAQ3Zy8nhgR2Bm9eSADf2LhGBgUcxz+DvLwjSeSjXnU?= =?us-ascii?Q?9TjD8v1Vu389JRr9oV4f19dX/8xdmy822GuM0wqaXgfV2Jt+DmJe6KoOvyGc?= =?us-ascii?Q?1eSjHjB+lvBrVAIPDEM7nb4rYhJ2o6BeXre86zfNpzvJdwASRAWk2TZ1WsCP?= =?us-ascii?Q?KIzAb3+b3OYm7uFYjBv5rHcs0xw8WI+/woYTgDNqlbUWr7tF/KdahQUPC4Ea?= =?us-ascii?Q?OYK+yPoogbAEpEzV9inttLUnCjuKPPCLTJIi2MD59LyRaasEZdimnmVeSoQq?= =?us-ascii?Q?/2kCzvjyXF9I6ncQgYCcyXyZI9zkpnAJDRou04Bw7DT2Z2Rd2xy2kOxWOuMl?= =?us-ascii?Q?8jyI0uR8+mCFqfG9HVkBuBeXz3+dbaec4OC3xxPW71g5J1F1t58euyLDeuti?= =?us-ascii?Q?xaoKr0zosJCMDRrmG0XaVk60tPPDXTEMpVX6nEVotuZSKUFk7i+z8RDZOT1k?= =?us-ascii?Q?pTx3Vq9VO5L5n6WvEvOUtekPZSAPExv3LpaKDYf/37xLmCiCUS3uFO8851WB?= =?us-ascii?Q?6ELDckTLwuoPore93BC2QVSLvm42VJ5luNrnUf1BBBo+pTSTtMRiSTnYYZ2c?= =?us-ascii?Q?Sx3InbzwGeLiPkBl6XQpc+asPDRkyoriSNV?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2416; 6:+tQXCkyxM7Z5PDKgPtl8IZeID/2iv/um3nuFwKu8Q1yQ5jOzmjo0rk0IpdXVWdAWbyb7GwpzyWYeFzGoC43HZpDbELB83FECsg/cOBLB05FcKmix4x/6eGxUYp/z7xe4QXIYhYd6apDtCWEVnpdG9Ni4fROnpG51sXUmZ9F7AJu/NNwuMVXcVcrCrvPm56fXaX7Eiie6pptnWbtP/aQhBzqk9DBHqsO56fREU1h0g3SOWL9gDclT7QMKkMPejEbrZcunj3WJg6gnsMZeWxJSqIWjEOAaHbXNNAVuL6vKrcA=; 5:FNiy/Ql0CwKYPV+jjpeJHl44zKlnWm39SzPRQYOAXJ8MsOBAvWl+WSKD4cqlH1zrexhxgUAlu21obxDH/jhJHkCeGCE9B3pY/ENNmznBOqNo3/9sPu5/tBaQVVa6JxjErMuztdadKm/ysouWhK6a91c8xFon7g4hsTxoBefib7o=; 24:+geDXHWUz2oCaCpuIyat4zknYPgKlwiPZFxFg1YsaeipgPZZBWw7x3atfrqHN35nbUvnYTAf3/YWxDYAttsN49u6dabFrLEZ/Hp3RZWIm88=; 7:RHHg6aevKcuMH+hwKose1ldJ0rYsAcycR5gmYv9gNJ/YpqnRGhc9EVF6534Vtj8WNWBy5WCLuUxB94TeaKA92NQ4rOQMok2zLPfyuZ0c9LribtbVitUcJbDedGpUmh6dnM7/K1aSm6n9BY5YHaV8N5LwYPE9TYd35KjBMHzhICefZ6PMOxVS2a+N7Q/EFJJRpBjCdAmxxEYl1xccp+/89sugrKz57+iwsFE74NlDOnDd00ahFa3jao0aFZRtC5BD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2016 10:09:23.6051 (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: SN2PR03MB2416 Cc: trini@konsulko.com, sjg@google.com, ruchika.gupta@nxp.com Subject: [U-Boot] [PATCH 2/3] powerpc/mpc85xx: T104x: Add nand secure boot target X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" For mpc85xx SoCs, the core begins execution from address 0xFFFFFFFC. In non-secure boot scenario from NAND, this address will map to CPC configured as SRAM. But in case of secure boot, this default address always maps to IBR (Internal Boot ROM). The IBR code requires that the bootloader(U-boot) must lie in 0 to 3.5G address space i.e. 0x0 - 0xDFFFFFFF. For secure boot target from NAND, the text base for SPL is kept same as non-secure boot target i.e. 0xFFFx_xxxx but the SPL U-boot binary will be copied to CPC configured as SRAM with address in 0-3.5G(0xBFFC_0000) As a the virtual and physical address of CPC would be different. The virtual address 0xFFFx_xxxx needs to be mapped to physical address 0xBFFx_xxxx. Create a new PBI file to configure CPC as SRAM with address 0xBFFC0000 and update DCFG SCRTACH1 register with location of Header required for secure boot. The changes are similar to commit 467a40dfe35f48d830f01a72617207d03ca85b4d powerpc/mpc85xx: SECURE BOOT- NAND secure boot target for P3041 While P3041 has a 1MB CPC and does not require SPL. On T104x, CPC is only 256K and thus SPL framework is used. The changes are only applicable for SPL U-Boot running out of CPC SRAM and not the next level U-Boot loaded on DDR. Reviewed-by: Ruchika Gupta Reviewed-by: Simon Glass Signed-off-by: Aneesh Bansal Signed-off-by: Sumit Garg --- Changes PATCH v5->PATCH v6: Incorporated review comments regarding comment style. Changes PATCH v4->PATCH v5: No change. Changes PATCH v3->PATCH v4: No change. Changes PATCH v2->PATCH v3: Patches rebased Changes PATCH->PATCH v2: Patches rebased arch/powerpc/cpu/mpc85xx/cpu_init.c | 4 +-- arch/powerpc/cpu/mpc85xx/start.S | 12 ++++++-- arch/powerpc/include/asm/fsl_secure_boot.h | 10 ++++++- board/freescale/t104xrdb/t104x_pbi_sb.cfg | 38 ++++++++++++++++++++++++++ board/freescale/t104xrdb/tlb.c | 15 +++++++++- configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig | 30 ++++++++++++++++++++ include/configs/T104xRDB.h | 29 +++++++++++++++++++- 7 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 board/freescale/t104xrdb/t104x_pbi_sb.cfg create mode 100644 configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c index 61f5639..ace4279 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c @@ -439,7 +439,7 @@ ulong cpu_init_f(void) #ifdef CONFIG_SYS_DCSRBAR_PHYS ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); #endif -#if defined(CONFIG_SECURE_BOOT) +#if defined(CONFIG_SECURE_BOOT) && !defined(CONFIG_SYS_RAMBOOT) struct law_entry law; #endif #ifdef CONFIG_MPC8548 @@ -459,7 +459,7 @@ ulong cpu_init_f(void) disable_tlb(14); disable_tlb(15); -#if defined(CONFIG_SECURE_BOOT) +#if defined(CONFIG_SECURE_BOOT) && !defined(CONFIG_SYS_RAMBOOT) /* Disable the LAW created for NOR flash by the PBI commands */ law = find_law(CONFIG_SYS_PBI_FLASH_BASE); if (law.index != -1) diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S index 4c51225..c3e1234 100644 --- a/arch/powerpc/cpu/mpc85xx/start.S +++ b/arch/powerpc/cpu/mpc85xx/start.S @@ -1069,17 +1069,23 @@ create_init_ram_area: #elif !defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SECURE_BOOT) /* create a temp mapping in AS = 1 for Flash mapping * created by PBL for ISBC code - */ + */ create_tlb1_entry 15, \ 1, BOOKE_PAGESZ_1M, \ CONFIG_SYS_MONITOR_BASE & 0xfff00000, MAS2_I|MAS2_G, \ CONFIG_SYS_PBI_FLASH_WINDOW & 0xfff00000, MAS3_SX|MAS3_SW|MAS3_SR, \ 0, r6 -#elif defined(CONFIG_RAMBOOT_PBL) && defined(CONFIG_SECURE_BOOT) +/* + * For Targets without CONFIG_SPL like P3, P5 + * and for targets with CONFIG_SPL like T1, T2, T4, only for + * u-boot-spl i.e. CONFIG_SPL_BUILD + */ +#elif defined(CONFIG_RAMBOOT_PBL) && defined(CONFIG_SECURE_BOOT) && \ + (!defined(CONFIG_SPL) || defined(CONFIG_SPL_BUILD)) /* create a temp mapping in AS = 1 for mapping CONFIG_SYS_MONITOR_BASE * to L3 Address configured by PBL for ISBC code - */ + */ create_tlb1_entry 15, \ 1, BOOKE_PAGESZ_1M, \ CONFIG_SYS_MONITOR_BASE & 0xfff00000, MAS2_I|MAS2_G, \ diff --git a/arch/powerpc/include/asm/fsl_secure_boot.h b/arch/powerpc/include/asm/fsl_secure_boot.h index 9420021..2e2d565 100644 --- a/arch/powerpc/include/asm/fsl_secure_boot.h +++ b/arch/powerpc/include/asm/fsl_secure_boot.h @@ -35,7 +35,9 @@ defined(CONFIG_T104xD4RDB) || \ defined(CONFIG_PPC_T1023) || \ defined(CONFIG_PPC_T1024) +#ifndef CONFIG_SYS_RAMBOOT #define CONFIG_SYS_CPC_REINIT_F +#endif #define CONFIG_KEY_REVOCATION #undef CONFIG_SYS_INIT_L3_ADDR #define CONFIG_SYS_INIT_L3_ADDR 0xbff00000 @@ -43,7 +45,13 @@ #if defined(CONFIG_RAMBOOT_PBL) #undef CONFIG_SYS_INIT_L3_ADDR -#define CONFIG_SYS_INIT_L3_ADDR 0xbff00000 +#ifdef CONFIG_SYS_INIT_L3_VADDR +#define CONFIG_SYS_INIT_L3_ADDR \ + (CONFIG_SYS_INIT_L3_VADDR & ~0xFFF00000) | \ + 0xbff00000 +#else +#define CONFIG_SYS_INIT_L3_ADDR 0xbff00000 +#endif #endif #if defined(CONFIG_C29XPCIE) diff --git a/board/freescale/t104xrdb/t104x_pbi_sb.cfg b/board/freescale/t104xrdb/t104x_pbi_sb.cfg new file mode 100644 index 0000000..98dc8e4 --- /dev/null +++ b/board/freescale/t104xrdb/t104x_pbi_sb.cfg @@ -0,0 +1,38 @@ +#PBI commands +#Software Workaround for errata A-007662 to train PCIe2 controller in Gen2 speed +09250100 00000400 +09250108 00002000 +#Software Workaround for errata A-008007 to reset PVR register +09000010 0000000b +09000014 c0000000 +09000018 81d00017 +89020400 a1000000 +091380c0 000f0000 +89020400 00000000 +#Initialize CPC1 +09010000 00200400 +09138000 00000000 +091380c0 00000100 +#Configure CPC1 as 256KB SRAM +09010100 00000000 +09010104 bffc0007 +09010f00 081e000d +09010000 80000000 +#Configure LAW for CPC1 +09000cd0 00000000 +09000cd4 bffc0000 +09000cd8 81000011 +#Configure alternate space +09000010 00000000 +09000014 bf000000 +09000018 81000000 +#Configure SPI controller +09110000 80000403 +09110020 2d170008 +09110024 00100008 +09110028 00100008 +0911002c 00100008 +#Flush PBL data +091380c0 000FFFFF +090e0200 bffd0000 +091380c0 000FFFFF diff --git a/board/freescale/t104xrdb/tlb.c b/board/freescale/t104xrdb/tlb.c index 95c15aa..7c0511e 100644 --- a/board/freescale/t104xrdb/tlb.c +++ b/board/freescale/t104xrdb/tlb.c @@ -28,7 +28,8 @@ struct fsl_e_tlb_entry tlb_table[] = { /* TLB 1 */ /* *I*** - Covers boot page */ -#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR) +#if defined(CONFIG_SYS_RAMBOOT) && defined(CONFIG_SYS_INIT_L3_ADDR) && \ + !defined(CONFIG_SECURE_BOOT) /* * *I*G - L3SRAM. When L3 is used as 256K SRAM, the address of the * SRAM is at 0xfffc0000, it covered the 0xfffff000. @@ -36,6 +37,18 @@ struct fsl_e_tlb_entry tlb_table[] = { SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_ADDR, CONFIG_SYS_INIT_L3_ADDR, MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, 0, 0, BOOKE_PAGESZ_256K, 1), + +#elif defined(CONFIG_SECURE_BOOT) && defined(CONFIG_SPL_BUILD) + /* + * *I*G - L3SRAM. When L3 is used as 256K SRAM, in case of Secure Boot + * the physical address of the SRAM is at 0xbffc0000, + * and virtual address is 0xfffc0000 + */ + + SET_TLB_ENTRY(1, CONFIG_SYS_INIT_L3_VADDR, + CONFIG_SYS_INIT_L3_ADDR, + MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, + 0, 0, BOOKE_PAGESZ_256K, 1), #else SET_TLB_ENTRY(1, 0xfffff000, 0xfffff000, MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, diff --git a/configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig b/configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig new file mode 100644 index 0000000..2e16255 --- /dev/null +++ b/configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig @@ -0,0 +1,30 @@ +CONFIG_PPC=y +CONFIG_MPC85xx=y +CONFIG_TARGET_T104XRDB=y +CONFIG_SPL=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_OF_BOARD_SETUP=y +CONFIG_OF_STDOUT_VIA_ALIAS=y +CONFIG_SYS_EXTRA_OPTIONS="PPC_T1042,T1042RDB_PI,RAMBOOT_PBL,SPL_FSL_PBL,NAND,SECURE_BOOT" +CONFIG_BOOTDELAY=0 +CONFIG_HUSH_PARSER=y +CONFIG_CMD_GREPENV=y +CONFIG_CMD_MMC=y +CONFIG_CMD_SF=y +CONFIG_CMD_I2C=y +CONFIG_CMD_USB=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_MII=y +CONFIG_CMD_PING=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_FAT=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_NETDEVICES=y +CONFIG_E1000=y +CONFIG_SYS_NS16550=y +CONFIG_FSL_ESPI=y +CONFIG_OF_LIBFDT=y +CONFIG_RSA=y +CONFIG_DM=y diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h index a8f4f74..2ec1962 100644 --- a/include/configs/T104xRDB.h +++ b/include/configs/T104xRDB.h @@ -18,7 +18,14 @@ #include #ifdef CONFIG_RAMBOOT_PBL + +#ifndef CONFIG_SECURE_BOOT #define CONFIG_SYS_FSL_PBL_PBI $(SRCTREE)/board/freescale/t104xrdb/t104x_pbi.cfg +#else +#define CONFIG_SYS_FSL_PBL_PBI \ + $(SRCTREE)/board/freescale/t104xrdb/t104x_pbi_sb.cfg +#endif + #ifdef CONFIG_T1040RDB #define CONFIG_SYS_FSL_PBL_RCW $(SRCTREE)/board/freescale/t104xrdb/t1040_rcw.cfg #endif @@ -62,7 +69,17 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg #ifdef CONFIG_NAND #define CONFIG_SPL_NAND_SUPPORT +#ifdef CONFIG_SECURE_BOOT +#define CONFIG_U_BOOT_HDR_SIZE (16 << 10) +/* + * HDR would be appended at end of image and copied to DDR along + * with U-Boot image. + */ +#define CONFIG_SYS_NAND_U_BOOT_SIZE ((768 << 10) + \ + CONFIG_U_BOOT_HDR_SIZE) +#else #define CONFIG_SYS_NAND_U_BOOT_SIZE (768 << 10) +#endif #define CONFIG_SYS_NAND_U_BOOT_DST 0x30000000 #define CONFIG_SYS_NAND_U_BOOT_START 0x30000000 #define CONFIG_SYS_NAND_U_BOOT_OFFS (256 << 10) @@ -161,6 +178,10 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg #define CONFIG_ENV_SIZE 0x2000 #define CONFIG_ENV_OFFSET (512 * 0x800) #elif defined(CONFIG_NAND) +#ifdef CONFIG_SECURE_BOOT +#define CONFIG_RAMBOOT_NAND +#define CONFIG_BOOTSCRIPT_COPY_RAM +#endif #define CONFIG_SYS_EXTRA_ENV_RELOC #define CONFIG_ENV_IS_IN_NAND #define CONFIG_ENV_SIZE 0x2000 @@ -202,8 +223,14 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg * Config the L3 Cache as L3 SRAM */ #define CONFIG_SYS_INIT_L3_ADDR 0xFFFC0000 +/* + * For Secure Boot CONFIG_SYS_INIT_L3_ADDR will be redefined and hence + * Physical address (CONFIG_SYS_INIT_L3_ADDR) and virtual address + * (CONFIG_SYS_INIT_L3_VADDR) will be different. + */ +#define CONFIG_SYS_INIT_L3_VADDR 0xFFFC0000 #define CONFIG_SYS_L3_SIZE 256 << 10 -#define CONFIG_SPL_GD_ADDR (CONFIG_SYS_INIT_L3_ADDR + 32 * 1024) +#define CONFIG_SPL_GD_ADDR (CONFIG_SYS_INIT_L3_VADDR + 32 * 1024) #ifdef CONFIG_RAMBOOT_PBL #define CONFIG_ENV_ADDR (CONFIG_SPL_GD_ADDR + 4 * 1024) #endif