From patchwork Tue Oct 29 15:47:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Maciej Nowak X-Patchwork-Id: 2003844 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=I4YS3cA7; dkim=fail reason="signature verification failed" (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=desiato.20200630 header.b=atTa3SGN; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=terefe.re header.i=@terefe.re header.a=rsa-sha256 header.s=default header.b=fO5oy5al; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XdHZd3BMlz1xwn for ; Wed, 30 Oct 2024 04:39:53 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CevX6Qj1p44s1fYCvjcGUToWwkp9K4I7xKhGssSE2RM=; b=I4YS3cA75ts9Ug /eExhvJ6aYwn15WS1y9OqTb1yqS2kreb1bHCvRUk4DXYeM0cGePbsv6Q54KnkJtNjn3k6PRgVovAT Ru94HjCGJYrkmpLh9H/Pv7pr7vwgw6lfypl2pCWGAecDyaOFAH1PGtLT+eKK55gFB2B/aFjGzBLDL xPGuZDny4b1f0B9oqo93vHy7qE7Ln9imhe61imhV7vhS0J4d1Dq8Bs1IsIJbYDOIF55hE1ZkMaTQ2 +hy0Qd3DN1+IIUBHH2R1dLIjq8sGDsMAB7AyCn8LQj/vnpX1dZon8Ro+Z68RkzjxmHFmBTFyw1vYP WS91opmdD/vXtOsPLHFw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qB1-0000000FJyl-0fQi; Tue, 29 Oct 2024 17:38:43 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5ooz-0000000F4nR-18oC for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=E8IJf3cO09uypk4zZm/4aP/PIQrv+p+grceN8vL12qA=; b=atTa3SGNYi+34AWv7g8PYdNhAL LiQn462XP4tnn0XboAVG8F2aA74zUbBNL9i30yomrpJFEeDynwQlK6XQL0IS5QxCB1kXB27QOpaXG 2PUo2tAjvPLHGo2TejdWREVDxub4a/SovLGwz+ba06Tnkq6WIFk4GiOtkINR7ZYIRXvBR6JiwjcPe DhCkVPaSoKWjVuRHIHmG8tFDmxeQs8GWPPLue9n8tddqJ698ng9hhzDvnFk8cVprPF5SHrqugPIB/ Mh2FDCPCjFydz0looXzUW02Pfd6K62mskHqUPoHKyMvmGPsMNyXALg+RzVSm24pMLURqspA34BIFv ayDWQSLw==; Received: from terefe.re ([5.255.96.200]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oou-00000009wmV-3Pzo for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:51 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id E493320310; Tue, 29 Oct 2024 17:11:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218304; bh=EC9iwEL1j8eC2/ps3rajv3WDVz6gpduFFEEc7z2a+ZM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fO5oy5alnsMonz2zJaH3Fc8+xan/gtYLOOWptXQGRp60mpH+houKJ86UMJmBVSYit Tb6BgJWWvBkLDcZawA9Jjpr7zrqC9NkFeUzhkUeSl7K46AG9kO/bxGV20HR7eZpbRT O2j58AeGMrekqc/iEkW9j8dVXWWit7TCo9tFUFl1We7ds6/89+fWj2sdZioa74siJQ 0EXeHSq9aOguJTkv8tg5Gw7ttdX1J6uBy3ZgwCvaKFfWiuLM4Vy5O2HO0EWdqV2+yu V8ZApBgm84Ol36ZmNFISSkwxn7o/moecTzyPZtqH67AaL0RGIofdJ6SHm51o6VuM92 XA7Jl8U5/u7dg== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 08/14] uboot-tegra: build NVIDIA Jetson TX1 DevKit image Date: Tue, 29 Oct 2024 16:47:01 +0100 Message-ID: <20241029161046.110403-9-tmn505@terefe.re> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241029161046.110403-1-tmn505@terefe.re> References: <20241029161046.110403-1-tmn505@terefe.re> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241029_161149_648361_4AA7FF44 X-CRM114-Status: GOOD ( 20.68 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "desiato.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Tomasz Maciej Nowak Complementary addition for upcoming NVIDIA Jetson TX1 DevKit support. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 17 +- ...a-pass-cboot-MAC-addresses-to-os-fdt.patch | 176 ++++++++++++++++++ ...2180-pass-bt-and-wifi-mac- [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Tomasz Maciej Nowak Complementary addition for upcoming NVIDIA Jetson TX1 DevKit support. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 17 +- ...a-pass-cboot-MAC-addresses-to-os-fdt.patch | 176 ++++++++++++++++++ ...2180-pass-bt-and-wifi-mac-to-booting.patch | 27 +++ 3 files changed, 215 insertions(+), 5 deletions(-) create mode 100644 package/boot/uboot-tegra/patches/001-ARM-tegra-pass-cboot-MAC-addresses-to-os-fdt.patch create mode 100644 package/boot/uboot-tegra/patches/002-ARM-tegra-p2371-2180-pass-bt-and-wifi-mac-to-booting.patch diff --git a/package/boot/uboot-tegra/Makefile b/package/boot/uboot-tegra/Makefile index 372a75175448..cbe22fd96497 100644 --- a/package/boot/uboot-tegra/Makefile +++ b/package/boot/uboot-tegra/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2017-2019 Tomasz Maciej Nowak +# Copyright (C) 2017-2024 Tomasz Maciej Nowak # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -20,19 +20,26 @@ include $(INCLUDE_DIR)/package.mk define U-Boot/Default BUILD_TARGET := tegra - BUILD_SUBTARGET := armv7 HIDDEN := y endef +define U-Boot/jetson-tx1 + NAME := NVIDIA Jetson TX1 + BUILD_SUBTARGET := armv8 + BUILD_DEVICES := nvidia_jetson-tx1 + UBOOT_CONFIG := p2371-2180 +endef +UBOOT_TARGETS += jetson-tx1 + define U-Boot/trimslice NAME := CompuLab TrimSlice + BUILD_SUBTARGET := armv7 BUILD_DEVICES := compulab_trimslice UBOOT_IMAGE := trimslice-mmc.img trimslice-spi.img SOC := tegra20 VENDOR := compulab endef - -UBOOT_TARGETS := trimslice +UBOOT_TARGETS += trimslice define Build/bct-image $(CP) $(PKG_BUILD_DIR)/u-boot-dtb-tegra.bin $(PKG_BUILD_DIR)/u-boot.bin @@ -50,7 +57,7 @@ endef define Build/Compile $(call Build/Compile/U-Boot) - $(call Build/bct-image) + $(if $(CONFIG_ARCH_64BIT),,$(call Build/bct-image)) endef define Build/InstallDev diff --git a/package/boot/uboot-tegra/patches/001-ARM-tegra-pass-cboot-MAC-addresses-to-os-fdt.patch b/package/boot/uboot-tegra/patches/001-ARM-tegra-pass-cboot-MAC-addresses-to-os-fdt.patch new file mode 100644 index 000000000000..8284bbd3e368 --- /dev/null +++ b/package/boot/uboot-tegra/patches/001-ARM-tegra-pass-cboot-MAC-addresses-to-os-fdt.patch @@ -0,0 +1,176 @@ +From 7a5f171d5bd4ec458ffd1bb3cb162d7a42662319 Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Thu, 8 Aug 2024 19:34:28 +0200 +Subject: [PATCH 1/2] ARM: tegra: pass cboot MAC addresses to os fdt + +Beside Ethernet MAC address cboot provided fdt also contains Bluetooth +and WiFi addresses, so lets pass them to OS FDT blob if board integrator +requests them. + +Signed-off-by: Tomasz Maciej Nowak +--- + arch/arm/include/asm/arch-tegra/board.h | 2 + + arch/arm/include/asm/arch-tegra/cboot.h | 2 + + arch/arm/mach-tegra/cboot.c | 58 +++++++++++++++++++++++ + arch/arm/mach-tegra/dt-setup.c | 61 +++++++++++++++++++++++++ + 4 files changed, 123 insertions(+) + +--- a/arch/arm/include/asm/arch-tegra/board.h ++++ b/arch/arm/include/asm/arch-tegra/board.h +@@ -36,6 +36,8 @@ void pin_mux_display(void); /* overrida + + #if defined(CONFIG_ARM64) + void ft_mac_address_setup(void *fdt); ++void ft_btmac_address_setup(void *fdt, const char *compatible); ++void ft_wifimac_address_setup(void *fdt, const char *compatible); + void ft_carveout_setup(void *fdt, const char *const *nodes, + unsigned int count); + #endif +--- a/arch/arm/include/asm/arch-tegra/cboot.h ++++ b/arch/arm/include/asm/arch-tegra/cboot.h +@@ -18,6 +18,8 @@ int cboot_dram_init(void); + int cboot_dram_init_banksize(void); + ulong cboot_get_usable_ram_top(ulong total_size); + int cboot_get_ethaddr(const void *fdt, uint8_t mac[ETH_ALEN]); ++int cboot_get_bdaddr(const void *fdt, uint8_t mac[ETH_ALEN]); ++int cboot_get_wifiaddr(const void *fdt, uint8_t mac[ETH_ALEN]); + #else + static inline void cboot_save_boot_params(unsigned long x0, unsigned long x1, + unsigned long x2, unsigned long x3) +--- a/arch/arm/mach-tegra/cboot.c ++++ b/arch/arm/mach-tegra/cboot.c +@@ -555,6 +555,64 @@ out: + return err; + } + ++int cboot_get_bdaddr(const void *fdt, uint8_t mac[ETH_ALEN]) ++{ ++ const char *prop; ++ int node, len; ++ ++ node = fdt_path_offset(fdt, "/chosen"); ++ if (node < 0) { ++ printf("Can't find /chosen node in cboot DTB\n"); ++ return node; ++ } ++ ++ prop = fdt_getprop(fdt, node, "nvidia,bluetooth-mac", &len); ++ if (!prop) { ++ printf("Can't find Bluetooth MAC address in cboot DTB\n"); ++ return -ENOENT; ++ } ++ ++ string_to_enetaddr(prop, mac); ++ ++ if (!is_valid_ethaddr(mac)) { ++ printf("Invalid MAC address: %s\n", prop); ++ return -EINVAL; ++ } ++ ++ debug("Bluetooth MAC address: %pM\n", mac); ++ ++ return 0; ++} ++ ++int cboot_get_wifiaddr(const void *fdt, uint8_t mac[ETH_ALEN]) ++{ ++ const char *prop; ++ int node, len; ++ ++ node = fdt_path_offset(fdt, "/chosen"); ++ if (node < 0) { ++ printf("Can't find /chosen node in cboot DTB\n"); ++ return node; ++ } ++ ++ prop = fdt_getprop(fdt, node, "nvidia,wifi-mac", &len); ++ if (!prop) { ++ printf("Can't find WiFi MAC address in cboot DTB\n"); ++ return -ENOENT; ++ } ++ ++ string_to_enetaddr(prop, mac); ++ ++ if (!is_valid_ethaddr(mac)) { ++ printf("Invalid MAC address: %s\n", prop); ++ return -EINVAL; ++ } ++ ++ debug("WiFi MAC address: %pM\n", mac); ++ ++ return 0; ++} ++ + static char *strip(const char *ptr) + { + const char *end; +--- a/arch/arm/mach-tegra/dt-setup.c ++++ b/arch/arm/mach-tegra/dt-setup.c +@@ -76,6 +76,67 @@ void ft_mac_address_setup(void *fdt) + } + } + ++void ft_btmac_address_setup(void *fdt, const char *compatible) ++{ ++ const void *cboot_fdt = (const void *)cboot_boot_x0; ++ uint8_t mac[ETH_ALEN]; ++ int offset, err, i, o; ++ ++ if (!compatible[0]) ++ return; ++ ++ err = cboot_get_bdaddr(cboot_fdt, mac); ++ if (err < 0) ++ memset(mac, 0, ETH_ALEN); ++ ++ offset = fdt_node_offset_by_compatible(fdt, -1, compatible); ++ if (offset < 0) { ++ printf("compatible %s not found\n", compatible); ++ return; ++ } ++ ++ if (is_valid_ethaddr(mac)) { ++ /* least significant byte first */ ++ for (i = 0, o = 5; i < o; i++, o--) { ++ err = mac[i]; ++ mac[i] = mac[o]; ++ mac[o] = err; ++ } ++ ++ err = fdt_setprop(fdt, offset, "local-bd-address", mac, ++ ETH_ALEN); ++ if (!err) ++ debug("Bluetooth MAC address set: %pM\n", mac); ++ } ++} ++ ++void ft_wifimac_address_setup(void *fdt, const char *compatible) ++{ ++ const void *cboot_fdt = (const void *)cboot_boot_x0; ++ uint8_t mac[ETH_ALEN]; ++ int offset, err; ++ ++ if (!compatible[0]) ++ return; ++ ++ err = cboot_get_wifiaddr(cboot_fdt, mac); ++ if (err < 0) ++ memset(mac, 0, ETH_ALEN); ++ ++ offset = fdt_node_offset_by_compatible(fdt, -1, compatible); ++ if (offset < 0) { ++ printf("compatible %s not found\n", compatible); ++ return; ++ } ++ ++ if (is_valid_ethaddr(mac)) { ++ err = fdt_setprop(fdt, offset, "local-mac-address", mac, ++ ETH_ALEN); ++ if (!err) ++ debug("WiFi MAC address set: %pM\n", mac); ++ } ++} ++ + static int ft_copy_carveout(void *dst, const void *src, const char *node) + { + const char *names = "memory-region-names"; diff --git a/package/boot/uboot-tegra/patches/002-ARM-tegra-p2371-2180-pass-bt-and-wifi-mac-to-booting.patch b/package/boot/uboot-tegra/patches/002-ARM-tegra-p2371-2180-pass-bt-and-wifi-mac-to-booting.patch new file mode 100644 index 000000000000..4da66f9990c7 --- /dev/null +++ b/package/boot/uboot-tegra/patches/002-ARM-tegra-p2371-2180-pass-bt-and-wifi-mac-to-booting.patch @@ -0,0 +1,27 @@ +From c63792769405eba7ba04787cf0426495f062d0bd Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Thu, 8 Aug 2024 20:54:34 +0200 +Subject: [PATCH 2/2] ARM: tegra: p2371-2180: pass bt and wifi mac to booting + os + +P2180 has Bluetooth+WiFi module integrated and while Ethernet MAC address +is passed from cboot FDT, the addresses for Bluetooth and WiFi aren't. +Therefore do the same for them in nodes specified by compatible, so +booted OS can use them. + +Signed-off-by: Tomasz Maciej Nowak +--- + board/nvidia/p2371-2180/p2371-2180.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/board/nvidia/p2371-2180/p2371-2180.c ++++ b/board/nvidia/p2371-2180/p2371-2180.c +@@ -93,6 +93,8 @@ static const char * const nodes[] = { + int ft_board_setup(void *fdt, struct bd_info *bd) + { + ft_mac_address_setup(fdt); ++ ft_btmac_address_setup(fdt, "brcm,bcm43540-bt"); ++ ft_wifimac_address_setup(fdt, "brcm,bcm4354-fmac"); + ft_carveout_setup(fdt, nodes, ARRAY_SIZE(nodes)); + + return 0;