From patchwork Tue Dec 5 05:20:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 844544 X-Patchwork-Delegate: trini@ti.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=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="Lg3js8kE"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3yrVVC6gqmz9s9Y for ; Tue, 5 Dec 2017 16:21:55 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 887D2C21E3B; Tue, 5 Dec 2017 05:21: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_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,T_DKIM_INVALID 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 3812EC21DA5; Tue, 5 Dec 2017 05:21:48 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C7985C21D8C; Tue, 5 Dec 2017 05:21:46 +0000 (UTC) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0061.outbound.protection.outlook.com [104.47.0.61]) by lists.denx.de (Postfix) with ESMTPS id 14613C21C4C for ; Tue, 5 Dec 2017 05:21:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=K2hkn2jseLUrkj3o+U/Zoe4KSWe9cw0LPMH9hwoQfSc=; b=Lg3js8kE7xmuIY4mFJdv4OFBbeo09J88TYcokhCcUiJcBJyFNrEN48JF7SrbaU09sA0IUEXyZsG/TXjNW4TDuLTd9BdwsUaLD2g5kV1pwe4577z9ZvHuhuM8IjlHKFpNDYEw6AL1qGf5bGV94yVUPvn+/JzeY/Fb0tgsMDGjvQg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net (199.59.225.131) by AM5PR04MB3220.eurprd04.prod.outlook.com (2603:10a6:206:7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Tue, 5 Dec 2017 05:21:32 +0000 From: Peng Fan To: trini@konsulko.com Date: Tue, 5 Dec 2017 13:20:59 +0800 Message-Id: <20171205052059.3633-1-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 MIME-Version: 1.0 X-Originating-IP: [199.59.225.131] X-ClientProxiedBy: HK2P15301CA0011.APCP153.PROD.OUTLOOK.COM (2603:1096:202:1::21) To AM5PR04MB3220.eurprd04.prod.outlook.com (2603:10a6:206:7::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9c95a2c6-6116-4fe3-2a89-08d53ba01293 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603286); SRVR:AM5PR04MB3220; X-Microsoft-Exchange-Diagnostics: 1; AM5PR04MB3220; 3:FNx5tz935WI3JGvmLjvsTLXe05U6XtQXmZW16zcodkAWfswmURmicyubfFLfhswEBLHoplPjeZaVse8wTjdDfuB2TQcZmeue4UyfhPnZ9xt6G9moNbuZ/xyvQ0hxV0OiUndbWejtHNIIZ/eI8GSTS2XQ4AA0Xs372A4idD1CogAYL/BhE5LTLgunp1gZkCRvTICCHAmBiq6vIMdQMNXBH/Ql2wQ6itIGe7CUrox7wrLJnhFYpvZENlP/DGY1lag7; 25:q9AeWhtuCEdKVBJdH1Sih3kC4bnMrqmIe890ggGRWgBDV2WSTZ98LK0VtagIooeWtmTOzubz/x0kDlsrszPY9ourBbJDulpigMG+pxan9PDX7XHIq9eoQCEahyIzMNYn+ImeXHCZxK0VXXUxbf/k2yq6ToYyS8ikc/Xl8ufHRImfeQNloQwUsIBPrNZHcKpo9bjOLPypXaKZu7eCqSK2djrX6nkWr/s1mr3jWxXNiW4+W8MTYg88xof43amqgK3omJsG4KD4An1YxzzyLOs33i9nRjpd/rmNsRRWzzof/g+o0xKF/+Fd7p1Q/rJDG8ANq52/R8q2hxiUr0C+RX238w==; 31:RTsKxUNMq207f65vsPmwPLTDjuJek7BdQ/ovBtcx/d9eUwL81tkqEPe+S7vSm9p1eku1JXXVUGdPbKkZxa6akEVOmJ29RHnJsCCtz/W3bn9TmuPuHlDpwayFtCjLDhFQL18YzfXxN4NnPU/3XX+DlnC3DAd7TMsbQq0jtCp9c7xYx9lhZgKHnhIXRFwKz9MFbUs6T7BOty7pIDd8U3vVDiGwnHKMnEiz6WLdTKEdkM4= X-MS-TrafficTypeDiagnostic: AM5PR04MB3220: X-Microsoft-Exchange-Diagnostics: 1; AM5PR04MB3220; 20:2S7JOAnv5UvM64qRlYh9yDqN/qai7KU5dZaWpkgiwTNCOn++35w3RFBFZU78WsLDxuNOkY7V7wYUKXus8HTFQTs4iatPmMQbOPG6+1jNzv4a2NY/bX38qSzB915HJr8rrf0QOHOlEpZyo5brfKbmzCUNab40FkXpOXPRx3PPs0m73E0kFD3RY3E/pJunO2ss/bDPm0P0mrMFPFpzYm9n9/SLaYgsZw3gsfODoSzCtu2eeIQJeub7OV+eyVJhOUsUciy2C1jOCAv+CfWlEh9AiSeeWqjCeeA4z0ls6aNDaVVauSUGUWf3ZXi/MZ0pvB2kZkMEpAebby/ln/k0otYH0SaknrALHsbesthDaV8WNlMXKUNtOjvHStJmTY0qd0d1QB7hA45t8LrUNDzHCVTbgytn0n12bCpuB3JlOI5ULiS/PNa6i1526Z19JR0NNd3VNOUQ8zazXE9wHuDZCDqrD5zOSdz9+Q4BL7KPblnPGVN1KKeTHTkFRaSbk9Ig/v5V X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(31051911155226)(185117386973197)(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231022)(920507027)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(20161123555025)(20161123562025)(20161123560025)(6072148)(201708071742011); SRVR:AM5PR04MB3220; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM5PR04MB3220; X-Microsoft-Exchange-Diagnostics: 1; AM5PR04MB3220; 4:8DU3+mnlZAews9/T7FOzi4E8FKfUqIk/RLNOuC1XQnUbvsEFmFKfItzBnoyGpNh+EwiYUifHVUOJHK9gZLeIhWRHPyY/Kjf6z0mDF/gGXzLYt4gkoo5uQUNStD2MErSkDCRJBakTwVhgr8Q1Bfjw8NM7kaRqniVl4r9RVg7OYdLKeFXfnE4uFIHQBbEsz3TvUezIbOBcMN+HGUS8/V+cb+xE6YRFv8UIQq23Y5XSjXtScPL90XSGO/n9xcmA/hSLKythLnxURxx51/iJz7XHN7CvKzVkmq9LjWYSzKIF+uTereKpEY4S2nsJa992c+5AOZeXer6Xi48jLjgKV0+sYGrFQbdZrYqtGiVRa7hzJdp5FZ5R8PKbKbPD4mUsWTxoAZEVlpZE0Xs9QLm1opL9rHgK0VLzpLG8zND2u2qlRR+6GRPDL0XwQUi0hSNQZVVyfmXIknUZx2a/c1OoytMeDA== X-Forefront-PRVS: 0512CC5201 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(366004)(39860400002)(376002)(346002)(199003)(189002)(6666003)(34040400001)(6512007)(2906002)(25786009)(53936002)(4326008)(6486002)(101416001)(6506006)(68736007)(66066001)(6916009)(39060400002)(47776003)(189998001)(97736004)(478600001)(6116002)(1076002)(3846002)(33646002)(5660300001)(7416002)(2361001)(105586002)(2351001)(106356001)(36756003)(50466002)(86362001)(48376002)(7736002)(316002)(16526018)(50226002)(54906003)(8936002)(16586007)(81156014)(51416003)(52116002)(81166006)(8676002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR04MB3220; H:linux-u7w5.ap.freescale.net; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR04MB3220; 23:HULVNfHHaTyIRnz6lW4RpPx4zrJmikgC6p8cTdT+D?= SD/3qabiA9Kd8mlY9NETqbidXPVFFKrD/aRWIxvOuwtgGdIaX4HZkbYU0AcOSESOEmjLhBLWvZt/EvyhmCUVSBeq2AK1eryctn9vDXmgPYCRrB+al+NazctZjthd9/HHKLW9b3cEnLvXn3XJwVk504jIucWfHNQWtrWOSY5T+687PsEraxLkkBmIawSvNO/MqQc7dW8CwE0KTiioNJCNNZJkAafS8hEIfn9xnLA0Xg1xv4p/JjNcWsyWKVPiYtfp92l2B9jH/EcctwEaLNAI7R5YJ9Zr73OJMPtkCHGnc12CzSbY4z0baFsV2/GNXt7Uwo+50IH3WNoB72KraLqsdD332ACwJgpGxagsc9ltiZs846syeGqBXmamjIILWCrdw1vgDi9UjMqDG4r4Aacz145ncHz7pdeBf2FP0kbHXEwjtWVVvQ25dH9IRGI3FIBXg9vryN1Hy4UtINkBmqX2C1fwyC5YAAr8PNP8om/4wlTnExqDDW8p4W415kNW1OYKJQ4PQGpep/yAbG5RFeth79rrPVZb7slLd56k+MHb4q9istRvvip3Rl/VKDOTM6CL5pY/aIbUnRKrlnWQh5rsvisB+QpHiQexMR+tBmFM5tUIpoWYe7hjofXk/ryQjWwuDP02uE1uTFao7CJZQKZZnJ7yMrLv1MkdQHnHu4P3EHYspX79CNL+WXtxLlygzj2XA4rBWxyBuKcdcZCoJ1P4TqJtZAecGifvz1vi36+9yx6YR/5f+G28jRuyLsERDAIhtSAlZt2fNp7SMRDNwo/Wq8WbO48/JQZ17vIv9M1NfGGC0AOjIWK2+OLdn4nJSIU5dBpIwSnkdBhuyqOz1vHyZVXGAaSEt5Iz8Bxd0YT4EFJmahh0RAKnas5xS2bHb9mFktEdd+G425VGgHMkWrm0VG0XQKoon82avUe/gZsTgYQNZMS8/DK+slWq91gL0CGtmXI5J0NfSx8YdNXZblq15cIJiCPxkAoarUVxeBUA0ArE1aBtJwSQvaSL2vXcMoHwRUNmlVJWIFxRdIFqi3OIQOuTox8j230cLhcu47IrubZQgyObNcUjnMF063uo9A/tBhW6nkAdv89nR7DMGrpBN9DnzngE9yghhS4BLQDLt7QLOWP0BPv9Sz0zNhMRS9tOa8iYIyOt/DyfT5jU8C2Eh1B X-Microsoft-Exchange-Diagnostics: 1; AM5PR04MB3220; 6:j6LX2+rJeaSss+629/5qeDfc2zovAoFVixMSbtEnEox4byYm3rTl15srixGL/zLesvPtk+kb04o7+gZkSAhpnu4WKnP7/277OXiKpHpcopRB5CII9auPkm8w+U4YQuiTm09XNdBmhMuHasYC5Wfz40k+5fQ8BImyr1NeXSjKH2ffHu+7XpyglM2fiSda67on7Bw+JMxLT+J78trI2WoZe4nflTunaBMhyzzOEzctuYkkXOgtCe/m8+6vhcyWjfQoCnX7ql2yCLeyLH8i0DxHm1hWMlVsd3QpUWh/nHtTkWJ3gEtlM3d/wvW6LqKpwnRx3AVnYhfHUOl4zx4r/PkXj2TxQ8ijIKIEVx6sJXvJE5Y=; 5:7DpLjvLsj1nUaogMYsNfxoVYAbX8KrbEWRpbsnJEDXARfLV4rQT14NLTa+LZu3wsQCV9z1cY2RVvcssA0AMxnva7dgk6iOOFHyBnwuJZ8d4u0LgqS9XYZ0qFFuIpaJ84cBwfyX6EwKiKYxxNsDG+wyKDXSKa28KxPG2SiwGPark=; 24:kWVftOEj2e1fnqAZaRDfoxwl1TgI3dmtul3+Ib2IBg9r0RJFLR9sWDdKEflkWU8Wc18LubVzGt9i76Xo5khrG9us70kJYd6S6k4ARakuY0s=; 7:ZPyq71f7d1U3DLbTe3+1XCV3fb2y/YeltfyIwlPGUjYYFdf+b1TPRMfopEHGFT6uXrxZT29NdkDec0E+grTvh6eGa1c9+61FHEKNV3ZDt3i01gA/OflvnU1WzAei/pATa5hC1hVyyAONrnO5Sm2T0oGSEP1KyjBcvHc8rZlW4sdGLO6ttZAeE/22z5lJP4rxEszQ/WCQ/VtxO8eYDUbzftOqIlDSVmpU/moh/1bW631iDfF2m5ZPbWJQv7kRlI1E SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2017 05:21:32.7263 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9c95a2c6-6116-4fe3-2a89-08d53ba01293 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR04MB3220 Cc: Andre Przywara , Pantelis Antoniou , u-boot@lists.denx.de, Rick Altherr , "Cooper Jr., Franklin" Subject: [U-Boot] [PATCH V2] SPL: Add FIT data-position property support 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" For external data, FIT has a optional property "data-position" which can set the external data to a fixed offset to FIT beginning. Add the support for this property in SPL FIT. Signed-off-by: Ye Li Signed-off-by: Peng Fan Reviewed-by: Simon Glass Reviewed-by: Tomas Melin Cc: Pantelis Antoniou Cc: "Andrew F. Davis" Cc: Igor Grinberg Cc: "tomas.melin@vaisala.com" Cc: Kever Yang Cc: Andre Przywara Cc: York Sun Cc: Lokesh Vutla Cc: "Cooper Jr., Franklin" Cc: George McCollister Cc: Tuomas Tynkkynen Cc: Jean-Jacques Hiblot Cc: Rick Altherr Cc: Tom Rini Reviewed-by: Lokesh Vutla Reviewed-by: York Sun --- V2: Add review tags Per York's comments, add a piece text in source_file_format.txt. common/image-fit.c | 25 +++++++++++++++++++++++++ common/spl/spl_fit.c | 11 +++++++++-- doc/uImage.FIT/source_file_format.txt | 3 ++- include/image.h | 3 +++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/common/image-fit.c b/common/image-fit.c index 7f17fd1410..b785d8a36e 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -806,6 +806,31 @@ int fit_image_get_data_offset(const void *fit, int noffset, int *data_offset) return 0; } +/** + * Get 'data-position' property from a given image node. + * + * @fit: pointer to the FIT image header + * @noffset: component image node offset + * @data_position: holds the data-position property + * + * returns: + * 0, on success + * -ENOENT if the property could not be found + */ +int fit_image_get_data_position(const void *fit, int noffset, + int *data_position) +{ + const fdt32_t *val; + + val = fdt_getprop(fit, noffset, FIT_DATA_POSITION_PROP, NULL); + if (!val) + return -ENOENT; + + *data_position = fdt32_to_cpu(*val); + + return 0; +} + /** * Get 'data-size' property from a given image node. * diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 72ae8f4c50..cc07fbc8a0 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -173,6 +173,7 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector, int align_len = ARCH_DMA_MINALIGN - 1; uint8_t image_comp = -1, type = -1; const void *data; + bool external_data = false; if (IS_ENABLED(CONFIG_SPL_OS_BOOT) && IS_ENABLED(CONFIG_SPL_GZIP)) { if (fit_image_get_comp(fit, node, &image_comp)) @@ -189,9 +190,15 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector, if (fit_image_get_load(fit, node, &load_addr)) load_addr = image_info->load_addr; - if (!fit_image_get_data_offset(fit, node, &offset)) { - /* External data */ + if (!fit_image_get_data_position(fit, node, &offset)) { + external_data = true; + } else if (!fit_image_get_data_offset(fit, node, &offset)) { offset += base_offset; + external_data = true; + } + + if (external_data) { + /* External data */ if (fit_image_get_data_size(fit, node, &len)) return -ENOENT; diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt index 6f727a1e8a..88663a161d 100644 --- a/doc/uImage.FIT/source_file_format.txt +++ b/doc/uImage.FIT/source_file_format.txt @@ -288,7 +288,8 @@ In this case the 'data' property is omitted. Instead you can use: The 'data-offset' property can be substituted with 'data-position', which defines an absolute position or address as the offset. This is helpful when -booting U-Boot proper before performing relocation. +booting U-Boot proper before performing relocation. Pass '-p [offset]' to +mkimage to enable 'data-position'. Normal kernel FIT image has data embedded within FIT structure. U-Boot image for SPL boot has external data. Existence of 'data-offset' can be used to diff --git a/include/image.h b/include/image.h index e9c18ce403..a128a623e5 100644 --- a/include/image.h +++ b/include/image.h @@ -887,6 +887,7 @@ int bootz_setup(ulong image, ulong *start, ulong *end); /* image node */ #define FIT_DATA_PROP "data" +#define FIT_DATA_POSITION_PROP "data-position" #define FIT_DATA_OFFSET_PROP "data-offset" #define FIT_DATA_SIZE_PROP "data-size" #define FIT_TIMESTAMP_PROP "timestamp" @@ -968,6 +969,8 @@ int fit_image_get_entry(const void *fit, int noffset, ulong *entry); int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size); int fit_image_get_data_offset(const void *fit, int noffset, int *data_offset); +int fit_image_get_data_position(const void *fit, int noffset, + int *data_position); int fit_image_get_data_size(const void *fit, int noffset, int *data_size); int fit_image_hash_get_algo(const void *fit, int noffset, char **algo);