From patchwork Mon Aug 7 23:16:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: York Sun X-Patchwork-Id: 798954 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xRD3y2cbmz9s72 for ; Tue, 8 Aug 2017 09:18:38 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 26CE2C21EF7; Mon, 7 Aug 2017 23:17:52 +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, RCVD_IN_DNSWL_NONE, 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 12F88C21EEE; Mon, 7 Aug 2017 23:16:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 00058C21EEB; Mon, 7 Aug 2017 23:16:50 +0000 (UTC) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0064.outbound.protection.outlook.com [104.47.33.64]) by lists.denx.de (Postfix) with ESMTPS id 00DAAC21EB9 for ; Mon, 7 Aug 2017 23:16:46 +0000 (UTC) Received: from MWHPR03CA0021.namprd03.prod.outlook.com (10.175.133.159) by BLUPR0301MB2114.namprd03.prod.outlook.com (10.164.22.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1304.22; Mon, 7 Aug 2017 23:16:43 +0000 Received: from BN1BFFO11FD036.protection.gbl (2a01:111:f400:7c10::1:158) by MWHPR03CA0021.outlook.office365.com (2603:10b6:300:117::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10 via Frontend Transport; Mon, 7 Aug 2017 23:16:43 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; ti.com; dkim=none (message not signed) header.d=none;ti.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 BN1BFFO11FD036.mail.protection.outlook.com (10.58.144.99) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1304.16 via Frontend Transport; Mon, 7 Aug 2017 23:16:42 +0000 Received: from oslab-l16.am.freescale.net ([10.214.84.13]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v77NGXMp009887; Mon, 7 Aug 2017 16:16:41 -0700 From: York Sun To: U-Boot Mailing List Date: Mon, 7 Aug 2017 16:16:25 -0700 Message-ID: <1502147786-8269-5-git-send-email-york.sun@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502147786-8269-1-git-send-email-york.sun@nxp.com> References: <1502147786-8269-1-git-send-email-york.sun@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131466214028737023; (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)(39450400003)(39850400002)(39380400002)(39840400002)(39410400002)(39860400002)(39400400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(54906002)(33646002)(48376002)(8676002)(356003)(8656003)(626005)(4326008)(36756003)(53936002)(38730400002)(110136004)(5003940100001)(50466002)(85426001)(6916009)(2950100002)(81156014)(81166006)(68736007)(189998001)(6666003)(77096006)(86362001)(50986999)(76176999)(498600001)(106466001)(50226002)(104016004)(47776003)(105606002)(305945005)(5660300001)(97736004)(2906002)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0301MB2114; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD036; 1:5DurdbqaZ2Bkjt3EbYN5vA5haDSim4dHLoJTw0Y3SjgQszTNmlOhuTWKzRBOoj2m8ZFL8hWitpotESQ3i4CxoIQQqOnAPoNY2lUHxRE70sYuHYhbmz4/KGaGGyFR0ydYa5Bnrgbp6Mh9zVAwr8WRxiTwyj4cL6e5P8kni+MpRYlWopq4srXjdzEVAd1czw44lBxoVzne5uE4SE1PPxDXBQadJf+m9qiZOyGG+vZe3Ojd4YMoupAr8WL4GMSjy2P8+vpQSCVZedv0iIS7wfVNqf0g2bitBzpV7W1ycwGC8jQLM+wb68WrPX3a2CuiqN+y35QBTh7D+KmLg52JG8j3QTR8cVR2qDvKBBg2M4E/stx5bdcXsCmaaBUdGDd1Wss86sV1zpUhuceugSQbECUqXpyUoe5sm5vv8z/4VLtWqH/hUkO8A2eMD2cgOUYUo54rs96r/sBukQMFPfz+9X0VFs0w/naDOecCCdGYTV6i7mieSdyH22XZsN66F/L8TlZuiWQRyHku2d4dWIfLw4WmNTghbgnwZWA7VVLXCDl9aS7YFwKyz/XB8mE2kh+SpU7h3McQTSSWnJ2ZLmRh+M9ED3/7XfitisOZ1MPmr1pJ918L8xgPC1jzqMVOiwfQECviAQGURBRyrq+i1YnlImPBt/db09/NRUDQi7yiVeoS62qQ0e/avZhcMg3Qk+hHV2dVIN6gkLPaHYqU3vrBL/fHCPSOxOE6X+O/eYMIFHAdGGN5Cmx4Fj0pPqtzJEC48CMAaOzvAEvWGNQ5a3hWBnyurZixFMHAR9dU+JUndze3NV0Dbst/1QZSaJj1c1wVK/ZOm0CaGsxokCIHyYDNxqsO4e1DHpuxFegQpMPiQre9RDbreyN/x54JPBk7DMRVLv8C MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3ebfb188-5016-4c1d-989f-08d4ddea5d9a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BLUPR0301MB2114; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0301MB2114; 3:RfqsuraMWjpSeIMjBXDJj3QKPPsP0Y3OI3LKVmDW3Uv8QlWSfy48mR/SfJwMwzfOi6Bf6r+Yj+CvWkKxdch3akkxu247ZfqmFMVrIROKmyROZKLNCPtTVQshSzz9bTvfMDwvF6A/RNKmE8VzoecbFrQ+z1pgNM1XHHwHWZHgE3f8ptcTeRE9XuuJqkVoStQ+qzlS3pr0HDKnufuoZulGQJuT2GP/7OK3hDCYVh1vxVBoQZSwzL4727Q7gY7vJMRRcVB5UMyC96Y38cpDRo0c4MMgFuaOOajgsm5zF4Zypj9h1gk69JMHEMVd+7aM+ZF904ohvC+c4kmpl4fSHUHRKfMTVRzbiE4evNSCczJBHC4=; 25:hzlD13450P32no8sYJxodGU4xNbnlE12NG6cmMmIPewgAhi3n5LyTeDXuG374kxpz51G9+6vNYygCl8ts/4hgiza4/zsyuWtvTJxSSAgb8Mx9DUaVmE2mNMjyBNm+ogow4GqPZmTbA9e/WLpWjs4jQ8yIt+QBBa3uFTp+j9IV1lCw7L5iLPTbcKmhbvU+RlHi34aKr5gUUNpyQUVxGGHpkf9ZJFXvrB96xHxM8pGF1F7nrNnDhiiNJJv43yN0yTXSG/Sg9UUI3zURRutaWuJl7oL9SnkO4fbqULFovXZuajlONxvofNVIvDQFFlXb5N1y7LXj6O94Lx0HyfLmIMT2w== X-MS-TrafficTypeDiagnostic: BLUPR0301MB2114: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0301MB2114; 31:eq9iCk9KkiurezZEMpdb9KKpsGOkC2HeLqti/zTouz5dB3HEbBZ8uXFWfso1vCJDwvjqoDQXk2rtRdzaZT03AK+AMLIHHzNdNCWv4F4NKb2IXeQExvA7UnlybmDk3nCiKBN5A5jM0JhPJ+HsoCiaVdyLi5fvXD0tSsQFbmGnuPpRpMSq8Srz/qurAUIB+a/BS5q4MWReQFf57LyQ89bo+/ttzwpEbBAsGsqgY7tP80w=; 4:ZnuGsSdxE7P06L1daI/YJQsZ62ThHrfbgW9yfmRDaCoImacJlQ6VoufF5dKTEczaHNBX3ehmya0edq0NsgWNtOTOREP/hc0KwPR4Y1FN1wXOZ/LBdTp1eJWy7SfiOmlm+6N1Jjx77AnJXAgfUQsNKp5rlC2t+p5MytafvIH10h49cQyE8WYZsc0ia1qUY7eDQcokDLMZ4z6tIVDOi1xZ1+PKQIxZJJgKJdXinQsOq5S8IwxS+phECXLAcZUmS9VF28tk4EhKaqpF3KCI32sSdcw74RdLDPSKadiZwnufQGs= 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)(601004)(2401047)(8121501046)(13018025)(5005006)(13016025)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123559100)(20161123556025)(20161123565025)(20161123561025)(20161123563025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0301MB2114; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0301MB2114; X-Forefront-PRVS: 0392679D18 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0301MB2114; 23:CjYVsxG2WCGiW2AUpVD0vyIyiy0gSg1pdnJpsVP?= =?us-ascii?Q?C8GarbKy51HlP8CqKY9el+BG0Wr2ZHPGBksJKdEodEnkHRO2MP3BgY1o+/mp?= =?us-ascii?Q?1px879ynXmvJIARMmevImi96s/Dr2VOdEPSuJoEaFqbSc7nF1tTwAmqmB7kv?= =?us-ascii?Q?vf+xzf86XBm//V9O1JvQ9m14PDb1mKOC7La1lkUSdBCwSgBgIx7sWKFpgNF6?= =?us-ascii?Q?y2Ne5B5sVtKdzcD5OcD3dGq/JdPVqqpTkv/AqInE6NOCF3ReJG1ts5ppK8Cp?= =?us-ascii?Q?Wydo3RSrMLPI4LfaFu+ruznfeh8Dx91eGiYUONs1dSFqvL6C6RHY4IWe7MGQ?= =?us-ascii?Q?sQWbxpOp/m8MgYRi3UnyGGB/afT9KdmFpTjpKoVRDULVSpSDcHrCA8qCOsXR?= =?us-ascii?Q?lH1tlkFallt+oMm2fI9DC/G3u9PGIOSyfOCqJCTBAs/Xk8nKw3FFzUPXtY28?= =?us-ascii?Q?UnfzSeeGC8p49wnjIo91jvtVxM6ytlyxE5AqFd6Hpn2zcyIVU5FWSwriCGJH?= =?us-ascii?Q?bNvtijzuClsc++tXxFXvCqkunp6j/NIHcWLrYN9+GbXvKXnn9NVqvHpR0BgZ?= =?us-ascii?Q?vUvTQfksFeNJWV3MYl2Edd2Q2aYBKAqOGkXrWopXml4DtGaDvgBcjiU3u+iP?= =?us-ascii?Q?Snaey5vROcBIbyXzT/cTBpyhW58krq+WsYiOUbDT4+fVyhaFp2lkgf76c2Ef?= =?us-ascii?Q?J/t0mThnDHsvuCmQp+3UmZH45hd3Q/63V7y3ZuJ2LlwGuzFZQ4qJUpKGwlxN?= =?us-ascii?Q?NJFTt7nLeWzL3KH1TfHceuzE3fg4xkqTRbgtX8ea6Hj7lt/Bj8n6l878T54j?= =?us-ascii?Q?kEdFZiaxwyFiKbkrKVKEKQ3dAOM+VdmsQLvNqCNS+MwIIbd3w9XDzN/6s19k?= =?us-ascii?Q?H/9JOfXxl+B7ucY3f3ZWlD7hwp2hnRHdea6xW5mkNnZdYVh/EzEtcnz4Rz2x?= =?us-ascii?Q?qeTU17YJ9eWXJRspe2j8BocP3fRQPL/nCrH4kZetMUS4JgyXW4fsa4YyKDlr?= =?us-ascii?Q?xjaOW+dlMpCffLM2zvI9SuHvb5vuDzIJj5XxJF4PF/PKS+PTZt/Q02ELd5Dk?= =?us-ascii?Q?aJ7Cl2RguFzZyJWnEeed+FAS7DOJZBHeIEDsswdvxEgzeYc1j9KfyyeY6anr?= =?us-ascii?Q?MKv3ldu4wl5dh3ATGibyXbpQpIJShbIyTzssD4cZ7BBYZmlynrvRUNgr3j3P?= =?us-ascii?Q?IQV2oObYJN0eqIlqF1zTcqxrhVRKqbp6EiKoJp0aGvrGrpzk4OonxsEO3KJT?= =?us-ascii?Q?UUSF8eqpOFJrPqQoZAycUXl9c8PYD05riKdqVq9pV?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0301MB2114; 6:B6Ou3G6exCqmEp2nVIGRNdX5zRo/elkizImnfsDZpqY3BBz1mC1aGbs7Cmks9dFne1LrFxpVegBRdRvidjNUFWVOvxMSLeiD5iR2wWkRNMZ2PH4EERnTRaKg9hsW50wHNVlkoH8cqjoCb7A0N2L8CECkjV0kF0lSnJL+MK4J4Gf1gcpMhvnmNGOEBt97KhTN65eBVZwLJrsA3Z+St29CpyBx1d1ebpRTJ5M593uNKXb303umabaXoL61xaFU3Dxy1IjN9KunL9MwJXlm7er5XokH6KT60U9CIKgwmAPbuQytwZIlHmgFM2XbCAccUHJf5oMMT7JXC5VTZGaHAvBizA==; 5:AKN6syMQb2ZNiLU38f7sQXfEjt704mkClo8CLJ0BykvF9IKIJ3ftZrUDqAD1vta0hZWDkFgiz2vKOHWKXL5Y/FhIQzJVS3zr/uOUqBfQgAUnQ0vSb2q+QlygWBOl3FWqDfV0ydapGTqCemsOLHYG+g==; 24:tXdFu+RFde4GsF4Qse2Cg9jLKKb5N9wmfdCOl4dlqAC594zx5QjydBIxQDuIJDhEQyePSLtfntL7O2qit+ZBJmeoTPnvr3Yb1OBMAJMCRLo=; 7:beYiK+ZGu03tyy8KFQ+VGMr5MYY/g0i2Wp+htg5zAbkdtCT9OkPTpLyinfrr0HcGLApzijpzhAKe9akSPqugJEfWdLM+Mf8kh4PWTFy1xWSnRwNRm+eUM7imDTtXprFasT7BQQFwjmQpUMDll6O9esoSAbi+TN+qfElc+IMPS74Eu2PdxQV2ysGO4csouv2mV54D7RXKQqeP1VJa4W0VSbXhOgz+XANKgD8lsy2yae8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 23:16:42.6865 (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: BLUPR0301MB2114 Cc: Andre Przywara , Lokesh Vutla , "Cooper Jr. Franklin" Subject: [U-Boot] [PATCH v2 4/5] spl: fit: Support both external and embedded data 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" SPL supports U-Boot image in FIT format which has data outside of FIT structure. This adds support for embedded data for normal FIT images. Signed-off-by: York Sun Reviewed-by: Tom Rini --- Changes in v2: Rebase on top of "SPL: FIT: factor out spl_load_fit_image()" by Andre Przywara common/spl/spl_fit.c | 52 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 23f85d2..0de4f40 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -128,13 +128,15 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector, void *fit, ulong base_offset, int node, struct spl_image_info *image_info) { - ulong offset; + int offset; size_t length; + int len; ulong load_addr, load_ptr; void *src; ulong overhead; int nr_sectors; int align_len = ARCH_DMA_MINALIGN - 1; + const void *data; #if defined(CONFIG_SPL_OS_BOOT) && defined(CONFIG_SPL_GZIP) uint8_t image_comp, type; @@ -149,28 +151,40 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector, debug("%s ", genimg_get_type_name(type)); #endif - offset = fdt_getprop_u32(fit, node, "data-offset"); - if (offset == FDT_ERROR) - return -ENOENT; - offset += base_offset; - length = fdt_getprop_u32(fit, node, "data-size"); - if (length == FDT_ERROR) - return -ENOENT; - load_addr = fdt_getprop_u32(fit, node, "load"); - if (load_addr == FDT_ERROR && image_info) + if (fit_image_get_load(fit, node, &load_addr)) load_addr = image_info->load_addr; - load_ptr = (load_addr + align_len) & ~align_len; - overhead = get_aligned_image_overhead(info, offset); - nr_sectors = get_aligned_image_size(info, length, offset); + if (!fit_image_get_data_offset(fit, node, &offset)) { + /* External data */ + offset += base_offset; + if (fit_image_get_data_size(fit, node, &len)) + return -ENOENT; - if (info->read(info, sector + get_aligned_image_offset(info, offset), - nr_sectors, (void*)load_ptr) != nr_sectors) - return -EIO; - debug("image dst=%lx, offset=%lx, size=%lx\n", load_ptr, offset, - (unsigned long)length); + load_ptr = (load_addr + align_len) & ~align_len; + length = len; + + overhead = get_aligned_image_overhead(info, offset); + nr_sectors = get_aligned_image_size(info, length, offset); + + if (info->read(info, + sector + get_aligned_image_offset(info, offset), + nr_sectors, (void *)load_ptr) != nr_sectors) + return -EIO; + + debug("External data: dst=%lx, offset=%x, size=%lx\n", + load_ptr, offset, (unsigned long)length); + src = (void *)load_ptr + overhead; + } else { + /* Embedded data */ + if (fit_image_get_data(fit, node, &data, &length)) { + puts("Cannot get image data/size\n"); + return -ENOENT; + } + debug("Embedded data: dst=%lx, size=%lx\n", load_addr, + (unsigned long)length); + src = (void *)data; + } - src = (void *)load_ptr + overhead; #ifdef CONFIG_SPL_FIT_IMAGE_POST_PROCESS board_fit_image_post_process(&src, &length); #endif