From patchwork Thu Jul 15 17:21:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1505830 X-Patchwork-Delegate: sr@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.a=rsa-sha256 header.s=default header.b=CTvTEF/c; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GQh434gKtz9sRN for ; Fri, 16 Jul 2021 03:21:23 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D6D43829CD; Thu, 15 Jul 2021 19:21:14 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="CTvTEF/c"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2D088829E7; Thu, 15 Jul 2021 19:21:11 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail.nic.cz (lists.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 16D8181D6C for ; Thu, 15 Jul 2021 19:21:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=marek.behun@nic.cz Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:8747:7254:5571:3010]) by mail.nic.cz (Postfix) with ESMTPSA id 9FBC1140CB2; Thu, 15 Jul 2021 19:21:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1626369667; bh=4MqTeJANPKM8NqvdDcEi24oudw7QVJq8VN7WCNA3XgQ=; h=From:To:Date; b=CTvTEF/cPEgJ90HVrXSkOZGUF7aVbak4Bc6pUCPdEmpgFPJRYvqTAsF2D8m+eS/PK d/+nzb2qIQSIb5XfZtDGOMO1VtaiGvFlVAqyNQ+0cbdZ0GLqsNvVgpRePn4GLazrmN B0LOubEMPI4gQ3JNHxS/xrBiLmSBPlarsVm1PLpw= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: Stefan Roese Cc: u-boot@lists.denx.de, pali@kernel.org, =?utf-8?q?Marek_Beh=C3=BAn?= Subject: [PATCH u-boot-mvebu 1/2] ARM: dts: armada-385-turris-omnia: add `u-boot-env` NOR partition Date: Thu, 15 Jul 2021 19:21:01 +0200 Message-Id: <20210715172102.28549-1-marek.behun@nic.cz> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Specify a separate partition `u-boot-env` for U-Boot's env settings for the Turris Omnia board. Do this only in U-Boot's specific DTS. We do not want to do this in Linux' official DTS, because Omnia's stock U-Boot stores env at a different address, and there are still boards with stock U-Boot. In a subsequent patch will add board code that fixes Linux's DTB before booting Linux. Signed-off-by: Marek BehĂșn Reviewed-by: Stefan Roese --- arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi b/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi index af0655daaa..3ff76c9462 100644 --- a/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi +++ b/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi @@ -43,6 +43,17 @@ spi-nor@0 { u-boot,dm-pre-reloc; + + partitions { + partition@0 { + reg = <0x0 CONFIG_ENV_OFFSET>; + }; + + partition@f0000 { + reg = ; + label = "u-boot-env"; + }; + }; }; }; From patchwork Thu Jul 15 17:21:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Beh=C3=BAn?= X-Patchwork-Id: 1505831 X-Patchwork-Delegate: sr@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.a=rsa-sha256 header.s=default header.b=HFgwf6E5; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4GQh4G2JzTz9sPf for ; Fri, 16 Jul 2021 03:21:34 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id F3D3981FC6; Thu, 15 Jul 2021 19:21:25 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=nic.cz header.i=@nic.cz header.b="HFgwf6E5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7C37B829E7; Thu, 15 Jul 2021 19:21:15 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail.nic.cz (mail.nic.cz [IPv6:2001:1488:800:400::400]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 4730381FC6 for ; Thu, 15 Jul 2021 19:21:08 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=nic.cz Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=marek.behun@nic.cz Received: from dellmb.labs.office.nic.cz (unknown [IPv6:2001:1488:fffe:6:8747:7254:5571:3010]) by mail.nic.cz (Postfix) with ESMTPSA id CD167141FCB; Thu, 15 Jul 2021 19:21:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nic.cz; s=default; t=1626369667; bh=bdcyglLWx5C1vWZb+FzmgDOYUGjoj5+2jk/PVXQEi90=; h=From:To:Date; b=HFgwf6E5AGFYho7BhC42vai8w9tVVdbmumRPrID50lQd/1yx2RmLmz+352noUIgjm GtgLBtC5UFqiFUweocom20Ak7Dnqdl8XtN1KKwtOh/+WlxdKDZGH42e28GN2hbCSA7 e66RNHQF97yRKnUSUgVsJvBnPwA0gyzkDjsTM0jI= From: =?utf-8?q?Marek_Beh=C3=BAn?= To: Stefan Roese Cc: u-boot@lists.denx.de, pali@kernel.org, =?utf-8?q?Marek_Beh=C3=BAn?= Subject: [PATCH u-boot-mvebu 2/2] arm: mvebu: turris_omnia: fixup MTD partitions in Linux' DTB Date: Thu, 15 Jul 2021 19:21:02 +0200 Message-Id: <20210715172102.28549-2-marek.behun@nic.cz> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210715172102.28549-1-marek.behun@nic.cz> References: <20210715172102.28549-1-marek.behun@nic.cz> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean Fixup SPI NOR partition nodes in Linux' device tree prior booting Linux. Linux' devicetree does not contain "u-boot-env" partition and we do not want to add it there because the address is different between stock U-Boot and current upstream U-Boot. Instead we add code that recreates partition nodes from scratch according to how U-Boot sees them (which is defined in U-Boot's device tree). Signed-off-by: Marek BehĂșn Reviewed-by: Stefan Roese --- Hi Stefan, the code of the fixup_mtd_partitions() function I am adding with this patch is generic enough to be potentially used on other boards (for example EspressoBIN's board code does something similar, so it could use this function). Indeed I want to generalize it, since there are multiple boards fixing partition nodes in DTS prior booting Linux and there is already code for this in common/fdt_support.c. The problem is that that code does not work with DM_MTD, but rather with the obsolete MTDPARTS and several boards use it. I want to convert those boards into using this new API, but this will take some time and should be done via u-boot-spi tree. So please for now merge this code via the mvebu tree. In the meantime till this is merged into Tom's tree I shall be working on converting those other boards that use fdt_fixup_mtdparts() to use device tree for defining MTD partitions so that we can remove fdt_fixup_mtdparts(), move this new code into common/fdt_support.c and covert those boards to use this new code. --- board/CZ.NIC/turris_omnia/turris_omnia.c | 90 ++++++++++++++++++++++++ configs/turris_omnia_defconfig | 1 + 2 files changed, 91 insertions(+) diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c index 8b2f94f959..a7e5f56eed 100644 --- a/board/CZ.NIC/turris_omnia/turris_omnia.c +++ b/board/CZ.NIC/turris_omnia/turris_omnia.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -31,6 +32,8 @@ DECLARE_GLOBAL_DATA_PTR; +#define OMNIA_SPI_NOR_PATH "/soc/spi@10600/spi-nor@0" + #define OMNIA_I2C_BUS_NAME "i2c@11000->i2cmux@70->i2c@0" #define OMNIA_I2C_MCU_CHIP_ADDR 0x2a @@ -557,3 +560,90 @@ out: return 0; } +#if defined(CONFIG_OF_BOARD_SETUP) +/* + * I plan to generalize this function and move it to common/fdt_support.c. + * This will require some more work on multiple boards, though, so for now leave + * it here. + */ +static bool fixup_mtd_partitions(void *blob, int offset, struct mtd_info *mtd) +{ + struct mtd_info *slave; + int parts; + + parts = fdt_subnode_offset(blob, offset, "partitions"); + if (parts < 0) + return false; + + if (fdt_del_node(blob, parts) < 0) + return false; + + parts = fdt_add_subnode(blob, offset, "partitions"); + if (parts < 0) + return false; + + if (fdt_setprop_u32(blob, parts, "#address-cells", 1) < 0) + return false; + + if (fdt_setprop_u32(blob, parts, "#size-cells", 1) < 0) + return false; + + if (fdt_setprop_string(blob, parts, "compatible", + "fixed-partitions") < 0) + return false; + + mtd_probe_devices(); + + list_for_each_entry(slave, &mtd->partitions, node) { + char name[32]; + int part; + + snprintf(name, sizeof(name), "partition@%llx", slave->offset); + part = fdt_add_subnode(blob, parts, name); + if (part < 0) + return false; + + if (fdt_setprop_u32(blob, part, "reg", slave->offset) < 0) + return false; + + if (fdt_appendprop_u32(blob, part, "reg", slave->size) < 0) + return false; + + if (fdt_setprop_string(blob, part, "label", slave->name) < 0) + return false; + + if (!(slave->flags & MTD_WRITEABLE)) + if (fdt_setprop_empty(blob, part, "read-only") < 0) + return false; + + if (slave->flags & MTD_POWERUP_LOCK) + if (fdt_setprop_empty(blob, part, "lock") < 0) + return false; + } + + return true; +} + +int ft_board_setup(void *blob, struct bd_info *bd) +{ + struct mtd_info *mtd; + int node; + + mtd = get_mtd_device_nm(OMNIA_SPI_NOR_PATH); + if (IS_ERR_OR_NULL(mtd)) + goto fail; + + node = fdt_path_offset(blob, OMNIA_SPI_NOR_PATH); + if (node < 0) + goto fail; + + if (!fixup_mtd_partitions(blob, node, mtd)) + goto fail; + + return 0; + +fail: + printf("Failed fixing SPI NOR partitions!\n"); + return 0; +} +#endif diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig index f860cf5e7d..5f7b1a67a2 100644 --- a/configs/turris_omnia_defconfig +++ b/configs/turris_omnia_defconfig @@ -23,6 +23,7 @@ CONFIG_SPL=y CONFIG_DEBUG_UART_BASE=0xd0012000 CONFIG_DEBUG_UART_CLOCK=250000000 CONFIG_DEBUG_UART=y +CONFIG_OF_BOARD_SETUP=y CONFIG_AHCI=y CONFIG_DISTRO_DEFAULTS=y CONFIG_FIT=y