From patchwork Tue Jan 9 09:12:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jorge Ramirez-Ortiz, Gmail" X-Patchwork-Id: 857474 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" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dDDgIB2T"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGBkn6NBtz9sNw for ; Tue, 9 Jan 2018 23:48:01 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id BD791C21F9B; Tue, 9 Jan 2018 12:39:58 +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=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, 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 81CE7C2201E; Tue, 9 Jan 2018 12:34:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E3191C22072; Tue, 9 Jan 2018 09:12:42 +0000 (UTC) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by lists.denx.de (Postfix) with ESMTPS id 8FC9AC21F98 for ; Tue, 9 Jan 2018 09:12:42 +0000 (UTC) Received: by mail-wr0-f196.google.com with SMTP id z48so7674772wrz.6 for ; Tue, 09 Jan 2018 01:12:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=zAuMPiQsqtCOBU1vbUwCdf0jvKNVylQBt2xrTCp6vS8=; b=dDDgIB2TOu+kHPd5onncJTzfMH9vC0CJurzVjlLml1Y2MzjS58ss6HndgmT2fxPObE Vs1zDddWOErCtcTkOE+vCXXnWqkXNOj+tqjCX1b2CUxM/OK02yf0BMdyU8S74gvqb26I o3k33zADaipuACrD5ajiNpl18QmRJ9VX5IUO65CTq9rThhTRlSWwv9rj4DAyOD3M5le+ 15OVlqgSqg7pCV6WsyDf0hxU2Agaxqz8Vu+4rHFJ7W5VI/P9gcmCswmNwAkuw80tZdcF a1EkEmQEGx6EoT4FQVacjLjl6ZfrZxliEaMMw1HT4OMnYKhqMecrEL2rAqX59m6XmHfw 6mWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=zAuMPiQsqtCOBU1vbUwCdf0jvKNVylQBt2xrTCp6vS8=; b=OdfCx+ASdx4NRIXpdjmP+8WKEn35xgkSgZ/uzCYmnFzuSWnrdIb0yCk+0sn2YCMcXW asZcXfJEjWzkwVw6SKRNjsLN3M4JXl2q4XeFzu1lBknVvtlPs0kdzwUozLVRSQ6ALBSS HvSjmDLbve5DP78hzCTVA0zuRvlk340hcaWnXIUY+RnypbkLwCb6QEiXgwcmFnQxF4UN scL49Xx9VhcmPGkujvKlXpXAG5GsCrkh1bpAf7BYRKTy0Ug3d4PfRpyuAHrw/OE0/fJ/ VNMSLdWC+TFojEJ/GDlSTiNLKbONMVn4018zzJ1wZap5+3ugGu5kcXj4K6pMcjCkUh77 tIJQ== X-Gm-Message-State: AKGB3mKhx5Lm9tGHxH5hI6htnKmpXx06HJvTr6h5XAsw2gSfIDHR0kpo V44tlw7oYtvZ/vwmGBnJaMI= X-Google-Smtp-Source: ACJfBos2whoaI1h45EV+b0K9WDTO4fokJXjRWLGEpD/aKgnw/cwZhyk5ZpYJbxflo7yP0BZNuNiSNQ== X-Received: by 10.223.129.162 with SMTP id 31mr12816422wra.40.1515489162301; Tue, 09 Jan 2018 01:12:42 -0800 (PST) Received: from igloo.80.58.61.254 (141.pool85-51-114.dynamic.orange.es. [85.51.114.141]) by smtp.gmail.com with ESMTPSA id b8sm18496598wma.2.2018.01.09.01.12.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 01:12:41 -0800 (PST) From: Jorge Ramirez-Ortiz To: jorge.ramirez.ortiz@gmail.com, pbrobinson@gmail.com, u-boot@lists.denx.de Date: Tue, 9 Jan 2018 10:12:31 +0100 Message-Id: <1515489154-6946-4-git-send-email-jorge.ramirez.ortiz@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515489154-6946-1-git-send-email-jorge.ramirez.ortiz@gmail.com> References: <1515489154-6946-1-git-send-email-jorge.ramirez.ortiz@gmail.com> X-Mailman-Approved-At: Tue, 09 Jan 2018 12:34:32 +0000 Subject: [U-Boot] [PATCH 04/07] fdtdec: allow board to provide fdt for CONFIG_OF_SEPARATE 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: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Rob Clark Similar to CONFIG_OF_BOARD, but in this case the fdt is still built by u-boot build. This allows the board to patch the fdt, etc. In the specific case of dragonboard 410c, we pass the u-boot generated fdt to the previous stage of bootloader (by embedding it in the u-boot.img that is loaded by lk/aboot), which patches the fdt and passes it back to u-boot. Signed-off-by: Rob Clark --- include/fdtdec.h | 3 ++- lib/fdtdec.c | 35 +++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/include/fdtdec.h b/include/fdtdec.h index 0fb3e07..4afb9ac 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -990,7 +990,8 @@ int fdtdec_setup(void); /** * Board-specific FDT initialization. Returns the address to a device tree blob. - * Called when CONFIG_OF_BOARD is defined. + * Called when CONFIG_OF_BOARD is defined, or if CONFIG_OF_SEPARATE is defined + * and the board implements it. */ void *board_fdt_blob_setup(void); diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 30ec6b9..cc3dfd6 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1272,6 +1272,28 @@ static int uncompress_blob(const void *src, ulong sz_src, void **dstp) # endif #endif +#if CONFIG_IS_ENABLED(OF_SEPARATE) +/* + * For CONFIG_OF_SEPARATE, the board may optionally implement this to + * provide and/or fixup the fdt. + */ +__weak void *board_fdt_blob_setup(void) +{ + void *fdt_blob = NULL; +#ifdef CONFIG_SPL_BUILD + /* FDT is at end of BSS unless it is in a different memory region */ + if (IS_ENABLED(CONFIG_SPL_SEPARATE_BSS)) + fdt_blob = (ulong *)&_image_binary_end; + else + fdt_blob = (ulong *)&__bss_end; +#else + /* FDT is at end of image */ + fdt_blob = (ulong *)&_end; +#endif + return fdt_blob; +} +#endif + int fdtdec_setup(void) { #if CONFIG_IS_ENABLED(OF_CONTROL) @@ -1285,18 +1307,7 @@ int fdtdec_setup(void) # else gd->fdt_blob = __dtb_dt_begin; # endif -# elif defined CONFIG_OF_SEPARATE -# ifdef CONFIG_SPL_BUILD - /* FDT is at end of BSS unless it is in a different memory region */ - if (IS_ENABLED(CONFIG_SPL_SEPARATE_BSS)) - gd->fdt_blob = (ulong *)&_image_binary_end; - else - gd->fdt_blob = (ulong *)&__bss_end; -# else - /* FDT is at end of image */ - gd->fdt_blob = (ulong *)&_end; -# endif -# elif defined(CONFIG_OF_BOARD) +# elif defined(CONFIG_OF_BOARD) || defined (CONFIG_OF_SEPARATE) /* Allow the board to override the fdt address. */ gd->fdt_blob = board_fdt_blob_setup(); # elif defined(CONFIG_OF_HOSTFILE)