From patchwork Tue Oct 29 15:46:54 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: 2003836 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=XaO3plzQ; 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=FpSFtVmm; 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 4XdHZ52sw2z1xxZ for ; Wed, 30 Oct 2024 04:39:24 +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=dR0y8nHialxYLcmLfvfrbEFOzx+g7wb82S7VmhM/25E=; b=XaO3plzQw24H+G WHMeBMSKQvGGhgicwkVY38shIdK1JNDe8gT9QnVDGk3hjFUb6836jfRJsG+ZAHI32LvRfyMfZKT12 B6r6GWIeUUROL7gjMzwJ7oxZj8pa9ohV9KAPhqTHb0AnOQlWWpOippG/XayJHeo3GzurpykeK1T1U lRgvrQB/Y1L6g+wfE03R9hmlsjexDqnSYQR21w9ze4OwF3h5vRSkRF4MxBBjt5g371YZapWa1Zjwc t2MnxfamJPyd71l02Opl6S7nfhQUFKa0uquhd1FF6qrlF07f4jaq03sR5TAQw4Y7NCxpcewqelJ40 1a9Ezg1i0jHk08b7aZiQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5q9s-0000000FJ9G-2HCc; Tue, 29 Oct 2024 17:37:32 +0000 Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oos-0000000F4jS-1yVL for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:48 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 8ADE720301; Tue, 29 Oct 2024 17:11:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218301; bh=g8+Q7y+bgbGh97lP/TIzSvJ9TWhybAqe3Q3bhWIGK6w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FpSFtVmmoepY1WWr7b6RJmRZoJpZA07DSHr3j9QFPrQoCo1gKDhTwz3utl+gxKJ+z Wfk+U19QWIzfODS+BYX8GdgCdTjf5XB63C2yar3a0AIsbLf+4GlqISDuTOvKK6O6rr v1+/I3ngEVTnI6Fj0v21jj2UIIeVYp9qORPDY1FEA36pH8gUC9/5waCeUVl+N47MBx jPqcSMa1dvr/wzXOdq1c+4+Hu/Bw7JVjB+okeyzMvPJRXN+9j7vfShYPKM5gydnKcw /tNoEJCOvV+34D6wtXq+lnlV3GpuviZl4NnLr63VW1CrP62k28mZW1EcSthCfMyktI uW1SXj8602FHQ== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 01/14] kernel: modules: enable UART variant of Broadcom bluetooth Date: Tue, 29 Oct 2024 16:46:54 +0100 Message-ID: <20241029161046.110403-2-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_091146_981175_D4EF6913 X-CRM114-Status: UNSURE ( 8.10 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.1 (--) X-Spam-Report: Spam detection software, running on the system "bombadil.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 Bunch of SBC integrate SDIO Broadcom BT+WiFi module, but while WiFi uses SDIO lines, the BT part usually is connected to UART lines, instead of SDIO, like most would asume, so package module responsib [...] Content analysis details: (-2.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's 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 -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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 Bunch of SBC integrate SDIO Broadcom BT+WiFi module, but while WiFi uses SDIO lines, the BT part usually is connected to UART lines, instead of SDIO, like most would asume, so package module responsible for it to unlock this feature. Caveat is, this driver needs firmware which isn't contained in linux-firmware repo, so one needs to find it. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/other.mk | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/package/kernel/linux/modules/other.mk b/package/kernel/linux/modules/other.mk index bbebcf37ec1a..cadabb8ea31f 100644 --- a/package/kernel/linux/modules/other.mk +++ b/package/kernel/linux/modules/other.mk @@ -33,6 +33,7 @@ define KernelPackage/bluetooth DEPENDS:=@USB_SUPPORT +kmod-usb-core +kmod-crypto-hash +kmod-crypto-ecb +kmod-lib-crc16 +kmod-hid +kmod-crypto-cmac +kmod-regmap-core +kmod-crypto-ecdh KCONFIG:= \ CONFIG_BT \ + CONFIG_BT_BCM \ CONFIG_BT_BREDR=y \ CONFIG_BT_DEBUGFS=n \ CONFIG_BT_LE=y \ @@ -43,10 +44,11 @@ define KernelPackage/bluetooth CONFIG_BT_HCIBTUSB_MTK=y \ CONFIG_BT_HCIBTUSB_RTL=y \ CONFIG_BT_HCIUART \ - CONFIG_BT_HCIUART_BCM=n \ + CONFIG_BT_HCIUART_BCM=y \ CONFIG_BT_HCIUART_INTEL=n \ CONFIG_BT_HCIUART_H4 \ CONFIG_BT_HCIUART_NOKIA=n \ + CONFIG_BT_HCIUART_SERDEV=y \ CONFIG_BT_HIDP $(call AddDepends/rfkill) FILES:= \ @@ -55,11 +57,12 @@ define KernelPackage/bluetooth $(LINUX_DIR)/net/bluetooth/bnep/bnep.ko \ $(LINUX_DIR)/net/bluetooth/hidp/hidp.ko \ $(LINUX_DIR)/drivers/bluetooth/hci_uart.ko \ + $(if $(CONFIG_SERIAL_DEV_BUS),$(LINUX_DIR)/drivers/bluetooth/btbcm.ko) \ $(LINUX_DIR)/drivers/bluetooth/btusb.ko \ $(LINUX_DIR)/drivers/bluetooth/btintel.ko \ $(LINUX_DIR)/drivers/bluetooth/btrtl.ko \ $(LINUX_DIR)/drivers/bluetooth/btmtk.ko - AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp hci_uart btusb) + AUTOLOAD:=$(call AutoProbe,bluetooth rfcomm bnep hidp hci_uart btbcm btusb) endef define KernelPackage/bluetooth/description From patchwork Tue Oct 29 15:46:55 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: 2003841 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=o1sSNfP4; 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=Uo/3A24+; 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=t/G1Hoa/; 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 4XdHZ53kPqz1xxc for ; Wed, 30 Oct 2024 04:39:25 +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=3BwOwjmRlxEBo9kmjY5IbiHhqEb9LVgcP+wVK06Mj68=; b=o1sSNfP4UD/NFY M/5d8YkMbvJujCM28Wpc6FlDUBm6GKCRHXBixtJ0BpU8t07uwnf49c4DCP42YKcm9Zy3uFA2ddCll ty1fG5EMP9Aeh60lDosAPm/dqUCQCa7AE4CXecwL50m+N14zZM7kevwurHWAMHNuvPjgcu6wsfnQ8 wsbyhcy8xwA0ZjNzEGaM40ZMtB+1dfZR0YEoW1wZzp3gt/xIvrtaw6rmBrw+t1T6C++kyJtvCbtvY ZyQqj5nkTeyz/ZZXzOn7LJ8V/eCuEzNWAs/rXx0kzYyc7bp2X4vdSUzlH63Qobjx2MTDYgbOGNGOW VT3FCyjB+oARZf24tH8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qAP-0000000FJWf-27ex; Tue, 29 Oct 2024 17:38:05 +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 1t5oov-0000000F4mQ-3zra for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:50 +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=iBSP7cr8C1TNVz+SsAySw/57t5okVnGrmJkOlhs4CcU=; b=Uo/3A24+6vJ8fp9e1cv1ZcfopN yMdLk/+zAycDhLUBXBehGCwfEMroMbFHx+9Kny0UQP8pIZUUcjce8YbIqB80dYUvzn9nVgd3h/Ei+ OtmXG2uOYCkNTLg4zka4y47BTVdrGhPdD3GlY5gMoX8uLxrqd/79z+iRFJ/LQmrW+V386oJ4rNWeI 6RsHzjhcbfBvlfbpewqtKFL/0nbvZAoS6zrSeqBZIy7Bdp/hAqSWkuLRYmTATX7CPti3yXCUe1L8h N8pZlOnyoEAiQR7YDjFok82irLNLZD8rkKGYZdDolSPQfYQwIgC6nXuwAhDz64T1ycpo5GZjCi1bV pKVX8k2w==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oor-00000009wku-1kId for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:48 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id DFC9120302; Tue, 29 Oct 2024 17:11:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218302; bh=y4t9XgsPo65FswA0D74XABnl1SIqz5AvKYQddKvC0fo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t/G1Hoa/4VDquFYjlm+m2gUqplOsmjojNmxixxJ1ltpp8H4ngLpkrAssPTIRA4V2l aXsjvdZKVw1ft9ME6OWm+k4JjF5FSkVKdRTCdhNNihk5oUg6Gr+n3GQeJhJ+vW6OqE DBetYE4YYLlBjwEggCAnVtIvLr3Vn2Fu6UZmwvlNUVCn+FljUo41iGJvyzfdW9lT/K kfaRexZX+vZvu5SdPs92MTMQZasCNCiArvvPJ7dUx5O519sKlSuCAPKuPL+62WfcSP aBinTcdV9BNGzZX8l1Vjno4e3b5syQjjUOvNN3n6Fn4QCvyDwOeyDXYG8JvfPUkVGS MxIDGprC2tAvw== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 02/14] tegra: rename generic subtarget to armv7 Date: Tue, 29 Oct 2024 16:46:55 +0100 Message-ID: <20241029161046.110403-3-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_161145_682355_BAC52A29 X-CRM114-Status: GOOD ( 11.60 ) 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 Preparation for new subtarget addition. Additionally drop BOOT_SCRIPT variable, since there's only single bootscript. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 2 +- target/linux/tegra/Makefile | 9 ++------- target/linux/tegra/armv7/target.mk | 9 +++++++++ target/lin [...] 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 Preparation for new subtarget addition. Additionally drop BOOT_SCRIPT variable, since there's only single bootscript. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 2 +- target/linux/tegra/Makefile | 9 ++------- target/linux/tegra/armv7/target.mk | 9 +++++++++ target/linux/tegra/generic/target.mk | 1 - target/linux/tegra/image/Makefile | 17 ++++------------- target/linux/tegra/image/armv7.mk | 9 +++++++++ .../{generic-bootscript => bootscript.txt} | 0 7 files changed, 25 insertions(+), 22 deletions(-) create mode 100644 target/linux/tegra/armv7/target.mk delete mode 100644 target/linux/tegra/generic/target.mk create mode 100644 target/linux/tegra/image/armv7.mk rename target/linux/tegra/image/{generic-bootscript => bootscript.txt} (100%) diff --git a/package/boot/uboot-tegra/Makefile b/package/boot/uboot-tegra/Makefile index a90008bbd1d3..11104920ffe4 100644 --- a/package/boot/uboot-tegra/Makefile +++ b/package/boot/uboot-tegra/Makefile @@ -20,7 +20,7 @@ include $(INCLUDE_DIR)/package.mk define U-Boot/Default BUILD_TARGET := tegra - BUILD_SUBTARGET := generic + BUILD_SUBTARGET := armv7 HIDDEN := y endef diff --git a/target/linux/tegra/Makefile b/target/linux/tegra/Makefile index b917ea909d66..433510e23d6a 100644 --- a/target/linux/tegra/Makefile +++ b/target/linux/tegra/Makefile @@ -1,23 +1,18 @@ # SPDX-License-Identifier: GPL-2.0-only # -# Copyright (C) 2017-2019 Tomasz Maciej Nowak +# Copyright (C) 2017-2024 Tomasz Maciej Nowak include $(TOPDIR)/rules.mk -ARCH := arm BOARD := tegra BOARDNAME := NVIDIA Tegra FEATURES := audio boot-part display ext4 fpu gpio pci pcie rootfs-part rtc squashfs usb -CPU_TYPE := cortex-a9 -CPU_SUBTYPE := vfpv3-d16 -SUBTARGETS := generic +SUBTARGETS := armv7 KERNEL_PATCHVER := 6.6 include $(INCLUDE_DIR)/target.mk -KERNELNAME := zImage dtbs - DEFAULT_PACKAGES += e2fsprogs mkf2fs partx-utils define Target/Description diff --git a/target/linux/tegra/armv7/target.mk b/target/linux/tegra/armv7/target.mk new file mode 100644 index 000000000000..ab7572f6eb15 --- /dev/null +++ b/target/linux/tegra/armv7/target.mk @@ -0,0 +1,9 @@ +ARCH := arm +BOARDNAME := NVIDIA Tegra ARMv7 +CPU_TYPE := cortex-a9 +CPU_SUBTYPE := vfpv3-d16 +KERNELNAME := zImage dtbs + +define Target/Description + Build firmware image for NVIDIA Tegra ARMv7 SoC devices. +endef diff --git a/target/linux/tegra/generic/target.mk b/target/linux/tegra/generic/target.mk deleted file mode 100644 index f5cb1fb19b94..000000000000 --- a/target/linux/tegra/generic/target.mk +++ /dev/null @@ -1 +0,0 @@ -BOARDNAME:=Generic diff --git a/target/linux/tegra/image/Makefile b/target/linux/tegra/image/Makefile index 96b095e64929..3b38fcdde684 100644 --- a/target/linux/tegra/image/Makefile +++ b/target/linux/tegra/image/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only # -# Copyright (C) 2017-2019 Tomasz Maciej Nowak +# Copyright (C) 2017-2024 Tomasz Maciej Nowak include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.mk @@ -14,7 +14,7 @@ define Build/tegra-sdcard $(CP) $(DEVICE_DTS_DIR)/*.dtb $@.boot) mkimage -A arm -O linux -T script -C none -a 0 -e 0 \ -n '$(DEVICE_TITLE) OpenWrt bootscript' \ - -d $(BOOT_SCRIPT) \ + -d bootscript.txt \ $@.boot/boot.scr $(CP) $@ $@.rootfs @@ -28,10 +28,9 @@ define Build/tegra-sdcard $(if $(UBOOT),dd if=$(STAGING_DIR_IMAGE)/$(UBOOT).img of=$@ bs=512 skip=1 seek=1 conv=notrunc) endef -DEVICE_VARS += BOOT_SCRIPT UBOOT +DEVICE_VARS += UBOOT define Device/Default - BOOT_SCRIPT := generic-bootscript DEVICE_DTS_DIR := $$(DTS_DIR)/nvidia IMAGES := sdcard.img.gz IMAGE/sdcard.img.gz := append-rootfs | pad-extra 128k | tegra-sdcard | gzip | append-metadata @@ -40,14 +39,6 @@ define Device/Default PROFILES := Default endef -define Device/compulab_trimslice - DEVICE_VENDOR := CompuLab - DEVICE_MODEL := TrimSlice - DEVICE_DTS := tegra20-trimslice - DEVICE_PACKAGES := kmod-leds-gpio kmod-r8169 kmod-rt2800-usb \ - kmod-rtc-em3027 kmod-usb-hid kmod-usb-storage wpad-basic-mbedtls - UBOOT := trimslice-mmc -endef -TARGET_DEVICES += compulab_trimslice +include $(SUBTARGET).mk $(eval $(call BuildImage)) diff --git a/target/linux/tegra/image/armv7.mk b/target/linux/tegra/image/armv7.mk new file mode 100644 index 000000000000..24e8e7c14233 --- /dev/null +++ b/target/linux/tegra/image/armv7.mk @@ -0,0 +1,9 @@ +define Device/compulab_trimslice + DEVICE_VENDOR := CompuLab + DEVICE_MODEL := TrimSlice + DEVICE_DTS := tegra20-trimslice + DEVICE_PACKAGES := kmod-leds-gpio kmod-r8169 kmod-rt2800-usb \ + kmod-rtc-em3027 kmod-usb-hid kmod-usb-storage wpad-basic-mbedtls + UBOOT := trimslice-mmc +endef +TARGET_DEVICES += compulab_trimslice diff --git a/target/linux/tegra/image/generic-bootscript b/target/linux/tegra/image/bootscript.txt similarity index 100% rename from target/linux/tegra/image/generic-bootscript rename to target/linux/tegra/image/bootscript.txt From patchwork Tue Oct 29 15:46:56 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: 2003840 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=qPE2KhRl; 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=hUmzzFty; 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=LIhY4lYU; 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 4XdHZ52pLvz1xwn for ; Wed, 30 Oct 2024 04:39:23 +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=4miIvQW9JK5DWiC/aSAZ5S2/FIzy5+80ELItY6QMNZ4=; b=qPE2KhRlQ9Yn+6 birbnv2RKrXSZD8Otc/WTS19neqG6/Du20P85n2mopjNYlGq2f2P+BUTNUsfeX2RY14a4U4H3bOEi m3Iui9qbSWaxnR0Mk6Wm5qu9859ChrbX141ErWHGjQVtnSXkDXaZMHezEzxbe51jJxtQSnypzo6pf T1080zhPTbMr2uI4sPhQlrN6koAR7M5jiWWrvAiZuT7Uhj0KLr70H1HMnNNDN6mDFcQu6xiT6UfJu IpBmhWfdmTFGDW4vDXqqILBaYwboYh2BL36tOYA/sVMne1VXmWr0mYytcWdK8bTbgXU1tarL5nmV3 Z/5htQs0duKNgroskrvQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qA4-0000000FJIG-0IVs; Tue, 29 Oct 2024 17:37:44 +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 1t5oou-0000000F4l0-1KbR for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:48 +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=NZQk3OK17yFWALkaYdIuZVIRZ3rZ8KoKMaM3mg4l33k=; b=hUmzzFtyHt0HoPNebUPnwZPXmx AfMwkAJsqYIr5wuFOr2TogFqomQtMbzYrsQ5iOjrO1oZCCg4S/+EgI23MDr1cRwpYsfxFaEqlokme T82Z+NgbswGl1H7yrUaX5bah5pgtl3tsHs8I2NJwZ255Q5x7jlrOQvNjvfHLnsmnlNMZ2/bHWJ24s Hui4mVthJePDvHPFFteTO36mxyBJ6zjyYa2q3S8HFAlCkQwqY8wxw0kSzZLTA8lf8ZjDxycwQhmXV GCy0wKVxeW3fAT5bd+KVc7AMRxD9wTc3UcLzbC7bapBEnxMefW2j+wbPCzekOzqG5vyXVAGOvqjyb nuwA+Z5w==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oor-00000009wkw-1pjD for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:47 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 3AF6B2030B; Tue, 29 Oct 2024 17:11:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218302; bh=AgWTB21C1sD2uN7NkMqdtPrEihd1gtafwwFlXj9qCOQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LIhY4lYUvzJpdzk7X5VVERKmTWu/zNg9jFeoW1z7VZzp9g1xPb199M3q+sSNzv7Dy fnlXquNoOfnGRm+wVBNc/vjJd3WBuRRxRoMpT62vjA2pWfSsXY2gs38gH2NGGmSvnT VPxxraA25TcdjAiA69kMpy/h6bifJeHTKJT4eJoVISqlNIm+rmPYHhxkgoT9bLam8/ M4j3EfNEGGaJ5Y/m0gYXDYz4YsP43K703HURyV9WEl5P8CvILigbRPmfy/2NaOEbKm f5YxFG9lYkbaJpehg/bCwTcXiQ5ta05r4hozHA5eXTNkrlGeee9UbJ37F45fuA+ZTq 5j4DAoiqS9TkA== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 03/14] kernel: modules: package Tegra xHCI and OTG modules Date: Tue, 29 Oct 2024 16:46:56 +0100 Message-ID: <20241029161046.110403-4-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_161145_680397_DD625288 X-CRM114-Status: UNSURE ( 7.17 ) X-CRM114-Notice: Please train this message. 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: Koen Vandeputte These are used on Tegra SoC with USB 3.0 controller. Signed-off-by: Koen Vandeputte [add OTG module, rebase, reword, drop firmware package] Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/mod [...] 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: Koen Vandeputte These are used on Tegra SoC with USB 3.0 controller. Signed-off-by: Koen Vandeputte [add OTG module, rebase, reword, drop firmware package] Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/usb.mk | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index 458c8c4ba68f..b1366245ffab 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -1911,3 +1911,40 @@ endef $(eval $(call KernelPackage,chaoskey)) + +define KernelPackage/usb-xhci-tegra + TITLE:=xHCI support for Tegra SoCs + DEPENDS:=@TARGET_tegra +kmod-usb-xhci-hcd +kmod-usb-roles + KCONFIG:= \ + CONFIG_USB_XHCI_TEGRA \ + CONFIG_PHY_TEGRA_XUSB=m + HIDDEN:=1 + FILES:= \ + $(LINUX_DIR)/drivers/usb/host/xhci-tegra.ko \ + $(LINUX_DIR)/drivers/phy/tegra/phy-tegra-xusb.ko + AUTOLOAD:=$(call AutoLoad,54,phy-tegra-xusb xhci-tegra,1) + $(call AddDepends/usb) +endef + +define KernelPackage/usb-xhci-tegra/description + Kernel support for the xHCI host controller found in Tegra SoCs. + For each SoC generation different firmware is needed. +endef + +$(eval $(call KernelPackage,usb-xhci-tegra)) + + +define KernelPackage/usb-udc-tegra + SUBMENU:=$(USB_MENU) + TITLE:=NVIDIA Tegra Superspeed USB 3.0 Device Controller + DEPENDS:=@TARGET_tegra +kmod-usb-xhci-tegra + KCONFIG:=CONFIG_USB_TEGRA_XUDC + FILES:=$(LINUX_DIR)/drivers/usb/gadget/udc/tegra-xudc.ko + AUTOLOAD:=$(call AutoProbe,tegra-xudc) +endef + +define KernelPackage/usb-udc-tegra/description + Enables NVIDIA Tegra USB 3.0 device mode controller driver. +endef + +$(eval $(call KernelPackage,usb-udc-tegra)) From patchwork Tue Oct 29 15:46:57 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: 2003839 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=Wd30/lOM; 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=SS49rZ94; 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=aZzJhDF5; 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 4XdHZ52pjlz1xxC for ; Wed, 30 Oct 2024 04:39:23 +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=HMAn31QzRM9OwC+1rwrsnnlzMxMqlWeiTacOCD32lHw=; b=Wd30/lOMtIL1Pm 2r9lLZebrwTHl0D4Zgml/CyKm8y6WEXhnkbFNNj/4JIet6xByEVtP6tNmTbZocljiTzaoWsSg0pJW OIqNhw/ZgQSX/WtGamy1sSud1LvSgP/wYbxAGLy4d5U3v9a+2Ek/SoN7Qjfn4ydsAYp6qZ3bXZDpt Y7FD1HZrg9pi8HJ5R+mZT9YEi4q10zLnp/ge2f/bF5s+7p71AB2O6w85eTB3aCzTYIpm2wSWGY4M8 jqXpGkEGLBtFwtgD2SeTmEd6wgpST2+xNy1g0+NWKGGWdbbk8wiIj+ldnKJpMIUrnqrG36vGHDNrJ jehAk8LNusnVzLxjArGQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qAK-0000000FJT8-2TnS; Tue, 29 Oct 2024 17:38:01 +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 1t5oov-0000000F4lw-0gLE for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:49 +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=VuxZyzRVuQCwLn1YwpKR38DMHsjc48t82jHvNI+z5WQ=; b=SS49rZ94bv0c7+p9e3iT4dvkPY 2tja/IxDTRhsM91BBfLu4sxnfJxF22/5qmk2k74unKucVyxqLFFakW73mpim6m2rhNzlYyTPh4L8Z IGspqI45kFZM0ZXhq8upKnkBidzgsB9GDnbJ80RxlIIoplmUUCoH0ztk2gVO9QWmiLsudmBFyXAWV Q+sF+nHc8ZD6hdTckXa5FurpFx2BNBCglZXyT5M7Dq6oldMLnp7S6VWmpcK8PGpNKMAmCOakur2uG 9GcPj7d5pJmc2ZSW/Y/qb086jytSeCzuf1ZZC2DxhgDPWdC1S0FL8IYXl25ij5JoJ8hYuh7bFydhB BzZnwsrQ==; Received: from terefe.re ([5.255.96.200]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oor-00000009wky-209G for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:47 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 8A1A82030C; Tue, 29 Oct 2024 17:11:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218302; bh=vXbs7HCaMyFC9JpmeKFm35wpCZN1UFwdwWqoYOijEsM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aZzJhDF5oEq2aa2cAvyciuj8XOaHDAwpwNLSe3I0kHMfQ3OsmABWi4sISne9ntRQ6 MAbuwyiPJmjpcicRphu3msjAOSMJoTAP9P8e00T9H0xxxB0W415gwWiGTmej/gdVdK 2bj62nJz7t2a+UzgiWdLDNl99phQ6yDBGO3pU54/f2nPibt/S6H2kIxmZdZh8Kb0mk Jr8lshlFItE4gBDzTc77YZ1SWS6fjVcpjlvqyMkkNeC6w9NhWn63J+xvH5eLKPaXeH gn6ajTHnrw5sKl0fgSXRC6Qsh/IHO0HvwtPrrqAh/hfMFRkK/BtFV2d8rnryL6UVTW kyApUjk5d5k9g== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 04/14] linux-firmware: package Tegra X1 USB firmware Date: Tue, 29 Oct 2024 16:46:57 +0100 Message-ID: <20241029161046.110403-5-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_161145_664065_BF39D524 X-CRM114-Status: UNSURE ( 9.54 ) X-CRM114-Notice: Please train this message. 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: Koen Vandeputte Used on boards integrating Tegra X1 SoC, necessary for USB bringup. Signed-off-by: Koen Vandeputte [separated from USB driver addition, reword] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvi [...] 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: Koen Vandeputte Used on boards integrating Tegra X1 SoC, necessary for USB bringup. Signed-off-by: Koen Vandeputte [separated from USB driver addition, reword] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvidia.mk | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 package/firmware/linux-firmware/nvidia.mk diff --git a/package/firmware/linux-firmware/nvidia.mk b/package/firmware/linux-firmware/nvidia.mk new file mode 100644 index 000000000000..b18d9c224007 --- /dev/null +++ b/package/firmware/linux-firmware/nvidia.mk @@ -0,0 +1,9 @@ +Package/t210-usb-firmware = $(call Package/firmware-default,nVidia T210 USB firmware) +define Package/t210-usb-firmware/install + $(INSTALL_DIR) $(1)/lib/firmware/nvidia/tegra210 + $(INSTALL_DATA) \ + $(PKG_BUILD_DIR)/nvidia/tegra210/xusb.bin \ + $(1)/lib/firmware/nvidia/tegra210 +endef +$(eval $(call BuildPackage,t210-usb-firmware)) + From patchwork Tue Oct 29 15:46:58 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: 2003843 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=5FUhHIvf; 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=JamhgtVB; 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=vHTKp+aX; 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 4XdHZT3XPgz1xwn for ; Wed, 30 Oct 2024 04:39:45 +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=v6A/1cST5L0tHyZh0LK16C4U5xntG1gdEPsiKqygX50=; b=5FUhHIvfaDfJre +0tuhP3d4AhcqXdpYcyfEFU71DzeIdh67pbh2zy0VQj9I0bSimO2nLwzAATwJdloMzOO7IZck1ELM nCrP4zmW0SodkmSPfSLvL4henRiu9ZrC8VwxGKrRvc2hmeqdvOOpII4Zxawn/0XsWGC/YeY8JuYkD JrEXs5/6w2WYy+T+aooUTpHY/VgciJDaTidT+qdcjFOOiCmBQL8ul3px929AuFQSX5ub/lVK1sLVP 5721q4T3XYUK0wpoMioW91sXaa1UQWwJqSKH2q6cQrwRBrC12Lp9na7DmLrl8b2DS6gGUVCd8mOz9 WjpeU8GQGzV8SElaa3aA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qAo-0000000FJov-3ib4; Tue, 29 Oct 2024 17:38:31 +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 1t5ooy-0000000F4nO-3q02 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=cFKFqKhYOsIdycKwKsFLoRDUKP8e81onQX6GX6cg374=; b=JamhgtVBV6PZ0fbmH9seyUc+dA dx3npGNJDgVDzVMXOVDDJ2W0NYM68MeYMHo9Sni1zggdMs7XXBAxGU/l0XEv9u2v4LtI38NNctOES GjHJxelUCGOOOxvsy1H85KyNVzRLlIwq95mR4dGCKjRu9i6o8UHiURvfz3NFjBKgYZ/uv75HiAkyX BzxCKYPk75BypYA6olP6nSkzy6UZw+Fraisj0EZFssAqZJ+TdkX+4sLK7cD7V8uRs6ODAYVp4OUis fU/3wPVS6U0Z+aTUWXOpH3VRS5+321ugynS67bcKwxUZ8+aV2uPkvL6VB6Ov3z+NY4qRB6IdqGH0s ZkwMZBdQ==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oou-00000009wll-0imA for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:50 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id D9F6C2030D; Tue, 29 Oct 2024 17:11:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218303; bh=c74orUrNNQ23IUqp7AO/nKjOScupOkcaSQKKK17HM5U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vHTKp+aXIkBQxcgIEl1qts1RXu2Vb5KL8CZnnU/8HRqbubJJay6g2ZIKbqqgkXg5h VttNSFPv7ObZKF2AOLnTYF1wVEK+uwKg3LySjNVm7Z1E2l5Nq2vgyWDPH1VJEu4FU/ z4204vZtPKZTQ2HnOxnecA7oLY22T1IFw/355Dg1kEbN2cqJU/0P93bS86ftLz4rwG JgZP9xLV0PdxAoMmwHg4869XCQhHB63ccdraD/oGpqh1k0Kny1qn9iABYhzTxZUOK0 anGkED0vBu0tGptOI5wBmyu23NhosBZuCBrQ2DRk0d1LzeEifeYoWGfzwoVI/3Mrbk EmfMoAYhecyjQ== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 05/14] linux-firmware: package BCM4354 NVRAM for Jetson TX1 Date: Tue, 29 Oct 2024 16:46:58 +0100 Message-ID: <20241029161046.110403-6-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_161148_431538_49A17538 X-CRM114-Status: GOOD ( 13.62 ) 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 Needed for ingerated WiFi module. Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/broadcom.mk | 9 + ...01-brcm-replace-NVRAM-for-Jetson-TX1.patch | 155 ++++++++++++++++++ 2 files changed, 164 [...] 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 Needed for ingerated WiFi module. Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/broadcom.mk | 9 + ...01-brcm-replace-NVRAM-for-Jetson-TX1.patch | 155 ++++++++++++++++++ 2 files changed, 164 insertions(+) create mode 100644 package/firmware/linux-firmware/patches/001-brcm-replace-NVRAM-for-Jetson-TX1.patch diff --git a/package/firmware/linux-firmware/broadcom.mk b/package/firmware/linux-firmware/broadcom.mk index c4e5885f77c2..16ccb7c11533 100644 --- a/package/firmware/linux-firmware/broadcom.mk +++ b/package/firmware/linux-firmware/broadcom.mk @@ -155,6 +155,15 @@ define Package/brcmfmac-nvram-43455-sdio/install endef $(eval $(call BuildPackage,brcmfmac-nvram-43455-sdio)) +Package/brcmfmac-nvram-4354-sdio = $(call Package/firmware-default,Broadcom BCM4354 SDIO NVRAM,,LICENCE.cypress) +define Package/brcmfmac-nvram-4354-sdio/install + $(INSTALL_DIR) $(1)/lib/firmware/brcm + $(INSTALL_DATA) \ + $(PKG_BUILD_DIR)/brcm/brcmfmac4354-sdio.nvidia,p2371-2180.txt \ + $(1)/lib/firmware/brcm/ +endef +$(eval $(call BuildPackage,brcmfmac-nvram-4354-sdio)) + Package/brcmfmac-nvram-4356-sdio = $(call Package/firmware-default,Broadcom BCM4356 SDIO NVRAM,,LICENCE.broadcom_bcm43xx) define Package/brcmfmac-nvram-4356-sdio/install $(INSTALL_DIR) $(1)/lib/firmware/brcm diff --git a/package/firmware/linux-firmware/patches/001-brcm-replace-NVRAM-for-Jetson-TX1.patch b/package/firmware/linux-firmware/patches/001-brcm-replace-NVRAM-for-Jetson-TX1.patch new file mode 100644 index 000000000000..e06b444510c5 --- /dev/null +++ b/package/firmware/linux-firmware/patches/001-brcm-replace-NVRAM-for-Jetson-TX1.patch @@ -0,0 +1,155 @@ +From c569ca455c36119f88cdc3d1679be0daffae5924 Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Wed, 16 Oct 2024 20:02:41 +0200 +Subject: [PATCH] brcm: replace NVRAM for Jetson TX1 + +The current version is copied from latest Jetson Linux BSP and it's for +P3310 (TX2) module. While both TX1 and TX2 have same wireless chip, +possibly the SDIO module slightly differ and both have different NVRAM +files provided in separate BSP archives. Although TX1 module wireless +inteface can be brought up with TX2 NVRAM file, the performance is +slightly degraded, simple download test yielded extra 4MiB/s with proper +NVRAM file. Thus, replace it with proper file from R32.7.5 BSP, while +also droping commented-out values, since those are not parsed by the +driver. + +Signed-off-by: Tomasz Maciej Nowak +--- + brcm/brcmfmac4354-sdio.nvidia,p2371-2180.txt | 61 ++++++++------------ + 1 file changed, 25 insertions(+), 36 deletions(-) + +--- a/brcm/brcmfmac4354-sdio.nvidia,p2371-2180.txt ++++ b/brcm/brcmfmac4354-sdio.nvidia,p2371-2180.txt +@@ -1,4 +1,5 @@ + # Sample variables file for BCM94354 WLBGA iPA, iLNA board with SDIO for production package ++# NOTE: UPDATED TSSI PARAMETER FOR JETSON WITH COEX FILTER ON 10/5/2015. SHAILESH SINGH + NVRAMRev=$Rev: 373428 $ + aa2g=3 + aa5g=3 +@@ -11,58 +12,55 @@ AvVmid_c0=2,140,2,145,2,145,2,145,2,145 + AvVmid_c1=2,140,2,145,2,145,2,145,2,145 + AvVmid_c2=0,0,0,0,0,0,0,0,0,0 + boardflags=0x02400201 +-boardflags2=0x00808200 +-#boardflags2=0xc0800000 ++boardflags2=0x00802000 + boardflags3=0x4000000a +-#boardnum=57410 + boardrev=0x1101 + boardtype=0x06db + btc_params122=0 + btc_params123=0 + cckbw202gpo=0x0000 + cckbw20ul2gpo=0x0000 +-ccode=XZ ++ccode=XR + devid=0x43a3 + disable_olpc=0 + dot11agduphrpo=0x0 + dot11agduplrpo=0x0 +-dot11agofdmhrbw202gpo=0x5533 +-#enable LNA1 bypass for both 2G & 5G ++dot11agofdmhrbw202gpo=0x6666 + extpagain2g=2 + extpagain5g=2 + femctrl=10 + ltecxmux=0x534201 + macaddr=00:90:4c:16:70:01 + manfid=0x2d0 +-maxp2ga0=72 +-maxp2ga1=72 +-maxp5ga0=72,72,72,72 +-maxp5ga1=72,72,72,72 +-mcsbw202gpo=0xDAA83311 +-mcsbw205ghpo=0xBA442200 +-mcsbw205glpo=0xBA442200 +-mcsbw205gmpo=0xBA442200 +-mcsbw402gpo=0xAAA74422 +-mcsbw405ghpo=0xBA442200 +-mcsbw405glpo=0xBA442200 +-mcsbw405gmpo=0xBA442200 +-mcsbw805ghpo=0xBA553300 +-mcsbw805glpo=0xBA553300 +-mcsbw805gmpo=0xBA553300 ++maxp2ga0=74 ++maxp2ga1=74 ++maxp5ga0=74,74,74,74 ++maxp5ga1=74,74,74,74 ++mcsbw202gpo=0x99644422 ++mcsbw205ghpo=0xdc666663 ++mcsbw205glpo=0x88766663 ++mcsbw205gmpo=0xd8666663 ++mcsbw402gpo=0x99644422 ++mcsbw405ghpo=0xaa666663 ++mcsbw405glpo=0x88666663 ++mcsbw405gmpo=0x88666663 ++mcsbw805ghpo=0xdd666665 ++mcsbw805glpo=0xbb666665 ++mcsbw805gmpo=0xcc666665 + mcslr5ghpo=0x0000 + mcslr5glpo=0x0000 + mcslr5gmpo=0x0000 + muxenab=0x11 + nocrc=1 +-ofdmlrbw202gpo=0x0000 ++ofdmlrbw202gpo=0x0022 + olpc_anchor2g=0 + olpc_anchor5g=0 + olpc_thresh=0 + otpimagesize=502 +-pa2ga0=0XFF3E,0X1433,0XFD75 +-pa2ga1=0XFF41,0X14C5,0XFD69 +-pa5ga0=0XFF39,0X1732,0XFD27,0XFF31,0X16A5,0XFD33,0XFF28,0X158F,0XFD49,0XFF45,0X16F3,0XFD25 +-pa5ga1=0XFF3A,0X1707,0XFD2A,0XFF31,0X166C,0XFD38,0XFF22,0X149A,0XFD62,0XFF49,0X1696,0XFD33 ++pa2ga0=-164,5202,-656 ++pa2ga1=-180,5157,-654 ++pa5ga0=-181,6179,-745,-180,6166,-740,-176,6025,-728,-175,5877,-718 ++pa5ga1=-199,5842,-726,-198,5855,-728,-191,5691,-712,-170,5809,-715 + paprdis=1 + pdgain2g=4 + pdgain5g=4 +@@ -73,9 +71,8 @@ pdoffset80ma1=0x0000 + pdoffsetcckma0=0x4 + pdoffsetcckma1=0x4 + phycal_tempdelta=255 +-#prodid=0x052e + rawtempsense=0x1ff +-regrev=996 ++regrev=122 + rssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8 + rssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8 + rssicorrnorm_c0=4,4 +@@ -85,9 +82,7 @@ rxgains2gelnagaina0=0 + rxgains2gelnagaina1=0 + rxgains2gtrelnabypa0=0 + rxgains2gtrelnabypa1=0 +-#rxgains2gtrisoa0=3 + rxgains2gtrisoa0=7 +-#rxgains2gtrisoa1=3 + rxgains2gtrisoa1=7 + rxgains5gelnagaina0=0 + rxgains5gelnagaina1=0 +@@ -95,23 +90,17 @@ rxgains5ghelnagaina0=0 + rxgains5ghelnagaina1=0 + rxgains5ghtrelnabypa0=0 + rxgains5ghtrisoa0=12 +-#rxgains5ghtrisoa0=4 + rxgains5ghtrisoa1=11 +-#rxgains5ghtrisoa1=4 + rxgains5gmelnagaina0=0 + rxgains5gmelnagaina1=0 + rxgains5gmtrelnabypa0=0 + rxgains5gmtrelnabypa1=0 + rxgains5gmtrisoa0=13 +-#rxgains5gmtrisoa0=4 + rxgains5gmtrisoa1=11 +-#rxgains5gmtrisoa1=4 + rxgains5gtrelnabypa0=0 + rxgains5gtrelnabypa1=0 + rxgains5gtrisoa0=11 +-#rxgains5gtrisoa0=4 + rxgains5gtrisoa1=10 +-#rxgains5gtrisoa1=4 + sb20in40hrpo=0x0 + sb20in40lrpo=0x0 + sb20in80and160hr5ghpo=0x0 From patchwork Tue Oct 29 15:46:59 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: 2003838 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=uRTx5BCm; 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=iqhcUNzi; 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=L9XxjhIa; 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 4XdHZ54ztXz1xxd for ; Wed, 30 Oct 2024 04:39:25 +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=Ae/y20D8y7dbp21vtXtCXpbgBPakmaZD0fmGtQl0+Ps=; b=uRTx5BCmnqeEl5 TQWTrnUCd7p2Ddot+gwr52WaPAqSkYGUytEOSR1OkdKyRyrQIolovU+zqvxr4UYCNwuD2NHemInQm XhK2BQQyGkjzKcEwOJOTzcIAODPN0tdBKzwqDiQbBbfZ2AZ9MNF9v507FGSR9VkUzvfa1ZMcjDAwf b7GCyegSBcB22cnBhpVYkar2ZysrF5oCpLXrMM2D6QbKD3H1Jfmbw2zU5vNYxFOJmBSFHtqibDXha ylBj9+LzJPTL71LBuMgTv1hoYUw0fdR3TSbxKNCdhTuiyPLf/qzUbEmg5l3lh6XRs+MaiEtHm3S7v VWe1eBw1mULONNBiMSjg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qAS-0000000FJYQ-3snP; Tue, 29 Oct 2024 17:38:08 +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 1t5oox-0000000F4mu-24ee for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:51 +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=GZr3tVKpa07R34Fgc5GwzFMr9u2jSWtfyH4YOlBu1vA=; b=iqhcUNziYhm13IKDtplel1BqsK 7r4zRnmQPtwYMfTelBUasIO7K05HpZRdZS9XryGyuQwGiEEUkFPDHbyQiJmwjeGhxux9UCI2qmbqC BBGcH7QZ2gyvT3B9D6oT70Ng6oYcxOe7V6aN0PA2N6guN1zUAEf1ppvbcSd4rsixfp6A+rY+cxzMZ +w8NxSUTOFfi8eENHCYW6ws+Xx5KQc6LR+l30WMbJRFvrYYAE+IYx0VlVafNdQVNc+4ZQJuHR2uZi kmfrNivsHfTKTGMz4PV4SIv1EprWpVtmZ18YvUee8Y/Qv8pVKVCPzxcIZwZA2pN+dFYiI+cOtIIkk poOhyuSA==; Received: from terefe.re ([5.255.96.200]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oou-00000009wlm-0np8 for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:49 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 3522C2030E; 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=1730218303; bh=y8WvNr2aLs0EiuQ+bK6xrqpr5rx5XpzGioCzaVIURIM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=L9XxjhIaacKOAomxqfqvefbpeRkG/mBzIkOM8xz6DPq+cYoxpFQstcsF2TXItEPrA 1TF3YLac2NLui1Dwe5hWR68zFbnUSWmyDOefwCwm+J1LXmHKvY8mvPSzKJS+38SKA/ +2Iisp64fFo3Utad6+xYtoMyUBRiF4rtGIR10qfT1o+I9XjDOqQ7ghcAYnV7HrwBuS I4wLeIj4pPvhLNANAZCyKTbxoBp07N0plGw0OQdeNfBKk5dT6jS/gMUBvcitJpKO/G LUkxgFkBj4cXixGz7wtrfMU3HHI845qbUk/lr68/0CqyzCHn27qm0Q93D0vB0EaoLQ U+XwktlbnSeRg== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 06/14] build: add support for cortex-a57 cpu Date: Tue, 29 Oct 2024 16:46:59 +0100 Message-ID: <20241029161046.110403-7-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_161148_376913_A9945E9B X-CRM114-Status: UNSURE ( 8.20 ) X-CRM114-Notice: Please train this message. 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: Koen Vandeputte Tegra X1 has only Cortex-A57 cores, so add optimisation for upcoming device. Signed-off-by: Koen Vandeputte [add commit message] Signed-off-by: Tomasz Maciej Nowak --- include/target.mk | 1 + 1 file changed, 1 insertion(+) 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: Koen Vandeputte Tegra X1 has only Cortex-A57 cores, so add optimisation for upcoming device. Signed-off-by: Koen Vandeputte [add commit message] Signed-off-by: Tomasz Maciej Nowak --- include/target.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/include/target.mk b/include/target.mk index d13902ad6e78..d6af4d04e816 100644 --- a/include/target.mk +++ b/include/target.mk @@ -278,6 +278,7 @@ ifeq ($(DUMP),1) CPU_TYPE ?= generic CPU_CFLAGS_generic = -mcpu=generic CPU_CFLAGS_cortex-a53 = -mcpu=cortex-a53 + CPU_CFLAGS_cortex-a57 = -mcpu=cortex-a57 endif ifeq ($(ARCH),arc) CPU_TYPE ?= arc700 From patchwork Tue Oct 29 15:47:00 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: 2003842 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=kQjVPagH; 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=YrisLDZt; 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=A5/21AXw; 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 4XdHZ80jfDz1xxm for ; Wed, 30 Oct 2024 04:39:27 +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=zrLq4TUTXri3nC3ijYa0LDfl7fax4yHGVsXgONlxeCc=; b=kQjVPagHJW5Fpd qv4SnFNHgn9MCrfL7cdPkZVxiL+3fuUGf7x5USd8WOUk8cj6T7Nhi6or5b1qW/vb9k+PLpSKy7Sd2 LwmHN+v3IAgV8tPjR7oeXwbCUtFM0oHbS4P2x9L/E2IKBDQQ1AbOIph5Btq00eQErIbnoncRO+3yJ tOltEZoaQOA6XzK4jYvo4XPPIb2PBwv7vYPgTsXtHm7otAmRF/lJ5cN9ISn47UvvY6kUcURmkv2/I g7gKFmUlm1wgQiQp0S8v4mZPrHLrS75dCkWwCVgNPexcOQPNsQ09aLYsGvnVwvSb7cbM6RHJkSpd2 jSN9MF41jsbIiXw9a2Qw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qAc-0000000FJf5-1BwK; Tue, 29 Oct 2024 17:38:18 +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-0000000F4nP-045K 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=Jo3NlG7zSC+ZmuVGq6zTtLsCdohzzh/AxKaz2lyU/Zs=; b=YrisLDZtbQGOC1wS+dn4PjE9u/ 7HCojaP4Y+/1+9caG0R+dKMDH8UEtn0WuBW3SYdzSzuhNmarRbTGBxVI0P5n0G0OFQNIf9jBv4uA7 o6U3qd1Ab/j+1zxAC7Co0m7Vh2L7QcGjT1s00at3g0Uzv2QEO30rh4MaZ5TjB1FT35n9aFi/cG6t0 fAmX8DKKGUTRVHc8/d06g+7krnoCNNymRrrVhgmh+SH0t4OBn7nC7W/WPPrZunyWvE0zmh9aAd8CH jqVAXEmNAGPBmBdkTA0G3YBjCVtAy49QQEoIUJc5YSXus4NExr8r60VoJ8XYUJxNBsIIwdy4ah5iV ut2LrQBA==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oou-00000009wmW-3PRW 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 954862030F; 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=1730218303; bh=vf2FBapVaLVhBgCwhJncHJRtJduVkem1dZFwrlGMs/0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A5/21AXwv6t2kW1hS0hIgTJqPPVsVRR5dWs65fOhW6eXLby0OyrD3aM5uGGekb6KM 3geOFSfHlzAGEA5X8ZGUWTzFfBDGWMo3rhgtNQENjq85LhdTbLnfwrn8JPNGowDcwh D/X1GQ2HiT4d4UwRabULAEVTrI6UP2xlPtx/Q+OSXJ//vYv2Zz9AhUE5IHeCFAtnHg 9JKtaY1HjnzrDzHWX73YxtlkfO1UI23bR0JgophOslRZR9g7k9e327czLdMSF/nVjX rdNO6DXYc2dC/H+J5AWmv2eigtpNjMRTuQgQeSAwF/GINesjFJTyvbNxdeh+RbNcUS xseivEJ2DkYow== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 07/14] uboot-tegra: bump version to 2024.10 Date: Tue, 29 Oct 2024 16:47:00 +0100 Message-ID: <20241029161046.110403-8-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_089992_5E828DA0 X-CRM114-Status: UNSURE ( 6.66 ) X-CRM114-Notice: Please train this message. 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 Simple maintenace bump. No affecting changes. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 Simple maintenace bump. No affecting changes. Signed-off-by: Tomasz Maciej Nowak --- package/boot/uboot-tegra/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/boot/uboot-tegra/Makefile b/package/boot/uboot-tegra/Makefile index 11104920ffe4..372a75175448 100644 --- a/package/boot/uboot-tegra/Makefile +++ b/package/boot/uboot-tegra/Makefile @@ -6,14 +6,14 @@ # include $(TOPDIR)/rules.mk -PKG_VERSION := 2024.04 -PKG_RELEASE:=1 +PKG_VERSION := 2024.10 +PKG_RELEASE := 1 -PKG_HASH := 18a853fe39fad7ad03a90cc2d4275aeaed6da69735defac3492b80508843dd4a +PKG_HASH := b28daf4ac17e43156363078bf510297584137f6df50fced9b12df34f61a92fb0 PKG_MAINTAINER := Tomasz Maciej Nowak -UBOOT_USE_INTREE_DTC:=1 +UBOOT_USE_INTREE_DTC := 1 include $(INCLUDE_DIR)/u-boot.mk include $(INCLUDE_DIR)/package.mk 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; From patchwork Tue Oct 29 15:47:02 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: 2003854 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=elzCM8uo; 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=VzsBi5Ss; 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 4XdK3j4tGbz1xwK for ; Wed, 30 Oct 2024 05:46:41 +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=fksWk+helfUhbczujSyz+wiR+NP26isGtQG0QO62LPc=; b=elzCM8uoC4FZRe 8iiJqcWxbikx2nLUfkMrJjaX0L4sLBnFl1GDapKaN0D0lDjY9S39N2q0GihDETNnXxiJTX36MRHJ/ OEkbafWAmgaVxUrbeapykm4oDeP5h8f5O/y0HZDxvEaPtdE9LRQNm1ZyEAzOhCoTc3vYaOBV8W7jj y6hH2NOWPhnHfUZ9DJQCPcrio5ktbPA64SBmz7HnP/WVUM7NcmPfVYCmbXnDdPLkTaAyQyfvbMx3u YMnWSKiLUen4qai0sRIRfU4U5iM6nii27iaxDstQBf8YRwwW+hKTp/OIDBPJPUvNqJlR7KkFEJRD0 uYGzc8j0znxfhSq4YTIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5rDl-0000000FWi5-1VRb; Tue, 29 Oct 2024 18:45:37 +0000 Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5ovC-0000000F5oe-08vu for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:18:22 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 404B820311; Tue, 29 Oct 2024 17:11:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218304; bh=W1X+htLDfB8SUIVKnDTjLdgDbWUz08O2gPF34gdZC0A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VzsBi5SsDIUe5ULv1ChRg2ffM8oSTMPfsuNt2dgaTvfu6InyU8fYlRezdL+imxzdq hVqEusmnniDYKaP+EH4e6966udEUNZMALeUpeVAnYN4lywWnGmpk2OVQD8M6bYsnpF ERTZ3uc54VIpjm6G1ctBPUw7fex5So+GrFco4zt+HR+65JcqoFxmsbPMFGxKjxzgqI akaOP0+AzElFT8Jr3L6BBy+GlnBC0ftqZGwJXJiuHlAENcHhGpLXAJvYK4xwLkRg0k iPDzG2+ZwqDYCpl+1GJnNv4+yMJ1hxbBsVk/PTFEkx7UKL2xM83KBptT00x9xpqsKl 2Tf2Mb0GDDdpA== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 09/14] tegra: add support for NVIDIA Jetson TX1 DevKit Date: Tue, 29 Oct 2024 16:47:02 +0100 Message-ID: <20241029161046.110403-10-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-Spam-Note: CRM114 run bypassed due to message size (130982 bytes) X-Spam-Score: -0.4 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.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 Introduce new tegra subtarget featuring Jetson TX1 Developer Kit. This Kit consist o two parts, a system on module (P2180) and base board (P2597). The follownig brief specification will treat both as [...] Content analysis details: (-0.4 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.7 URIBL_BLACK Contains an URL listed in the URIBL blacklist [URI: system.sh] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's 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 -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.0 UPPERCASE_50_75 message body is 50-75% uppercase 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 Introduce new tegra subtarget featuring Jetson TX1 Developer Kit. This Kit consist o two parts, a system on module (P2180) and base board (P2597). The follownig brief specification will treat both as a single device and mention mostly OpenWrt relevant features. CPU: NVIDIA Tegra X1 quad-core @2.2 GHz (Cortex-A57) RAM: 4 GiB LP-DDR4 Ethernet: 1 Gb RTL8152 Wireless: 2.4/5 GHz 2T2R BCM4354 SDIO Storage: 16 GiB eMMC SD card slot SATA port PCIe: single 4x slot M.2 key E slot USB: 1x 3.0 Type A 1x 2.0 Micro AB OTG LEDs: 4x Buttons: 4x, 3 are GPIO controlled Expansion headers: 1x 30-pin (J26) 1x 40-pin (J21) UART: on J21 header, sinals voltage depend on J24 jumper setting, starting count from white triangle 8. RX, 9. GND, 10. TX baud: 115200, parity: none, flow control: none Prerequisite To run OpenWrt on the board it is mandatory to have TegraBoot and Cboot in versions (at least) provided in L4T 28.1 BSP, recomended is using the latest version from 32.7.5 BSP. Consult L4T documentation[1] on how to update L4T release on Your Board. Recomendation For properly propagating Tegra External Memory Controller tables to the kernel, U-Boot bootloader needs to be updated with upstream version (OpenWrt provides slightly extended one). To do that download U-Boot image from OpenWrt site and replace U-Boot from L4T extracted archive under 'bootloader/t210ref/p2371-2180' path. Then run following command to replace U-Boot on the eMMC: After reset device should use updated bootloader. Installation Currently booting OpenWrt from SD card is supported. Simply unpack and write downloaded image with -sdcard.img.gz suffix to an SD card. Place it in slot, apply power and the board should boot straight to OpenWrt. Console can be reached through UART pins, micro USB or SSH. Upgrade The image with -sdcard.img.gz suffix is also a sysupgrade image and it can be fed to sysupgrade or LuCI interface without unpacking. 1. https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-3275/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/quick_start.html Signed-off-by: Tomasz Maciej Nowak --- config/Config-images.in | 2 +- package/firmware/cypress-firmware/Makefile | 3 + package/kernel/linux/modules/crypto.mk | 4 +- package/kernel/linux/modules/usb.mk | 3 +- package/kernel/mac80211/broadcom.mk | 1 + target/linux/tegra/Makefile | 2 +- target/linux/tegra/armv7/config-6.6 | 296 ++++++++++++++++ target/linux/tegra/armv8/config-6.6 | 230 +++++++++++++ target/linux/tegra/armv8/target.mk | 9 + .../etc/hotplug.d/ieee80211/10-fix-wifi-mac | 22 ++ target/linux/tegra/base-files/etc/inittab | 1 + .../lib/preinit/81_load_serial_gadget | 11 + target/linux/tegra/config-6.6 | 315 +----------------- target/linux/tegra/image/Makefile | 2 +- target/linux/tegra/image/armv8.mk | 11 + target/linux/tegra/image/bootscript.txt | 11 +- ...-iommu-Add-iommu_ops-identity_domain.patch | 95 ++++++ ...v6.7-iommu-Add-IOMMU_DOMAIN_PLATFORM.patch | 134 ++++++++ ...-iommu_get_default_domain_type-to-re.patch | 184 ++++++++++ ...DENTITY-domain-as-the-default_domain.patch | 104 ++++++ ...ra-smmu-Implement-an-IDENTITY-domain.patch | 90 +++++ ...ra-smmu-Support-DMA-domains-in-tegra.patch | 36 ++ ...ommu-Remove-ops-set_platform_dma_ops.patch | 102 ++++++ ...default_domain-for-all-iommu-drivers.patch | 127 +++++++ ...iommu-Add-__iommu_group_domain_alloc.patch | 171 ++++++++++ ....7-iommu-Add-ops-domain_alloc_paging.patch | 101 ++++++ ...mple-drivers-with-DOMAIN_DMA-to-doma.patch | 50 +++ ...mmu-Remove-useless-group-refcounting.patch | 239 +++++++++++++ ...ommu-Add-generic_single_device_group.patch | 110 ++++++ ...-IOMMU_DOMAIN_DMA-if-CONFIG_IOMMU_DM.patch | 46 +++ ...-code-in-iommu_group_alloc_default_d.patch | 29 ++ ...ra-Fix-gpio-for-P2597-vmmc-regulator.patch | 28 ++ ...wp-gpio-for-P2597-s-external-card-sl.patch | 27 ++ ...-up-power-sensors-on-Jetson-TX1-DevK.patch | 112 +++++++ ...re-up-Bluetooth-on-Jetson-TX1-module.patch | 43 +++ ...ra-Wire-up-WiFi-on-Jetson-TX1-module.patch | 48 +++ ...dd-SDMMC-sdr104-offsets-for-Tegra-X1.patch | 29 ++ ...-hci_bcm-do-not-mark-valid-bd_addr-a.patch | 27 ++ ...-up-PWM-fan-on-Jetson-TX1-DevKit-bas.patch | 49 +++ ...d-cooling-maps-for-Jetson-TX1-module.patch | 127 +++++++ ...ra-keep-crucial-sysfs-paths-constant.patch | 14 + 41 files changed, 2723 insertions(+), 322 deletions(-) create mode 100644 target/linux/tegra/armv7/config-6.6 create mode 100644 target/linux/tegra/armv8/config-6.6 create mode 100644 target/linux/tegra/armv8/target.mk create mode 100644 target/linux/tegra/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac create mode 100644 target/linux/tegra/base-files/lib/preinit/81_load_serial_gadget create mode 100644 target/linux/tegra/image/armv8.mk create mode 100644 target/linux/tegra/patches-6.6/001-v6.7-iommu-Add-iommu_ops-identity_domain.patch create mode 100644 target/linux/tegra/patches-6.6/002-v6.7-iommu-Add-IOMMU_DOMAIN_PLATFORM.patch create mode 100644 target/linux/tegra/patches-6.6/003-v6.7-iommu-Reorganize-iommu_get_default_domain_type-to-re.patch create mode 100644 target/linux/tegra/patches-6.6/004-v6.7-iommu-Allow-an-IDENTITY-domain-as-the-default_domain.patch create mode 100644 target/linux/tegra/patches-6.6/005-v6.7-iommu-tegra-smmu-Implement-an-IDENTITY-domain.patch create mode 100644 target/linux/tegra/patches-6.6/006-v6.7-iommu-tegra-smmu-Support-DMA-domains-in-tegra.patch create mode 100644 target/linux/tegra/patches-6.6/007-v6.7-iommu-Remove-ops-set_platform_dma_ops.patch create mode 100644 target/linux/tegra/patches-6.6/008-v6.7-iommu-Require-a-default_domain-for-all-iommu-drivers.patch create mode 100644 target/linux/tegra/patches-6.6/009-v6.7-iommu-Add-__iommu_group_domain_alloc.patch create mode 100644 target/linux/tegra/patches-6.6/010-v6.7-iommu-Add-ops-domain_alloc_paging.patch create mode 100644 target/linux/tegra/patches-6.6/011-v6.7-iommu-Convert-simple-drivers-with-DOMAIN_DMA-to-doma.patch create mode 100644 target/linux/tegra/patches-6.6/012-v6.7-iommu-Remove-useless-group-refcounting.patch create mode 100644 target/linux/tegra/patches-6.6/013-v6.7-iommu-Add-generic_single_device_group.patch create mode 100644 target/linux/tegra/patches-6.6/014-v6.7-iommu-Do-not-use-IOMMU_DOMAIN_DMA-if-CONFIG_IOMMU_DM.patch create mode 100644 target/linux/tegra/patches-6.6/015-v6.7-iommu-Fix-return-code-in-iommu_group_alloc_default_d.patch create mode 100644 target/linux/tegra/patches-6.6/016-v6.12-arm64-tegra-Fix-gpio-for-P2597-vmmc-regulator.patch create mode 100644 target/linux/tegra/patches-6.6/017-v6.12-arm64-tegra-Add-wp-gpio-for-P2597-s-external-card-sl.patch create mode 100644 target/linux/tegra/patches-6.6/018-v6.12-arm64-tegra-Wire-up-power-sensors-on-Jetson-TX1-DevK.patch create mode 100644 target/linux/tegra/patches-6.6/019-v6.12-arm64-tegra-Wire-up-Bluetooth-on-Jetson-TX1-module.patch create mode 100644 target/linux/tegra/patches-6.6/020-v6.12-arm64-tegra-Wire-up-WiFi-on-Jetson-TX1-module.patch create mode 100644 target/linux/tegra/patches-6.6/021-v6.13-arm64-tegra-Add-SDMMC-sdr104-offsets-for-Tegra-X1.patch create mode 100644 target/linux/tegra/patches-6.6/102-Revert-Bluetooth-hci_bcm-do-not-mark-valid-bd_addr-a.patch create mode 100644 target/linux/tegra/patches-6.6/103-arm64-tegra-wire-up-PWM-fan-on-Jetson-TX1-DevKit-bas.patch create mode 100644 target/linux/tegra/patches-6.6/104-arm64-tegra-add-cooling-maps-for-Jetson-TX1-module.patch create mode 100644 target/linux/tegra/patches-6.6/105-arm64-tegra-keep-crucial-sysfs-paths-constant.patch diff --git a/config/Config-images.in b/config/Config-images.in index 47f3dfc0d960..805932ab6e06 100644 --- a/config/Config-images.in +++ b/config/Config-images.in @@ -294,7 +294,7 @@ menu "Target Images" int "Kernel partition size (in MiB)" depends on USES_BOOT_PART default 8 if TARGET_apm821xx_sata - default 64 if TARGET_bcm27xx + default 64 if TARGET_bcm27xx || TARGET_tegra_armv8 default 128 if TARGET_armsr default 16 diff --git a/package/firmware/cypress-firmware/Makefile b/package/firmware/cypress-firmware/Makefile index 2b354b9eae62..a398d75207e3 100644 --- a/package/firmware/cypress-firmware/Makefile +++ b/package/firmware/cypress-firmware/Makefile @@ -210,6 +210,9 @@ define Package/cypress-firmware-4354-sdio/install $(LN) \ ../cypress/cyfmac4354-sdio.bin \ $(1)/lib/firmware/brcm/brcmfmac4354-sdio.bin + $(LN) \ + ../cypress/cyfmac4354-sdio.bin \ + $(1)/lib/firmware/brcm/brcmfmac4354-sdio.nvidia,p2371-2180.bin $(LN) \ ../cypress/cyfmac4354-sdio.clm_blob \ $(1)/lib/firmware/brcm/brcmfmac4354-sdio.clm_blob diff --git a/package/kernel/linux/modules/crypto.mk b/package/kernel/linux/modules/crypto.mk index ce2216354703..8d01587415b0 100644 --- a/package/kernel/linux/modules/crypto.mk +++ b/package/kernel/linux/modules/crypto.mk @@ -974,7 +974,7 @@ define KernelPackage/crypto-sha1/octeon AUTOLOAD+=$(call AutoLoad,09,octeon-sha1) endef -KernelPackage/crypto-sha1/tegra=$(KernelPackage/crypto-sha1/arm) +KernelPackage/crypto-sha1/tegra/armv7=$(KernelPackage/crypto-sha1/arm) define KernelPackage/crypto-sha1/mpc85xx FILES+=$(LINUX_DIR)/arch/powerpc/crypto/sha1-ppc-spe.ko @@ -1102,7 +1102,7 @@ define KernelPackage/crypto-sha512/octeon AUTOLOAD+=$(call AutoLoad,09,octeon-sha512) endef -KernelPackage/crypto-sha512/tegra=$(KernelPackage/crypto-sha512/arm) +KernelPackage/crypto-sha512/tegra/armv7=$(KernelPackage/crypto-sha512/arm) ifndef CONFIG_TARGET_uml define KernelPackage/crypto-sha512/x86_64 diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index b1366245ffab..a970a08e6b2c 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -1914,7 +1914,8 @@ $(eval $(call KernelPackage,chaoskey)) define KernelPackage/usb-xhci-tegra TITLE:=xHCI support for Tegra SoCs - DEPENDS:=@TARGET_tegra +kmod-usb-xhci-hcd +kmod-usb-roles + DEPENDS:=@TARGET_tegra +kmod-usb-xhci-hcd +kmod-usb-roles \ + +TARGET_tegra_armv8:t210-usb-firmware KCONFIG:= \ CONFIG_USB_XHCI_TEGRA \ CONFIG_PHY_TEGRA_XUSB=m diff --git a/package/kernel/mac80211/broadcom.mk b/package/kernel/mac80211/broadcom.mk index a6f42cd19af2..20201447b741 100644 --- a/package/kernel/mac80211/broadcom.mk +++ b/package/kernel/mac80211/broadcom.mk @@ -437,6 +437,7 @@ define KernelPackage/brcmfmac/config default y if TARGET_starfive default y if TARGET_rockchip default y if TARGET_sunxi + default y if TARGET_tegra_armv8 default n help Enable support for cards attached to an SDIO bus. diff --git a/target/linux/tegra/Makefile b/target/linux/tegra/Makefile index 433510e23d6a..5f287cfd0d02 100644 --- a/target/linux/tegra/Makefile +++ b/target/linux/tegra/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk BOARD := tegra BOARDNAME := NVIDIA Tegra FEATURES := audio boot-part display ext4 fpu gpio pci pcie rootfs-part rtc squashfs usb -SUBTARGETS := armv7 +SUBTARGETS := armv7 armv8 KERNEL_PATCHVER := 6.6 diff --git a/target/linux/tegra/armv7/config-6.6 b/target/linux/tegra/armv7/config-6.6 new file mode 100644 index 000000000000..1fcd6118e50b --- /dev/null +++ b/target/linux/tegra/armv7/config-6.6 @@ -0,0 +1,296 @@ +CONFIG_AC97_BUS=y +# CONFIG_AHCI_TEGRA is not set +CONFIG_ALIGNMENT_TRAP=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MULTIPLATFORM=y +CONFIG_ARCH_MULTI_V6_V7=y +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y +CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +# CONFIG_ARCH_TEGRA_114_SOC is not set +# CONFIG_ARCH_TEGRA_124_SOC is not set +CONFIG_ARCH_TEGRA_2x_SOC=y +# CONFIG_ARCH_TEGRA_3x_SOC is not set +CONFIG_ARM=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_ERRATA_720789=y +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +CONFIG_ARM_HAS_GROUP_RELOCS=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_PATCH_IDIV=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +# CONFIG_ARM_TEGRA124_CPUFREQ is not set +CONFIG_ARM_TEGRA20_CPUFREQ=y +CONFIG_ARM_TEGRA_CPUIDLE=y +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +CONFIG_ARM_UNWIND=y +CONFIG_ARM_VIRT_EXT=y +CONFIG_ASN1=y +CONFIG_ATAGS=y +CONFIG_AUTO_ZRELADDR=y +CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y +CONFIG_BOUNCE=y +CONFIG_CACHE_L2X0=y +CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y +CONFIG_CLZ_TAB=y +CONFIG_CMA_AREAS=7 +CONFIG_CMA_SIZE_MBYTES=16 +CONFIG_CPU_32v6K=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_STAT is not set +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_SPECTRE=y +CONFIG_CPU_THUMB_CAPABLE=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_V7=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO_AES_ARM=y +CONFIG_CRYPTO_CRYPTD=y +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_ECHAINIV=y +CONFIG_CRYPTO_GENIV=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_LZ4=y +CONFIG_CRYPTO_LZ4HC=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_ARM=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA256_ARM=y +CONFIG_CRYPTO_SHA3=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA512_ARM=y +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y +CONFIG_CURRENT_POINTER_IN_TPIDRURO=y +CONFIG_DDR=y +CONFIG_DEBUG_ALIGN_RODATA=y +CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" +# CONFIG_DEVFREQ_THERMAL is not set +CONFIG_DRM=y +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +CONFIG_DRM_DISPLAY_HELPER=y +CONFIG_DRM_DP_AUX_BUS=y +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_PANEL=y +CONFIG_DRM_PANEL_BRIDGE=y +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y +CONFIG_DRM_TEGRA=y +# CONFIG_DRM_TEGRA_DEBUG is not set +# CONFIG_DRM_TEGRA_STAGING is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_FB_CORE=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FUNCTION_ALIGNMENT=0 +CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_GENERIC_VDSO_32=y +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_HAVE_SMP=y +CONFIG_HDMI=y +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_HZ_FIXED=0 +CONFIG_HZ_PERIODIC=y +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_VIVALDIFMAP=y +CONFIG_IRQSTACKS=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KMAP_LOCAL=y +CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y +CONFIG_LZ4HC_COMPRESS=y +CONFIG_LZ4_COMPRESS=y +CONFIG_LZ4_DECOMPRESS=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +CONFIG_MEDIA_CONTROLLER_REQUEST_API=y +CONFIG_MEDIA_PLATFORM_DRIVERS=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_SUPPORT_FILTER=y +# CONFIG_MFD_ACER_A500_EC is not set +# CONFIG_MFD_NVEC is not set +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_MPILIB=y +CONFIG_NEED_SRCU_NMI_SAFE=y +# CONFIG_NEON is not set +CONFIG_NR_CPUS=4 +CONFIG_OLD_SIGACTION=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PCIEAER=y +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +CONFIG_PCIEPORTBUS=y +CONFIG_PCIE_PME=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_PHY_TEGRA_XUSB=y +CONFIG_PINCTRL_TEGRA20=y +CONFIG_PL310_ERRATA_727915=y +CONFIG_PL310_ERRATA_769419=y +CONFIG_PL353_SMC=y +# CONFIG_PM_DEVFREQ_EVENT is not set +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_RAS=y +CONFIG_REGMAP_SPI=y +# CONFIG_RTC_DRV_CMOS is not set +CONFIG_SERIO_LIBPS2=y +CONFIG_SGL_ALLOC=y +CONFIG_SMP_ON_UP=y +CONFIG_SND=y +CONFIG_SND_AUDIO_GRAPH_CARD=y +# CONFIG_SND_COMPRESS_OFFLOAD is not set +CONFIG_SND_DMAENGINE_PCM=y +# CONFIG_SND_HDA_TEGRA is not set +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +# CONFIG_SND_PCI is not set +CONFIG_SND_PCM=y +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +# CONFIG_SND_PROC_FS is not set +CONFIG_SND_SIMPLE_CARD=y +CONFIG_SND_SIMPLE_CARD_UTILS=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_HDMI_CODEC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_TEGRA=y +# CONFIG_SND_SOC_TEGRA186_ASRC is not set +# CONFIG_SND_SOC_TEGRA186_DSPK is not set +CONFIG_SND_SOC_TEGRA20_AC97=y +CONFIG_SND_SOC_TEGRA20_DAS=y +CONFIG_SND_SOC_TEGRA20_I2S=y +CONFIG_SND_SOC_TEGRA20_SPDIF=y +# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set +# CONFIG_SND_SOC_TEGRA210_ADX is not set +# CONFIG_SND_SOC_TEGRA210_AHUB is not set +# CONFIG_SND_SOC_TEGRA210_AMX is not set +# CONFIG_SND_SOC_TEGRA210_DMIC is not set +# CONFIG_SND_SOC_TEGRA210_I2S is not set +# CONFIG_SND_SOC_TEGRA210_MIXER is not set +# CONFIG_SND_SOC_TEGRA210_MVC is not set +# CONFIG_SND_SOC_TEGRA210_OPE is not set +# CONFIG_SND_SOC_TEGRA210_SFC is not set +# CONFIG_SND_SOC_TEGRA30_AHUB is not set +# CONFIG_SND_SOC_TEGRA30_I2S is not set +# CONFIG_SND_SOC_TEGRA_ALC5632 is not set +# CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD is not set +CONFIG_SND_SOC_TEGRA_MACHINE_DRV=y +# CONFIG_SND_SOC_TEGRA_MAX98088 is not set +# CONFIG_SND_SOC_TEGRA_MAX98090 is not set +# CONFIG_SND_SOC_TEGRA_RT5631 is not set +# CONFIG_SND_SOC_TEGRA_RT5640 is not set +# CONFIG_SND_SOC_TEGRA_RT5677 is not set +# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set +CONFIG_SND_SOC_TEGRA_TRIMSLICE=y +# CONFIG_SND_SOC_TEGRA_WM8753 is not set +# CONFIG_SND_SOC_TEGRA_WM8903 is not set +# CONFIG_SND_SOC_TEGRA_WM9712 is not set +CONFIG_SND_SOC_TLV320AIC23=y +CONFIG_SND_SOC_TLV320AIC23_I2C=y +# CONFIG_SND_USB is not set +CONFIG_SOC_TEGRA20_VOLTAGE_COUPLER=y +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SOUND_OSS_CORE_PRECLAIM=y +# CONFIG_SPI_TEGRA114 is not set +CONFIG_SPI_TEGRA20_SFLASH=y +CONFIG_SPI_TEGRA20_SLINK=y +# CONFIG_SPI_TEGRA210_QUAD is not set +CONFIG_SRAM=y +CONFIG_SRAM_EXEC=y +CONFIG_SWP_EMULATE=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +# CONFIG_TEGRA186_TIMER is not set +CONFIG_TEGRA20_EMC=y +# CONFIG_TEGRA210_ADMA is not set +# CONFIG_TEGRA_ACONNECT is not set +CONFIG_TEGRA_GMI=y +CONFIG_TEGRA_HOST1X=y +CONFIG_TEGRA_HOST1X_CONTEXT_BUS=y +CONFIG_TEGRA_HOST1X_FIREWALL=y +# CONFIG_TEGRA_IOMMU_GART is not set +# CONFIG_TEGRA_IOMMU_SMMU is not set +# CONFIG_TEGRA_IVC is not set +# CONFIG_TEGRA_SOCTHERM is not set +# CONFIG_UCLAMP_TASK is not set +CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" +CONFIG_UNWINDER_ARM=y +# CONFIG_USB_TEGRA_XUDC is not set +# CONFIG_USB_XHCI_TEGRA is not set +CONFIG_USE_OF=y +CONFIG_V4L2_H264=y +CONFIG_V4L2_MEM2MEM_DEV=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_DMA_CONTIG=y +CONFIG_VIDEOBUF2_DMA_SG=y +CONFIG_VIDEOBUF2_MEMOPS=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEO_CMDLINE=y +CONFIG_VIDEO_DEV=y +CONFIG_VIDEO_NOMODESET=y +CONFIG_VIDEO_TEGRA_VDE=y +CONFIG_VIDEO_V4L2_I2C=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y diff --git a/target/linux/tegra/armv8/config-6.6 b/target/linux/tegra/armv8/config-6.6 new file mode 100644 index 000000000000..e4ed7d76d47a --- /dev/null +++ b/target/linux/tegra/armv8/config-6.6 @@ -0,0 +1,230 @@ +CONFIG_64BIT=y +CONFIG_AHCI_TEGRA=y +CONFIG_ARCH_BINFMT_ELF_EXTRA_PHDRS=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_ARCH_DEFAULT_KEXEC_IMAGE_VERIFY_SIG=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_FORCE_MAX_ORDER=10 +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_ARCH_MMAP_RND_BITS=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_TEGRA_132_SOC is not set +# CONFIG_ARCH_TEGRA_186_SOC is not set +# CONFIG_ARCH_TEGRA_194_SOC is not set +CONFIG_ARCH_TEGRA_210_SOC=y +# CONFIG_ARCH_TEGRA_234_SOC is not set +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_ARCH_WANTS_THP_SWAP=y +CONFIG_ARM64=y +CONFIG_ARM64_4K_PAGES=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +CONFIG_ARM64_PAGE_SHIFT=12 +CONFIG_ARM64_PA_BITS=48 +CONFIG_ARM64_PA_BITS_48=y +CONFIG_ARM64_SME=y +CONFIG_ARM64_SVE=y +CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_VA_BITS_39=y +CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +CONFIG_ARM_FFA_SMCCC=y +CONFIG_ARM_FFA_TRANSPORT=y +CONFIG_ARM_GIC_PM=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y +CONFIG_ARM_GIC_V3_ITS_PCI=y +# CONFIG_ARM_MHU_V2 is not set +CONFIG_ARM_PSCI_FW=y +# CONFIG_ARM_SMMU_V3 is not set +# CONFIG_ARM_SMMU is not set +CONFIG_ARM_TEGRA124_CPUFREQ=y +# CONFIG_ARM_TEGRA186_CPUFREQ is not set +# CONFIG_ARM_TEGRA20_CPUFREQ is not set +CONFIG_ARM_TEGRA_DEVFREQ=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_BLK_DEV_SD=y +CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CLK_TEGRA_BPMP=y +CONFIG_CMA_AREAS=20 +CONFIG_CMA_SIZE_MBYTES=64 +# CONFIG_COMMON_CLK_MAX77686 is not set +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_THERMAL=y +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_PM=y +CONFIG_CPU_THERMAL=y +CONFIG_CRC7=y +CONFIG_CRC_ITU_T=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC=y +CONFIG_DMA_DIRECT_REMAP=y +CONFIG_DMA_VIRTUAL_CHANNELS=y +# CONFIG_DRM_TEGRA is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_EEPROM_AT24=y +CONFIG_FIXED_PHY=y +CONFIG_FRAME_POINTER=y +CONFIG_FREEZER=y +CONFIG_FUNCTION_ALIGNMENT=4 +CONFIG_FUNCTION_ALIGNMENT_4B=y +CONFIG_FWNODE_MDIO=y +CONFIG_FW_CACHE=y +CONFIG_GCC_SUPPORTS_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_IOREMAP=y +CONFIG_GPIO_MAX77620=y +CONFIG_GPIO_PCA953X=y +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_HW_CONSOLE=y +CONFIG_I2C_CCGX_UCSI=y +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_PCA954x=y +CONFIG_I2C_TEGRA_BPMP=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_INPUT_KEYBOARD=y +# CONFIG_IOMMUFD is not set +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_DMA=y +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set +# CONFIG_IOMMU_IO_PGTABLE_DART is not set +# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_IRQ_MSI_IOMMU=y +CONFIG_KEYBOARD_GPIO=y +# CONFIG_MAX77620_THERMAL is not set +CONFIG_MAX77620_WATCHDOG=y +CONFIG_MDIO_BUS=y +CONFIG_MDIO_DEVICE=y +CONFIG_MDIO_DEVRES=y +CONFIG_MFD_CORE=y +CONFIG_MFD_MAX77620=y +# CONFIG_MFD_NVEC is not set +CONFIG_MFD_SYSCON=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_NEED_SG_DMA_FLAGS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NET_SELFTESTS=y +CONFIG_NO_HZ_COMMON=y +CONFIG_NO_HZ_IDLE=y +CONFIG_NR_CPUS=8 +CONFIG_NVMEM_SYSFS=y +CONFIG_OF_IOMMU=y +CONFIG_OF_MDIO=y +CONFIG_PARTITION_PERCPU=y +CONFIG_PER_VMA_LOCK=y +CONFIG_PGTABLE_LEVELS=3 +CONFIG_PHYLIB=y +CONFIG_PHYLIB_LEDS=y +CONFIG_PHYLINK=y +CONFIG_PHYS_ADDR_T_64BIT=y +# CONFIG_PHY_TEGRA_XUSB is not set +CONFIG_PINCTRL_MAX77620=y +CONFIG_PINCTRL_TEGRA210=y +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POWER_RESET_GPIO_RESTART=y +CONFIG_POWER_RESET_RESTART=y +CONFIG_QUEUED_RWLOCKS=y +CONFIG_QUEUED_SPINLOCKS=y +# CONFIG_RAVE_SP_CORE is not set +CONFIG_REGMAP_IRQ=y +CONFIG_REGULATOR_MAX77620=y +CONFIG_REGULATOR_PWM=y +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_RESET_TEGRA_BPMP=y +CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +CONFIG_RTC_DRV_MAX77686=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_HOST=y +CONFIG_SATA_PMP=y +CONFIG_SCHED_THERMAL_PRESSURE=y +CONFIG_SDIO_UART=y +CONFIG_SENSORS_INA3221=y +CONFIG_SENSORS_PWM_FAN=y +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_NR_UARTS=8 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +CONFIG_SERIAL_TEGRA_TCU=y +CONFIG_SERIAL_TEGRA_TCU_CONSOLE=y +# CONFIG_SND_HDA_TEGRA is not set +# CONFIG_SND_SOC_TEGRA is not set +CONFIG_SOC_TEGRA_POWERGATE_BPMP=y +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPI_TEGRA114=y +# CONFIG_SPI_TEGRA20_SFLASH is not set +# CONFIG_SPI_TEGRA20_SLINK is not set +CONFIG_SPI_TEGRA210_QUAD=y +CONFIG_STAGING_MEDIA=y +# CONFIG_STAGING_MEDIA_DEPRECATED is not set +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWIOTLB=y +CONFIG_SWPHY=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +# CONFIG_TEGRA186_GPC_DMA is not set +# CONFIG_TEGRA186_TIMER is not set +CONFIG_TEGRA210_ADMA=y +CONFIG_TEGRA210_EMC=y +CONFIG_TEGRA210_EMC_TABLE=y +CONFIG_TEGRA_ACONNECT=y +CONFIG_TEGRA_BPMP=y +CONFIG_TEGRA_BPMP_THERMAL=y +CONFIG_TEGRA_CLK_DFLL=y +# CONFIG_TEGRA_GMI is not set +CONFIG_TEGRA_IOMMU_SMMU=y +CONFIG_TEGRA_IVC=y +CONFIG_TEGRA_SOCTHERM=y +CONFIG_THERMAL=y +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +# CONFIG_UCLAMP_TASK is not set +CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_USB_OTG=y +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_PLATFORM is not set +CONFIG_V4L2_ASYNC=y +CONFIG_V4L2_FWNODE=y +# CONFIG_VIDEO_MAX96712 is not set +CONFIG_VIDEO_TEGRA=y +# CONFIG_VIDEO_TEGRA_TPG is not set +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_ZONE_DMA32=y diff --git a/target/linux/tegra/armv8/target.mk b/target/linux/tegra/armv8/target.mk new file mode 100644 index 000000000000..1726f0e867b5 --- /dev/null +++ b/target/linux/tegra/armv8/target.mk @@ -0,0 +1,9 @@ +ARCH := aarch64 +BOARDNAME := NVIDIA Tegra ARMv8 +CPU_TYPE := cortex-a57 +FEATURES += usbgadget +KERNELNAME := Image dtbs + +define Target/Description + Build firmware images for NVIDIA Tegra ARMv8 SoC based boards. +endef diff --git a/target/linux/tegra/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac b/target/linux/tegra/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac new file mode 100644 index 000000000000..331e544121ba --- /dev/null +++ b/target/linux/tegra/base-files/etc/hotplug.d/ieee80211/10-fix-wifi-mac @@ -0,0 +1,22 @@ +#!/bin/ash + +[ "$ACTION" = "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(board_name) + +case "$board" in + # Workaround for boards without updated U-Boot + nvidia,p2371-2180) + [ "$PHYNBR" -eq 0 ] && \ + get_mac_binary /sys/devices/platform/7000c500.i2c/i2c-1/1-0050/eeprom 0x32 \ + | awk -F':' 'OFS=":" {print $6,$5,$4,$3,$2,$1}' \ + > /sys${DEVPATH}/macaddress + ;; +esac diff --git a/target/linux/tegra/base-files/etc/inittab b/target/linux/tegra/base-files/etc/inittab index b944a93ada4b..7e263dfeb2c8 100644 --- a/target/linux/tegra/base-files/etc/inittab +++ b/target/linux/tegra/base-files/etc/inittab @@ -2,3 +2,4 @@ ::shutdown:/etc/init.d/rcS K shutdown ::askconsole:/usr/libexec/login.sh tty1::askfirst:/usr/libexec/login.sh +ttyGS0::askfirst:/usr/libexec/login.sh diff --git a/target/linux/tegra/base-files/lib/preinit/81_load_serial_gadget b/target/linux/tegra/base-files/lib/preinit/81_load_serial_gadget new file mode 100644 index 000000000000..97f3be548457 --- /dev/null +++ b/target/linux/tegra/base-files/lib/preinit/81_load_serial_gadget @@ -0,0 +1,11 @@ +. /lib/functions.sh + +load_serial_gadget() { + case $(board_name) in + nvidia,p2371-2180) + modprobe g_serial + ;; + esac +} + +boot_hook_add preinit_main load_serial_gadget diff --git a/target/linux/tegra/config-6.6 b/target/linux/tegra/config-6.6 index 9cecf9f6932a..274e0b29867d 100644 --- a/target/linux/tegra/config-6.6 +++ b/target/linux/tegra/config-6.6 @@ -1,72 +1,27 @@ -CONFIG_AC97_BUS=y -# CONFIG_AHCI_TEGRA is not set -CONFIG_ALIGNMENT_TRAP=y -CONFIG_ARCH_32BIT_OFF_T=y CONFIG_ARCH_HIBERNATION_POSSIBLE=y CONFIG_ARCH_KEEP_MEMBLOCK=y -CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y -CONFIG_ARCH_MULTIPLATFORM=y -CONFIG_ARCH_MULTI_V6_V7=y -CONFIG_ARCH_MULTI_V7=y -CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y -CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y -CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_STACKWALK=y CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_TEGRA=y -# CONFIG_ARCH_TEGRA_114_SOC is not set -# CONFIG_ARCH_TEGRA_124_SOC is not set -CONFIG_ARCH_TEGRA_2x_SOC=y -# CONFIG_ARCH_TEGRA_3x_SOC is not set -CONFIG_ARM=y CONFIG_ARM_AMBA=y -CONFIG_ARM_CPU_SUSPEND=y -CONFIG_ARM_ERRATA_720789=y -CONFIG_ARM_ERRATA_754327=y -CONFIG_ARM_ERRATA_764369=y CONFIG_ARM_GIC=y -CONFIG_ARM_HAS_GROUP_RELOCS=y -CONFIG_ARM_HEAVY_MB=y -CONFIG_ARM_L1_CACHE_SHIFT=6 -CONFIG_ARM_L1_CACHE_SHIFT_6=y -CONFIG_ARM_PATCH_IDIV=y -CONFIG_ARM_PATCH_PHYS_VIRT=y # CONFIG_ARM_PL172_MPMC is not set -# CONFIG_ARM_SMMU is not set -# CONFIG_ARM_TEGRA124_CPUFREQ is not set -CONFIG_ARM_TEGRA20_CPUFREQ=y -CONFIG_ARM_TEGRA_CPUIDLE=y -CONFIG_ARM_THUMB=y -CONFIG_ARM_THUMBEE=y -CONFIG_ARM_UNWIND=y -CONFIG_ARM_VIRT_EXT=y -CONFIG_ASN1=y CONFIG_ATA=y -CONFIG_ATAGS=y -CONFIG_AUTO_ZRELADDR=y -CONFIG_BINFMT_FLAT_ARGVP_ENVP_ON_STACK=y CONFIG_BLK_DEV_BSG=y CONFIG_BLK_DEV_BSG_COMMON=y CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_MQ_PCI=y CONFIG_BLK_PM=y -CONFIG_BOUNCE=y CONFIG_BUFFER_HEAD=y -CONFIG_CACHE_L2X0=y -CONFIG_CC_HAVE_STACKPROTECTOR_TLS=y CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" CONFIG_CC_NO_ARRAY_BOUNDS=y CONFIG_CLKSRC_MMIO=y CONFIG_CLONE_BACKWARDS=y -CONFIG_CLZ_TAB=y CONFIG_CMA=y CONFIG_CMA_ALIGNMENT=8 -CONFIG_CMA_AREAS=7 # CONFIG_CMA_DEBUG is not set # CONFIG_CMA_DEBUGFS is not set -CONFIG_CMA_SIZE_MBYTES=16 # CONFIG_CMA_SIZE_SEL_MAX is not set CONFIG_CMA_SIZE_SEL_MBYTES=y # CONFIG_CMA_SIZE_SEL_MIN is not set @@ -80,17 +35,7 @@ CONFIG_CONTEXT_TRACKING_IDLE=y CONFIG_CONTIG_ALLOC=y CONFIG_CPUFREQ_DT=y CONFIG_CPUFREQ_DT_PLATDEV=y -CONFIG_CPU_32v6K=y -CONFIG_CPU_32v7=y -CONFIG_CPU_ABRT_EV7=y -CONFIG_CPU_CACHE_V7=y -CONFIG_CPU_CACHE_VIPT=y -CONFIG_CPU_COPY_V6=y -CONFIG_CPU_CP15=y -CONFIG_CPU_CP15_MMU=y CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y -# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set CONFIG_CPU_FREQ_GOV_ATTR_SET=y CONFIG_CPU_FREQ_GOV_COMMON=y CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y @@ -99,69 +44,23 @@ CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_POWERSAVE=y CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y CONFIG_CPU_FREQ_GOV_USERSPACE=y -# CONFIG_CPU_FREQ_STAT is not set -CONFIG_CPU_HAS_ASID=y -CONFIG_CPU_IDLE=y -CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_CPU_MITIGATIONS=y -CONFIG_CPU_PABRT_V7=y -CONFIG_CPU_PM=y CONFIG_CPU_RMAP=y -CONFIG_CPU_SPECTRE=y -CONFIG_CPU_THUMB_CAPABLE=y -CONFIG_CPU_TLB_V7=y -CONFIG_CPU_V7=y CONFIG_CRC16=y -# CONFIG_CRC32_SARWATE is not set -CONFIG_CRC32_SLICEBY8=y -CONFIG_CROSS_MEMORY_ATTACH=y -CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CRC32=y CONFIG_CRYPTO_CRC32C=y -CONFIG_CRYPTO_CRYPTD=y -CONFIG_CRYPTO_DEFLATE=y -CONFIG_CRYPTO_DRBG=y -CONFIG_CRYPTO_DRBG_HMAC=y -CONFIG_CRYPTO_DRBG_MENU=y -CONFIG_CRYPTO_ECHAINIV=y -CONFIG_CRYPTO_GENIV=y -CONFIG_CRYPTO_HMAC=y -CONFIG_CRYPTO_JITTERENTROPY=y CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y CONFIG_CRYPTO_LIB_GF128MUL=y CONFIG_CRYPTO_LIB_SHA1=y -CONFIG_CRYPTO_LIB_SHA256=y CONFIG_CRYPTO_LIB_UTILS=y -CONFIG_CRYPTO_LZ4=y -CONFIG_CRYPTO_LZ4HC=y -CONFIG_CRYPTO_LZO=y -CONFIG_CRYPTO_RNG=y -CONFIG_CRYPTO_RNG2=y -CONFIG_CRYPTO_RNG_DEFAULT=y -CONFIG_CRYPTO_RSA=y -CONFIG_CRYPTO_SEQIV=y -CONFIG_CRYPTO_SHA1=y -CONFIG_CRYPTO_SHA1_ARM=y -CONFIG_CRYPTO_SHA256=y -CONFIG_CRYPTO_SHA256_ARM=y -CONFIG_CRYPTO_SHA3=y -CONFIG_CRYPTO_SHA512=y -CONFIG_CRYPTO_SHA512_ARM=y -CONFIG_CRYPTO_TWOFISH=y -CONFIG_CRYPTO_TWOFISH_COMMON=y -CONFIG_CURRENT_POINTER_IN_TPIDRURO=y CONFIG_DCACHE_WORD_ACCESS=y -CONFIG_DDR=y -CONFIG_DEBUG_ALIGN_RODATA=y CONFIG_DEBUG_INFO=y -CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" # CONFIG_DEVFREQ_GOV_PASSIVE is not set # CONFIG_DEVFREQ_GOV_PERFORMANCE is not set # CONFIG_DEVFREQ_GOV_POWERSAVE is not set CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y # CONFIG_DEVFREQ_GOV_USERSPACE is not set -CONFIG_DEVFREQ_THERMAL=y # CONFIG_DEVPORT is not set CONFIG_DMADEVICES=y CONFIG_DMA_CMA=y @@ -169,49 +68,18 @@ CONFIG_DMA_ENGINE=y CONFIG_DMA_OF=y CONFIG_DMA_OPS=y CONFIG_DMA_SHARED_BUFFER=y -CONFIG_DNOTIFY=y -CONFIG_DRM=y -CONFIG_DRM_BRIDGE=y -CONFIG_DRM_DISPLAY_DP_HELPER=y -CONFIG_DRM_DISPLAY_HDMI_HELPER=y -CONFIG_DRM_DISPLAY_HELPER=y -CONFIG_DRM_DP_AUX_BUS=y -CONFIG_DRM_FBDEV_EMULATION=y -CONFIG_DRM_FBDEV_OVERALLOC=100 -CONFIG_DRM_KMS_HELPER=y -CONFIG_DRM_MIPI_DSI=y -CONFIG_DRM_PANEL=y -CONFIG_DRM_PANEL_BRIDGE=y -CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y -CONFIG_DRM_TEGRA=y -# CONFIG_DRM_TEGRA_DEBUG is not set -# CONFIG_DRM_TEGRA_STAGING is not set CONFIG_DTC=y -CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_SUPPORT=y CONFIG_EXCLUSIVE_SYSTEM_RAM=y CONFIG_EXT4_FS=y CONFIG_EXTCON=y CONFIG_F2FS_FS=y -CONFIG_FB=y -CONFIG_FB_CORE=y -CONFIG_FB_DEFERRED_IO=y -CONFIG_FB_DMAMEM_HELPERS=y -CONFIG_FB_IOMEM_FOPS=y -CONFIG_FB_SYSMEM_HELPERS=y -CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y -CONFIG_FB_SYS_COPYAREA=y -CONFIG_FB_SYS_FILLRECT=y -CONFIG_FB_SYS_FOPS=y -CONFIG_FB_SYS_IMAGEBLIT=y CONFIG_FIX_EARLYCON_MEM=y CONFIG_FS_IOMAP=y CONFIG_FS_MBCACHE=y -CONFIG_FUNCTION_ALIGNMENT=0 CONFIG_FW_LOADER_PAGED_BUF=y CONFIG_FW_LOADER_SYSFS=y CONFIG_GCC10_NO_ARRAY_BOUNDS=y -CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y CONFIG_GENERIC_ALLOCATOR=y CONFIG_GENERIC_ARCH_TOPOLOGY=y CONFIG_GENERIC_BUG=y @@ -224,7 +92,6 @@ CONFIG_GENERIC_GETTIMEOFDAY=y CONFIG_GENERIC_IDLE_POLL_SETUP=y CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y CONFIG_GENERIC_IRQ_MIGRATION=y -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_SHOW_LEVEL=y CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y @@ -239,77 +106,39 @@ CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_TIME_VSYSCALL=y -CONFIG_GENERIC_VDSO_32=y CONFIG_GLOB=y CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIO_CDEV=y CONFIG_GPIO_TEGRA=y -CONFIG_HARDEN_BRANCH_PREDICTOR=y CONFIG_HARDIRQS_SW_RESEND=y CONFIG_HAS_DMA=y CONFIG_HAS_IOMEM=y CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT_MAP=y -CONFIG_HAVE_SMP=y -CONFIG_HDMI=y -CONFIG_HIGHMEM=y -CONFIG_HIGHPTE=y CONFIG_HOTPLUG_CORE_SYNC=y CONFIG_HOTPLUG_CORE_SYNC_DEAD=y CONFIG_HOTPLUG_CPU=y CONFIG_HWMON=y -CONFIG_HZ_FIXED=0 -CONFIG_HZ_PERIODIC=y CONFIG_I2C=y -CONFIG_I2C_ALGOBIT=y CONFIG_I2C_BOARDINFO=y CONFIG_I2C_COMPAT=y CONFIG_I2C_TEGRA=y CONFIG_INITRAMFS_SOURCE="" CONFIG_INPUT=y -CONFIG_INPUT_KEYBOARD=y -CONFIG_INPUT_VIVALDIFMAP=y CONFIG_INTERCONNECT=y -# CONFIG_IOMMUFD is not set -CONFIG_IOMMU_API=y -# CONFIG_IOMMU_DEBUGFS is not set -# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set -CONFIG_IOMMU_DEFAULT_DMA_STRICT=y -# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set CONFIG_IOMMU_IOVA=y -# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set -# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set -CONFIG_IOMMU_SUPPORT=y CONFIG_IRQCHIP=y -CONFIG_IRQSTACKS=y CONFIG_IRQ_DOMAIN=y CONFIG_IRQ_DOMAIN_HIERARCHY=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_IRQ_WORK=y CONFIG_JBD2=y CONFIG_KCMP=y -CONFIG_KEYBOARD_ATKBD=y -CONFIG_KMAP_LOCAL=y -CONFIG_KMAP_LOCAL_NON_LINEAR_PTE_ARRAY=y CONFIG_LIBFDT=y CONFIG_LOCK_DEBUGGING_SUPPORT=y CONFIG_LOCK_SPIN_ON_OWNER=y -CONFIG_LZ4HC_COMPRESS=y -CONFIG_LZ4_COMPRESS=y -CONFIG_LZ4_DECOMPRESS=y -CONFIG_LZO_COMPRESS=y -CONFIG_LZO_DECOMPRESS=y -CONFIG_MEDIA_CONTROLLER=y -CONFIG_MEDIA_CONTROLLER_REQUEST_API=y -CONFIG_MEDIA_PLATFORM_DRIVERS=y -CONFIG_MEDIA_PLATFORM_SUPPORT=y -CONFIG_MEDIA_SUPPORT=y -CONFIG_MEDIA_SUPPORT_FILTER=y CONFIG_MEMORY=y CONFIG_MEMORY_ISOLATION=y -# CONFIG_MFD_ACER_A500_EC is not set -# CONFIG_MFD_NVEC is not set -CONFIG_MIGHT_HAVE_CACHE_L2X0=y CONFIG_MIGRATION=y CONFIG_MMC=y CONFIG_MMC_BLOCK=y @@ -320,20 +149,15 @@ CONFIG_MMC_SDHCI_IO_ACCESSORS=y CONFIG_MMC_SDHCI_PLTFM=y CONFIG_MMC_SDHCI_TEGRA=y CONFIG_MMU_LAZY_TLB_REFCOUNT=y -CONFIG_MODULES_USE_ELF_REL=y -CONFIG_MPILIB=y CONFIG_MTD_SPI_NOR=y CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y CONFIG_MUTEX_SPIN_ON_OWNER=y CONFIG_NEED_DMA_MAP_STATE=y -CONFIG_NEED_SRCU_NMI_SAFE=y -# CONFIG_NEON is not set CONFIG_NET_EGRESS=y CONFIG_NET_FLOW_LIMIT=y CONFIG_NET_INGRESS=y CONFIG_NET_XGRESS=y CONFIG_NLS=y -CONFIG_NR_CPUS=4 CONFIG_NVMEM=y CONFIG_NVMEM_LAYOUTS=y CONFIG_OF=y @@ -341,46 +165,24 @@ CONFIG_OF_ADDRESS=y CONFIG_OF_EARLY_FLATTREE=y CONFIG_OF_FLATTREE=y CONFIG_OF_GPIO=y -CONFIG_OF_IOMMU=y CONFIG_OF_IRQ=y CONFIG_OF_KOBJ=y -CONFIG_OLD_SIGACTION=y -CONFIG_OLD_SIGSUSPEND3=y -CONFIG_OUTER_CACHE=y -CONFIG_OUTER_CACHE_SYNC=y CONFIG_PADATA=y -CONFIG_PAGE_OFFSET=0xC0000000 CONFIG_PAGE_POOL=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y CONFIG_PCI=y -CONFIG_PCIEAER=y -CONFIG_PCIEASPM=y -CONFIG_PCIEASPM_DEFAULT=y -# CONFIG_PCIEASPM_PERFORMANCE is not set -# CONFIG_PCIEASPM_POWERSAVE is not set -# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set -CONFIG_PCIEPORTBUS=y -CONFIG_PCIE_PME=y CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS_GENERIC=y CONFIG_PCI_MSI=y CONFIG_PCI_TEGRA=y -CONFIG_PERF_USE_VMALLOC=y -CONFIG_PGTABLE_LEVELS=2 -CONFIG_PHY_TEGRA_XUSB=y CONFIG_PINCTRL=y CONFIG_PINCTRL_TEGRA=y -CONFIG_PINCTRL_TEGRA20=y CONFIG_PINCTRL_TEGRA_XUSB=y -CONFIG_PL310_ERRATA_727915=y -CONFIG_PL310_ERRATA_769419=y -CONFIG_PL353_SMC=y CONFIG_PM=y CONFIG_PM_CLK=y CONFIG_PM_DEVFREQ=y -# CONFIG_PM_DEVFREQ_EVENT is not set CONFIG_PM_GENERIC_DOMAINS=y CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_PM_OPP=y @@ -388,18 +190,15 @@ CONFIG_POWER_RESET=y CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_SUPPLY=y CONFIG_PREEMPT_NONE_BUILD=y -CONFIG_PROC_PAGE_MONITOR=y CONFIG_PTP_1588_CLOCK_OPTIONAL=y CONFIG_PWM=y CONFIG_PWM_SYSFS=y CONFIG_PWM_TEGRA=y CONFIG_RANDSTRUCT_NONE=y -CONFIG_RAS=y CONFIG_RATIONAL=y CONFIG_REGMAP=y CONFIG_REGMAP_I2C=y CONFIG_REGMAP_MMIO=y -CONFIG_REGMAP_SPI=y CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_GPIO=y @@ -407,119 +206,35 @@ CONFIG_RESET_CONTROLLER=y CONFIG_RFS_ACCEL=y CONFIG_RPS=y CONFIG_RTC_CLASS=y -# CONFIG_RTC_DRV_CMOS is not set CONFIG_RTC_DRV_TEGRA=y CONFIG_RTC_I2C_AND_SPI=y -CONFIG_RTC_NVMEM=y CONFIG_RWSEM_SPIN_ON_OWNER=y CONFIG_SCSI=y CONFIG_SCSI_COMMON=y -# CONFIG_SCSI_LOWLEVEL is not set -# CONFIG_SCSI_PROC_FS is not set CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_TEGRA=y CONFIG_SERIAL_MCTRL_GPIO=y CONFIG_SERIAL_OF_PLATFORM=y CONFIG_SERIAL_TEGRA=y CONFIG_SERIO=y -CONFIG_SERIO_LIBPS2=y -CONFIG_SGL_ALLOC=y +CONFIG_SERIO_SERPORT=y CONFIG_SG_POOL=y CONFIG_SMP=y -CONFIG_SMP_ON_UP=y -CONFIG_SND=y -CONFIG_SND_AUDIO_GRAPH_CARD=y -# CONFIG_SND_COMPRESS_OFFLOAD is not set -CONFIG_SND_DMAENGINE_PCM=y -# CONFIG_SND_HDA_TEGRA is not set -CONFIG_SND_JACK=y -CONFIG_SND_JACK_INPUT_DEV=y -# CONFIG_SND_PCI is not set -CONFIG_SND_PCM=y -CONFIG_SND_PCM_ELD=y -CONFIG_SND_PCM_IEC958=y -# CONFIG_SND_PROC_FS is not set -CONFIG_SND_SIMPLE_CARD=y -CONFIG_SND_SIMPLE_CARD_UTILS=y -CONFIG_SND_SOC=y -CONFIG_SND_SOC_AC97_BUS=y -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -CONFIG_SND_SOC_HDMI_CODEC=y -CONFIG_SND_SOC_I2C_AND_SPI=y -CONFIG_SND_SOC_TEGRA=y -# CONFIG_SND_SOC_TEGRA186_ASRC is not set -# CONFIG_SND_SOC_TEGRA186_DSPK is not set -CONFIG_SND_SOC_TEGRA20_AC97=y -CONFIG_SND_SOC_TEGRA20_DAS=y -CONFIG_SND_SOC_TEGRA20_I2S=y -CONFIG_SND_SOC_TEGRA20_SPDIF=y -# CONFIG_SND_SOC_TEGRA210_ADMAIF is not set -# CONFIG_SND_SOC_TEGRA210_ADX is not set -# CONFIG_SND_SOC_TEGRA210_AHUB is not set -# CONFIG_SND_SOC_TEGRA210_AMX is not set -# CONFIG_SND_SOC_TEGRA210_DMIC is not set -# CONFIG_SND_SOC_TEGRA210_I2S is not set -# CONFIG_SND_SOC_TEGRA210_MIXER is not set -# CONFIG_SND_SOC_TEGRA210_MVC is not set -# CONFIG_SND_SOC_TEGRA210_OPE is not set -# CONFIG_SND_SOC_TEGRA210_SFC is not set -# CONFIG_SND_SOC_TEGRA30_AHUB is not set -# CONFIG_SND_SOC_TEGRA30_I2S is not set -# CONFIG_SND_SOC_TEGRA_ALC5632 is not set -# CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD is not set -CONFIG_SND_SOC_TEGRA_MACHINE_DRV=y -# CONFIG_SND_SOC_TEGRA_MAX98088 is not set -# CONFIG_SND_SOC_TEGRA_MAX98090 is not set -# CONFIG_SND_SOC_TEGRA_RT5631 is not set -# CONFIG_SND_SOC_TEGRA_RT5640 is not set -# CONFIG_SND_SOC_TEGRA_RT5677 is not set -# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set -CONFIG_SND_SOC_TEGRA_TRIMSLICE=y -# CONFIG_SND_SOC_TEGRA_WM8753 is not set -# CONFIG_SND_SOC_TEGRA_WM8903 is not set -# CONFIG_SND_SOC_TEGRA_WM9712 is not set -CONFIG_SND_SOC_TLV320AIC23=y -CONFIG_SND_SOC_TLV320AIC23_I2C=y -# CONFIG_SND_USB is not set CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_SOC_BUS=y -CONFIG_SOC_TEGRA20_VOLTAGE_COUPLER=y CONFIG_SOC_TEGRA_FLOWCTRL=y CONFIG_SOC_TEGRA_FUSE=y CONFIG_SOC_TEGRA_PMC=y CONFIG_SOFTIRQ_ON_OWN_STACK=y -CONFIG_SOUND=y -CONFIG_SOUND_OSS_CORE=y -CONFIG_SOUND_OSS_CORE_PRECLAIM=y CONFIG_SPARSE_IRQ=y CONFIG_SPI=y CONFIG_SPI_MASTER=y CONFIG_SPI_MEM=y -# CONFIG_SPI_TEGRA114 is not set -CONFIG_SPI_TEGRA20_SFLASH=y -CONFIG_SPI_TEGRA20_SLINK=y -# CONFIG_SPI_TEGRA210_QUAD is not set CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y -CONFIG_SRAM=y -CONFIG_SRAM_EXEC=y -CONFIG_SWP_EMULATE=y CONFIG_SYNC_FILE=y -CONFIG_SYS_SUPPORTS_APM_EMULATION=y -# CONFIG_TEGRA186_TIMER is not set CONFIG_TEGRA20_APB_DMA=y -CONFIG_TEGRA20_EMC=y -# CONFIG_TEGRA210_ADMA is not set -# CONFIG_TEGRA_ACONNECT is not set CONFIG_TEGRA_AHB=y -CONFIG_TEGRA_GMI=y -CONFIG_TEGRA_HOST1X=y -CONFIG_TEGRA_HOST1X_CONTEXT_BUS=y -CONFIG_TEGRA_HOST1X_FIREWALL=y -CONFIG_TEGRA_IOMMU_GART=y -# CONFIG_TEGRA_IOMMU_SMMU is not set -# CONFIG_TEGRA_IVC is not set CONFIG_TEGRA_MC=y -CONFIG_TEGRA_SOCTHERM=y CONFIG_TEGRA_TIMER=y CONFIG_TEGRA_WATCHDOG=y CONFIG_THREAD_INFO_IN_TASK=y @@ -528,9 +243,6 @@ CONFIG_TIMER_OF=y CONFIG_TIMER_PROBE=y CONFIG_TREE_RCU=y CONFIG_TREE_SRCU=y -# CONFIG_UCLAMP_TASK is not set -CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" -CONFIG_UNWINDER_ARM=y CONFIG_USB=y CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA_HOST=y @@ -546,35 +258,10 @@ CONFIG_USB_PHY=y CONFIG_USB_ROLE_SWITCH=y CONFIG_USB_SUPPORT=y CONFIG_USB_TEGRA_PHY=y -# CONFIG_USB_TEGRA_XUDC is not set CONFIG_USB_ULPI=y CONFIG_USB_ULPI_BUS=y CONFIG_USB_ULPI_VIEWPORT=y -# CONFIG_USB_XHCI_TEGRA is not set -CONFIG_USE_OF=y -CONFIG_V4L2_H264=y -CONFIG_V4L2_MEM2MEM_DEV=y -CONFIG_V4L_MEM2MEM_DRIVERS=y -CONFIG_V4L_PLATFORM_DRIVERS=y -CONFIG_VFP=y -CONFIG_VFPv3=y -CONFIG_VIDEOBUF2_CORE=y -CONFIG_VIDEOBUF2_DMA_CONTIG=y -CONFIG_VIDEOBUF2_DMA_SG=y -CONFIG_VIDEOBUF2_MEMOPS=y -CONFIG_VIDEOBUF2_V4L2=y -CONFIG_VIDEO_CMDLINE=y -CONFIG_VIDEO_DEV=y -CONFIG_VIDEO_NOMODESET=y -CONFIG_VIDEO_TEGRA_VDE=y -CONFIG_VIDEO_V4L2_I2C=y CONFIG_WATCHDOG_CORE=y -# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set CONFIG_XPS=y CONFIG_XZ_DEC_ARM=y -CONFIG_XZ_DEC_ARMTHUMB=y CONFIG_XZ_DEC_BCJ=y -CONFIG_ZBOOT_ROM_BSS=0 -CONFIG_ZBOOT_ROM_TEXT=0 -CONFIG_ZLIB_DEFLATE=y -CONFIG_ZLIB_INFLATE=y diff --git a/target/linux/tegra/image/Makefile b/target/linux/tegra/image/Makefile index 3b38fcdde684..3a6a583000bf 100644 --- a/target/linux/tegra/image/Makefile +++ b/target/linux/tegra/image/Makefile @@ -34,7 +34,7 @@ define Device/Default DEVICE_DTS_DIR := $$(DTS_DIR)/nvidia IMAGES := sdcard.img.gz IMAGE/sdcard.img.gz := append-rootfs | pad-extra 128k | tegra-sdcard | gzip | append-metadata - KERNEL_NAME := zImage + KERNEL_NAME := $(if $(CONFIG_ARCH_64BIT),Image,zImage) KERNEL := kernel-bin PROFILES := Default endef diff --git a/target/linux/tegra/image/armv8.mk b/target/linux/tegra/image/armv8.mk new file mode 100644 index 000000000000..2aae94012546 --- /dev/null +++ b/target/linux/tegra/image/armv8.mk @@ -0,0 +1,11 @@ +define Device/nvidia_jetson-tx1 + DEVICE_VENDOR := NVIDIA + DEVICE_MODEL := Jetson TX1 Developer Kit + DEVICE_DTS := tegra210-p2371-2180 + DEVICE_PACKAGES := brcmfmac-nvram-4354-sdio cypress-firmware-4354-sdio \ + kmod-bluetooth kmod-brcmfmac kmod-usb-gadget-serial kmod-usb-hid \ + kmod-usb-net-rtl8152 kmod-usb-udc-tegra kmod-usb-xhci-tegra \ + wpad-basic-mbedtls + SUPPORTED_DEVICES := nvidia,p2371-2180 +endef +TARGET_DEVICES += nvidia_jetson-tx1 diff --git a/target/linux/tegra/image/bootscript.txt b/target/linux/tegra/image/bootscript.txt index 5d4620c4d200..f8806f57c356 100644 --- a/target/linux/tegra/image/bootscript.txt +++ b/target/linux/tegra/image/bootscript.txt @@ -1,8 +1,15 @@ part uuid ${devtype} ${devnum}:2 ptuuid setenv bootargs "root=PARTUUID=${ptuuid} rw rootwait" +if test "${cpu}" = armv7; then + setenv kernel_name zImage + setenv boot_cmd bootz +elif test "${cpu}" = armv8; then + setenv kernel_name Image + setenv boot_cmd booti +fi -load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} zImage +load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} ${kernel_name} load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} ${soc}-${board}.dtb -bootz ${kernel_addr_r} - ${fdt_addr_r} +${boot_cmd} ${kernel_addr_r} - ${fdt_addr_r} diff --git a/target/linux/tegra/patches-6.6/001-v6.7-iommu-Add-iommu_ops-identity_domain.patch b/target/linux/tegra/patches-6.6/001-v6.7-iommu-Add-iommu_ops-identity_domain.patch new file mode 100644 index 000000000000..efdd17ed0b26 --- /dev/null +++ b/target/linux/tegra/patches-6.6/001-v6.7-iommu-Add-iommu_ops-identity_domain.patch @@ -0,0 +1,95 @@ +From df31b298477e65a01deff0af352be3a61524d930 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:34 -0300 +Subject: [PATCH 1/2] iommu: Add iommu_ops->identity_domain + +This allows a driver to set a global static to an IDENTITY domain and +the core code will automatically use it whenever an IDENTITY domain +is requested. + +By making it always available it means the IDENTITY can be used in error +handling paths to force the iommu driver into a known state. Devices +implementing global static identity domains should avoid failing their +attach_dev ops. + +To make global static domains simpler allow drivers to omit their free +function and update the iommufd selftest. + +Convert rockchip to use the new mechanism. + +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/1-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 6 +++++- + drivers/iommu/iommufd/selftest.c | 5 ----- + include/linux/iommu.h | 3 +++ + 4 files changed, 9 insertions(+), 14 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1979,6 +1979,9 @@ static struct iommu_domain *__iommu_doma + if (bus == NULL || bus->iommu_ops == NULL) + return NULL; + ++ if (alloc_type == IOMMU_DOMAIN_IDENTITY && bus->iommu_ops->identity_domain) ++ return bus->iommu_ops->identity_domain; ++ + domain = bus->iommu_ops->domain_alloc(alloc_type); + if (!domain) + return NULL; +@@ -2012,7 +2015,8 @@ void iommu_domain_free(struct iommu_doma + if (domain->type == IOMMU_DOMAIN_SVA) + mmdrop(domain->mm); + iommu_put_dma_cookie(domain); +- domain->ops->free(domain); ++ if (domain->ops->free) ++ domain->ops->free(domain); + } + EXPORT_SYMBOL_GPL(iommu_domain_free); + +--- a/drivers/iommu/iommufd/selftest.c ++++ b/drivers/iommu/iommufd/selftest.c +@@ -126,10 +126,6 @@ struct selftest_obj { + }; + }; + +-static void mock_domain_blocking_free(struct iommu_domain *domain) +-{ +-} +- + static int mock_domain_nop_attach(struct iommu_domain *domain, + struct device *dev) + { +@@ -137,7 +133,6 @@ static int mock_domain_nop_attach(struct + } + + static const struct iommu_domain_ops mock_blocking_ops = { +- .free = mock_domain_blocking_free, + .attach_dev = mock_domain_nop_attach, + }; + +--- a/include/linux/iommu.h ++++ b/include/linux/iommu.h +@@ -260,6 +260,8 @@ struct iommu_iotlb_gather { + * will be blocked by the hardware. + * @pgsize_bitmap: bitmap of all possible supported page sizes + * @owner: Driver module providing these ops ++ * @identity_domain: An always available, always attachable identity ++ * translation. + */ + struct iommu_ops { + bool (*capable)(struct device *dev, enum iommu_cap); +@@ -294,6 +296,7 @@ struct iommu_ops { + const struct iommu_domain_ops *default_domain_ops; + unsigned long pgsize_bitmap; + struct module *owner; ++ struct iommu_domain *identity_domain; + }; + + /** diff --git a/target/linux/tegra/patches-6.6/002-v6.7-iommu-Add-IOMMU_DOMAIN_PLATFORM.patch b/target/linux/tegra/patches-6.6/002-v6.7-iommu-Add-IOMMU_DOMAIN_PLATFORM.patch new file mode 100644 index 000000000000..c224eee334ac --- /dev/null +++ b/target/linux/tegra/patches-6.6/002-v6.7-iommu-Add-IOMMU_DOMAIN_PLATFORM.patch @@ -0,0 +1,134 @@ +From 1c68cbc64fe6ac01dc242ba562344303031a76fb Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:35 -0300 +Subject: [PATCH 2/2] iommu: Add IOMMU_DOMAIN_PLATFORM + +This is used when the iommu driver is taking control of the dma_ops, +currently only on S390 and power spapr. It is designed to preserve the +original ops->detach_dev() semantic that these S390 was built around. + +Provide an opaque domain type and a 'default_domain' ops value that allows +the driver to trivially force any single domain as the default domain. + +Update iommufd selftest to use this instead of set_platform_dma_ops + +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/2-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 13 +++++++++++++ + drivers/iommu/iommufd/selftest.c | 14 +++++--------- + include/linux/iommu.h | 8 ++++++++ + 3 files changed, 26 insertions(+), 9 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -184,6 +184,8 @@ static const char *iommu_domain_type_str + case IOMMU_DOMAIN_DMA: + case IOMMU_DOMAIN_DMA_FQ: + return "Translated"; ++ case IOMMU_DOMAIN_PLATFORM: ++ return "Platform"; + default: + return "Unknown"; + } +@@ -1751,6 +1753,17 @@ iommu_group_alloc_default_domain(struct + + lockdep_assert_held(&group->mutex); + ++ /* ++ * Allow legacy drivers to specify the domain that will be the default ++ * domain. This should always be either an IDENTITY/BLOCKED/PLATFORM ++ * domain. Do not use in new drivers. ++ */ ++ if (bus->iommu_ops->default_domain) { ++ if (req_type) ++ return ERR_PTR(-EINVAL); ++ return bus->iommu_ops->default_domain; ++ } ++ + if (req_type) + return __iommu_group_alloc_default_domain(bus, group, req_type); + +--- a/drivers/iommu/iommufd/selftest.c ++++ b/drivers/iommu/iommufd/selftest.c +@@ -296,14 +296,6 @@ static bool mock_domain_capable(struct d + return cap == IOMMU_CAP_CACHE_COHERENCY; + } + +-static void mock_domain_set_plaform_dma_ops(struct device *dev) +-{ +- /* +- * mock doesn't setup default domains because we can't hook into the +- * normal probe path +- */ +-} +- + static struct iommu_device mock_iommu_device = { + }; + +@@ -313,12 +305,16 @@ static struct iommu_device *mock_probe_d + } + + static const struct iommu_ops mock_ops = { ++ /* ++ * IOMMU_DOMAIN_BLOCKED cannot be returned from def_domain_type() ++ * because it is zero. ++ */ ++ .default_domain = &mock_blocking_domain, + .owner = THIS_MODULE, + .pgsize_bitmap = MOCK_IO_PAGE_SIZE, + .hw_info = mock_domain_hw_info, + .domain_alloc = mock_domain_alloc, + .capable = mock_domain_capable, +- .set_platform_dma_ops = mock_domain_set_plaform_dma_ops, + .device_group = generic_device_group, + .probe_device = mock_probe_device, + .default_domain_ops = +--- a/include/linux/iommu.h ++++ b/include/linux/iommu.h +@@ -64,6 +64,7 @@ struct iommu_domain_geometry { + #define __IOMMU_DOMAIN_DMA_FQ (1U << 3) /* DMA-API uses flush queue */ + + #define __IOMMU_DOMAIN_SVA (1U << 4) /* Shared process address space */ ++#define __IOMMU_DOMAIN_PLATFORM (1U << 5) + + #define IOMMU_DOMAIN_ALLOC_FLAGS ~__IOMMU_DOMAIN_DMA_FQ + /* +@@ -81,6 +82,8 @@ struct iommu_domain_geometry { + * invalidation. + * IOMMU_DOMAIN_SVA - DMA addresses are shared process addresses + * represented by mm_struct's. ++ * IOMMU_DOMAIN_PLATFORM - Legacy domain for drivers that do their own ++ * dma_api stuff. Do not use in new drivers. + */ + #define IOMMU_DOMAIN_BLOCKED (0U) + #define IOMMU_DOMAIN_IDENTITY (__IOMMU_DOMAIN_PT) +@@ -91,6 +94,7 @@ struct iommu_domain_geometry { + __IOMMU_DOMAIN_DMA_API | \ + __IOMMU_DOMAIN_DMA_FQ) + #define IOMMU_DOMAIN_SVA (__IOMMU_DOMAIN_SVA) ++#define IOMMU_DOMAIN_PLATFORM (__IOMMU_DOMAIN_PLATFORM) + + struct iommu_domain { + unsigned type; +@@ -262,6 +266,9 @@ struct iommu_iotlb_gather { + * @owner: Driver module providing these ops + * @identity_domain: An always available, always attachable identity + * translation. ++ * @default_domain: If not NULL this will always be set as the default domain. ++ * This should be an IDENTITY/BLOCKED/PLATFORM domain. ++ * Do not use in new drivers. + */ + struct iommu_ops { + bool (*capable)(struct device *dev, enum iommu_cap); +@@ -297,6 +304,7 @@ struct iommu_ops { + unsigned long pgsize_bitmap; + struct module *owner; + struct iommu_domain *identity_domain; ++ struct iommu_domain *default_domain; + }; + + /** diff --git a/target/linux/tegra/patches-6.6/003-v6.7-iommu-Reorganize-iommu_get_default_domain_type-to-re.patch b/target/linux/tegra/patches-6.6/003-v6.7-iommu-Reorganize-iommu_get_default_domain_type-to-re.patch new file mode 100644 index 000000000000..54213597da6a --- /dev/null +++ b/target/linux/tegra/patches-6.6/003-v6.7-iommu-Reorganize-iommu_get_default_domain_type-to-re.patch @@ -0,0 +1,184 @@ +From 59ddce4418da483c932bc7a08b88d6ba14020e83 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:41 -0300 +Subject: [PATCH 1/2] iommu: Reorganize iommu_get_default_domain_type() to + respect def_domain_type() + +Except for dart (which forces IOMMU_DOMAIN_DMA) every driver returns 0 or +IDENTITY from ops->def_domain_type(). + +The drivers that return IDENTITY have some kind of good reason, typically +that quirky hardware really can't support anything other than IDENTITY. + +Arrange things so that if the driver says it needs IDENTITY then +iommu_get_default_domain_type() either fails or returns IDENTITY. It will +not ignore the driver's override to IDENTITY. + +Split the function into two steps, reducing the group device list to the +driver's def_domain_type() and the untrusted flag. + +Then compute the result based on those two reduced variables. Fully reject +combining untrusted with IDENTITY. + +Remove the debugging print on the iommu_group_store_type() failure path, +userspace should not be able to trigger kernel prints. + +This makes the next patch cleaner that wants to force IDENTITY always for +ARM_IOMMU because there is no support for DMA. + +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/8-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 115 ++++++++++++++++++++++++++++-------------- + 1 file changed, 78 insertions(+), 37 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1717,19 +1717,6 @@ struct iommu_group *fsl_mc_device_group( + } + EXPORT_SYMBOL_GPL(fsl_mc_device_group); + +-static int iommu_get_def_domain_type(struct device *dev) +-{ +- const struct iommu_ops *ops = dev_iommu_ops(dev); +- +- if (dev_is_pci(dev) && to_pci_dev(dev)->untrusted) +- return IOMMU_DOMAIN_DMA; +- +- if (ops->def_domain_type) +- return ops->def_domain_type(dev); +- +- return 0; +-} +- + static struct iommu_domain * + __iommu_group_alloc_default_domain(const struct bus_type *bus, + struct iommu_group *group, int req_type) +@@ -1740,6 +1727,23 @@ __iommu_group_alloc_default_domain(const + } + + /* ++ * Returns the iommu_ops for the devices in an iommu group. ++ * ++ * It is assumed that all devices in an iommu group are managed by a single ++ * IOMMU unit. Therefore, this returns the dev_iommu_ops of the first device ++ * in the group. ++ */ ++static const struct iommu_ops *group_iommu_ops(struct iommu_group *group) ++{ ++ struct group_device *device = ++ list_first_entry(&group->devices, struct group_device, list); ++ ++ lockdep_assert_held(&group->mutex); ++ ++ return dev_iommu_ops(device->dev); ++} ++ ++/* + * req_type of 0 means "auto" which means to select a domain based on + * iommu_def_domain_type or what the driver actually supports. + */ +@@ -1821,40 +1825,77 @@ static int iommu_bus_notifier(struct not + return 0; + } + +-/* A target_type of 0 will select the best domain type and cannot fail */ ++/* ++ * Combine the driver's chosen def_domain_type across all the devices in a ++ * group. Drivers must give a consistent result. ++ */ ++static int iommu_get_def_domain_type(struct iommu_group *group, ++ struct device *dev, int cur_type) ++{ ++ const struct iommu_ops *ops = group_iommu_ops(group); ++ int type; ++ ++ if (!ops->def_domain_type) ++ return cur_type; ++ ++ type = ops->def_domain_type(dev); ++ if (!type || cur_type == type) ++ return cur_type; ++ if (!cur_type) ++ return type; ++ ++ dev_err_ratelimited( ++ dev, ++ "IOMMU driver error, requesting conflicting def_domain_type, %s and %s, for devices in group %u.\n", ++ iommu_domain_type_str(cur_type), iommu_domain_type_str(type), ++ group->id); ++ ++ /* ++ * Try to recover, drivers are allowed to force IDENITY or DMA, IDENTITY ++ * takes precedence. ++ */ ++ if (type == IOMMU_DOMAIN_IDENTITY) ++ return type; ++ return cur_type; ++} ++ ++/* ++ * A target_type of 0 will select the best domain type. 0 can be returned in ++ * this case meaning the global default should be used. ++ */ + static int iommu_get_default_domain_type(struct iommu_group *group, + int target_type) + { +- int best_type = target_type; ++ struct device *untrusted = NULL; + struct group_device *gdev; +- struct device *last_dev; ++ int driver_type = 0; + + lockdep_assert_held(&group->mutex); +- + for_each_group_device(group, gdev) { +- unsigned int type = iommu_get_def_domain_type(gdev->dev); ++ driver_type = iommu_get_def_domain_type(group, gdev->dev, ++ driver_type); + +- if (best_type && type && best_type != type) { +- if (target_type) { +- dev_err_ratelimited( +- gdev->dev, +- "Device cannot be in %s domain\n", +- iommu_domain_type_str(target_type)); +- return -1; +- } +- +- dev_warn( +- gdev->dev, +- "Device needs domain type %s, but device %s in the same iommu group requires type %s - using default\n", +- iommu_domain_type_str(type), dev_name(last_dev), +- iommu_domain_type_str(best_type)); +- return 0; ++ if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) ++ untrusted = gdev->dev; ++ } ++ ++ if (untrusted) { ++ if (driver_type && driver_type != IOMMU_DOMAIN_DMA) { ++ dev_err_ratelimited( ++ untrusted, ++ "Device is not trusted, but driver is overriding group %u to %s, refusing to probe.\n", ++ group->id, iommu_domain_type_str(driver_type)); ++ return -1; + } +- if (!best_type) +- best_type = type; +- last_dev = gdev->dev; ++ driver_type = IOMMU_DOMAIN_DMA; ++ } ++ ++ if (target_type) { ++ if (driver_type && target_type != driver_type) ++ return -1; ++ return target_type; + } +- return best_type; ++ return driver_type; + } + + static void iommu_group_do_probe_finalize(struct device *dev) diff --git a/target/linux/tegra/patches-6.6/004-v6.7-iommu-Allow-an-IDENTITY-domain-as-the-default_domain.patch b/target/linux/tegra/patches-6.6/004-v6.7-iommu-Allow-an-IDENTITY-domain-as-the-default_domain.patch new file mode 100644 index 000000000000..8fa76f9ee6f4 --- /dev/null +++ b/target/linux/tegra/patches-6.6/004-v6.7-iommu-Allow-an-IDENTITY-domain-as-the-default_domain.patch @@ -0,0 +1,104 @@ +From e98befd010bd56b8b3f2afea2d600e30df023e6b Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:42 -0300 +Subject: [PATCH 2/2] iommu: Allow an IDENTITY domain as the default_domain in + ARM32 + +Even though dma-iommu.c and CONFIG_ARM_DMA_USE_IOMMU do approximately the +same stuff, the way they relate to the IOMMU core is quiet different. + +dma-iommu.c expects the core code to setup an UNMANAGED domain (of type +IOMMU_DOMAIN_DMA) and then configures itself to use that domain. This +becomes the default_domain for the group. + +ARM_DMA_USE_IOMMU does not use the default_domain, instead it directly +allocates an UNMANAGED domain and operates it just like an external +driver. In this case group->default_domain is NULL. + +If the driver provides a global static identity_domain then automatically +use it as the default_domain when in ARM_DMA_USE_IOMMU mode. + +This allows drivers that implemented default_domain == NULL as an IDENTITY +translation to trivially get a properly labeled non-NULL default_domain on +ARM32 configs. + +With this arrangment when ARM_DMA_USE_IOMMU wants to disconnect from the +device the normal detach_domain flow will restore the IDENTITY domain as +the default domain. Overall this makes attach_dev() of the IDENTITY domain +called in the same places as detach_dev(). + +This effectively migrates these drivers to default_domain mode. For +drivers that support ARM64 they will gain support for the IDENTITY +translation mode for the dma_api and behave in a uniform way. + +Drivers use this by setting ops->identity_domain to a static singleton +iommu_domain that implements the identity attach. If the core detects +ARM_DMA_USE_IOMMU mode then it automatically attaches the IDENTITY domain +during probe. + +Drivers can continue to prevent the use of DMA translation by returning +IOMMU_DOMAIN_IDENTITY from def_domain_type, this will completely prevent +IOMMU_DMA from running but will not impact ARM_DMA_USE_IOMMU. + +This allows removing the set_platform_dma_ops() from every remaining +driver. + +Remove the set_platform_dma_ops from rockchip and mkt_v1 as all it does +is set an existing global static identity domain. mkt_v1 does not support +IOMMU_DOMAIN_DMA and it does not compile on ARM64 so this transformation +is safe. + +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/9-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 21 ++++++++++++++++++++- + drivers/iommu/mtk_iommu_v1.c | 12 ------------ + drivers/iommu/rockchip-iommu.c | 10 ---------- + 3 files changed, 20 insertions(+), 23 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1866,17 +1866,36 @@ static int iommu_get_def_domain_type(str + static int iommu_get_default_domain_type(struct iommu_group *group, + int target_type) + { ++ const struct iommu_ops *ops = group_iommu_ops(group); + struct device *untrusted = NULL; + struct group_device *gdev; + int driver_type = 0; + + lockdep_assert_held(&group->mutex); ++ ++ /* ++ * ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an ++ * identity_domain and it will automatically become their default ++ * domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain. ++ * Override the selection to IDENTITY if we are sure the driver supports ++ * it. ++ */ ++ if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) && ops->identity_domain) ++ driver_type = IOMMU_DOMAIN_IDENTITY; ++ + for_each_group_device(group, gdev) { + driver_type = iommu_get_def_domain_type(group, gdev->dev, + driver_type); + +- if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) ++ if (dev_is_pci(gdev->dev) && to_pci_dev(gdev->dev)->untrusted) { ++ /* ++ * No ARM32 using systems will set untrusted, it cannot ++ * work. ++ */ ++ if (WARN_ON(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU))) ++ return -1; + untrusted = gdev->dev; ++ } + } + + if (untrusted) { diff --git a/target/linux/tegra/patches-6.6/005-v6.7-iommu-tegra-smmu-Implement-an-IDENTITY-domain.patch b/target/linux/tegra/patches-6.6/005-v6.7-iommu-tegra-smmu-Implement-an-IDENTITY-domain.patch new file mode 100644 index 000000000000..c98872587d3c --- /dev/null +++ b/target/linux/tegra/patches-6.6/005-v6.7-iommu-tegra-smmu-Implement-an-IDENTITY-domain.patch @@ -0,0 +1,90 @@ +From c8cc2655cc6c7ff832827ad5bc1a8f3df165706d Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:44 -0300 +Subject: [PATCH 1/2] iommu/tegra-smmu: Implement an IDENTITY domain + +What tegra-smmu does during tegra_smmu_set_platform_dma() is actually +putting the iommu into identity mode. + +Move to the new core support for ARM_DMA_USE_IOMMU by defining +ops->identity_domain. + +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/11-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/tegra-smmu.c | 37 ++++++++++++++++++++++++++++++++----- + 1 file changed, 32 insertions(+), 5 deletions(-) + +--- a/drivers/iommu/tegra-smmu.c ++++ b/drivers/iommu/tegra-smmu.c +@@ -511,23 +511,39 @@ disable: + return err; + } + +-static void tegra_smmu_set_platform_dma(struct device *dev) ++static int tegra_smmu_identity_attach(struct iommu_domain *identity_domain, ++ struct device *dev) + { + struct iommu_domain *domain = iommu_get_domain_for_dev(dev); + struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev); +- struct tegra_smmu_as *as = to_smmu_as(domain); +- struct tegra_smmu *smmu = as->smmu; ++ struct tegra_smmu_as *as; ++ struct tegra_smmu *smmu; + unsigned int index; + + if (!fwspec) +- return; ++ return -ENODEV; ++ ++ if (domain == identity_domain || !domain) ++ return 0; + ++ as = to_smmu_as(domain); ++ smmu = as->smmu; + for (index = 0; index < fwspec->num_ids; index++) { + tegra_smmu_disable(smmu, fwspec->ids[index], as->id); + tegra_smmu_as_unprepare(smmu, as); + } ++ return 0; + } + ++static struct iommu_domain_ops tegra_smmu_identity_ops = { ++ .attach_dev = tegra_smmu_identity_attach, ++}; ++ ++static struct iommu_domain tegra_smmu_identity_domain = { ++ .type = IOMMU_DOMAIN_IDENTITY, ++ .ops = &tegra_smmu_identity_ops, ++}; ++ + static void tegra_smmu_set_pde(struct tegra_smmu_as *as, unsigned long iova, + u32 value) + { +@@ -962,11 +978,22 @@ static int tegra_smmu_of_xlate(struct de + return iommu_fwspec_add_ids(dev, &id, 1); + } + ++static int tegra_smmu_def_domain_type(struct device *dev) ++{ ++ /* ++ * FIXME: For now we want to run all translation in IDENTITY mode, due ++ * to some device quirks. Better would be to just quirk the troubled ++ * devices. ++ */ ++ return IOMMU_DOMAIN_IDENTITY; ++} ++ + static const struct iommu_ops tegra_smmu_ops = { ++ .identity_domain = &tegra_smmu_identity_domain, ++ .def_domain_type = &tegra_smmu_def_domain_type, + .domain_alloc = tegra_smmu_domain_alloc, + .probe_device = tegra_smmu_probe_device, + .device_group = tegra_smmu_device_group, +- .set_platform_dma_ops = tegra_smmu_set_platform_dma, + .of_xlate = tegra_smmu_of_xlate, + .pgsize_bitmap = SZ_4K, + .default_domain_ops = &(const struct iommu_domain_ops) { diff --git a/target/linux/tegra/patches-6.6/006-v6.7-iommu-tegra-smmu-Support-DMA-domains-in-tegra.patch b/target/linux/tegra/patches-6.6/006-v6.7-iommu-tegra-smmu-Support-DMA-domains-in-tegra.patch new file mode 100644 index 000000000000..f3b52da97cd4 --- /dev/null +++ b/target/linux/tegra/patches-6.6/006-v6.7-iommu-tegra-smmu-Support-DMA-domains-in-tegra.patch @@ -0,0 +1,36 @@ +From f128094f347f578279e551488796d0a0067cbdff Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:45 -0300 +Subject: [PATCH 2/2] iommu/tegra-smmu: Support DMA domains in tegra + +All ARM64 iommu drivers should support IOMMU_DOMAIN_DMA to enable +dma-iommu.c. + +tegra is blocking dma-iommu usage, and also default_domain's, because it +wants an identity translation. This is needed for some device quirk. The +correct way to do this is to support IDENTITY domains and use +ops->def_domain_type() to return IOMMU_DOMAIN_IDENTITY for only the quirky +devices. + +Add support for IOMMU_DOMAIN_DMA and force IOMMU_DOMAIN_IDENTITY mode for +everything so no behavior changes. + +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/12-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/tegra-smmu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/iommu/tegra-smmu.c ++++ b/drivers/iommu/tegra-smmu.c +@@ -276,7 +276,7 @@ static struct iommu_domain *tegra_smmu_d + { + struct tegra_smmu_as *as; + +- if (type != IOMMU_DOMAIN_UNMANAGED) ++ if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA) + return NULL; + + as = kzalloc(sizeof(*as), GFP_KERNEL); diff --git a/target/linux/tegra/patches-6.6/007-v6.7-iommu-Remove-ops-set_platform_dma_ops.patch b/target/linux/tegra/patches-6.6/007-v6.7-iommu-Remove-ops-set_platform_dma_ops.patch new file mode 100644 index 000000000000..bcae313d7055 --- /dev/null +++ b/target/linux/tegra/patches-6.6/007-v6.7-iommu-Remove-ops-set_platform_dma_ops.patch @@ -0,0 +1,102 @@ +From 24b1d476167df3e30c7a53b67765bf3c787c5160 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:48 -0300 +Subject: [PATCH] iommu: Remove ops->set_platform_dma_ops() + +All drivers are now using IDENTITY or PLATFORM domains for what this did, +we can remove it now. It is no longer possible to attach to a NULL domain. + +Tested-by: Heiko Stuebner +Tested-by: Niklas Schnelle +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/15-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 30 +++++------------------------- + include/linux/iommu.h | 4 ---- + 2 files changed, 5 insertions(+), 29 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -2352,21 +2352,8 @@ static int __iommu_group_set_domain_inte + if (group->domain == new_domain) + return 0; + +- /* +- * New drivers should support default domains, so set_platform_dma() +- * op will never be called. Otherwise the NULL domain represents some +- * platform specific behavior. +- */ +- if (!new_domain) { +- for_each_group_device(group, gdev) { +- const struct iommu_ops *ops = dev_iommu_ops(gdev->dev); +- +- if (!WARN_ON(!ops->set_platform_dma_ops)) +- ops->set_platform_dma_ops(gdev->dev); +- } +- group->domain = NULL; +- return 0; +- } ++ if (WARN_ON(!new_domain)) ++ return -EINVAL; + + /* + * Changing the domain is done by calling attach_dev() on the new +@@ -2402,19 +2389,15 @@ err_revert: + */ + last_gdev = gdev; + for_each_group_device(group, gdev) { +- const struct iommu_ops *ops = dev_iommu_ops(gdev->dev); +- + /* +- * If set_platform_dma_ops is not present a NULL domain can +- * happen only for first probe, in which case we leave +- * group->domain as NULL and let release clean everything up. ++ * A NULL domain can happen only for first probe, in which case ++ * we leave group->domain as NULL and let release clean ++ * everything up. + */ + if (group->domain) + WARN_ON(__iommu_device_set_domain( + group, gdev->dev, group->domain, + IOMMU_SET_DOMAIN_MUST_SUCCEED)); +- else if (ops->set_platform_dma_ops) +- ops->set_platform_dma_ops(gdev->dev); + if (gdev == last_gdev) + break; + } +@@ -3037,9 +3020,6 @@ static int iommu_setup_default_domain(st + /* + * There are still some drivers which don't support default domains, so + * we ignore the failure and leave group->default_domain NULL. +- * +- * We assume that the iommu driver starts up the device in +- * 'set_platform_dma_ops' mode if it does not support default domains. + */ + dom = iommu_group_alloc_default_domain(group, req_type); + if (!dom) { +--- a/include/linux/iommu.h ++++ b/include/linux/iommu.h +@@ -243,9 +243,6 @@ struct iommu_iotlb_gather { + * @release_device: Remove device from iommu driver handling + * @probe_finalize: Do final setup work after the device is added to an IOMMU + * group and attached to the groups domain +- * @set_platform_dma_ops: Returning control back to the platform DMA ops. This op +- * is to support old IOMMU drivers, new drivers should use +- * default domains, and the common IOMMU DMA ops. + * @device_group: find iommu group for a particular device + * @get_resv_regions: Request list of reserved regions for a device + * @of_xlate: add OF master IDs to iommu grouping +@@ -280,7 +277,6 @@ struct iommu_ops { + struct iommu_device *(*probe_device)(struct device *dev); + void (*release_device)(struct device *dev); + void (*probe_finalize)(struct device *dev); +- void (*set_platform_dma_ops)(struct device *dev); + struct iommu_group *(*device_group)(struct device *dev); + + /* Request/Free a list of reserved regions for a device */ diff --git a/target/linux/tegra/patches-6.6/008-v6.7-iommu-Require-a-default_domain-for-all-iommu-drivers.patch b/target/linux/tegra/patches-6.6/008-v6.7-iommu-Require-a-default_domain-for-all-iommu-drivers.patch new file mode 100644 index 000000000000..5b89f6718d24 --- /dev/null +++ b/target/linux/tegra/patches-6.6/008-v6.7-iommu-Require-a-default_domain-for-all-iommu-drivers.patch @@ -0,0 +1,127 @@ +From 98ac73f99bc44fba8a14252ffb0bad02459f7008 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:53 -0300 +Subject: [PATCH 1/7] iommu: Require a default_domain for all iommu drivers + +At this point every iommu driver will cause a default_domain to be +selected, so we can finally remove this gap from the core code. + +The following table explains what each driver supports and what the +resulting default_domain will be: + + ops->defaut_domain + IDENTITY DMA PLATFORM v ARM32 dma-iommu ARCH +amd/iommu.c Y Y N/A either +apple-dart.c Y Y N/A either +arm-smmu.c Y Y IDENTITY either +qcom_iommu.c G Y IDENTITY either +arm-smmu-v3.c Y Y N/A either +exynos-iommu.c G Y IDENTITY either +fsl_pamu_domain.c Y Y N/A N/A PLATFORM +intel/iommu.c Y Y N/A either +ipmmu-vmsa.c G Y IDENTITY either +msm_iommu.c G IDENTITY N/A +mtk_iommu.c G Y IDENTITY either +mtk_iommu_v1.c G IDENTITY N/A +omap-iommu.c G IDENTITY N/A +rockchip-iommu.c G Y IDENTITY either +s390-iommu.c Y Y N/A N/A PLATFORM +sprd-iommu.c Y N/A DMA +sun50i-iommu.c G Y IDENTITY either +tegra-smmu.c G Y IDENTITY IDENTITY +virtio-iommu.c Y Y N/A either +spapr Y Y N/A N/A PLATFORM + * G means ops->identity_domain is used + * N/A means the driver will not compile in this configuration + +ARM32 drivers select an IDENTITY default domain through either the +ops->identity_domain or directly requesting an IDENTIY domain through +alloc_domain(). + +In ARM64 mode tegra-smmu will still block the use of dma-iommu.c and +forces an IDENTITY domain. + +S390 uses a PLATFORM domain to represent when the dma_ops are set to the +s390 iommu code. + +fsl_pamu uses an PLATFORM domain. + +POWER SPAPR uses PLATFORM and blocking to enable its weird VFIO mode. + +The x86 drivers continue unchanged. + +After this patch group->default_domain is only NULL for a short period +during bus iommu probing while all the groups are constituted. Otherwise +it is always !NULL. + +This completes changing the iommu subsystem driver contract to a system +where the current iommu_domain always represents some form of translation +and the driver is continuously asserting a definable translation mode. + +It resolves the confusion that the original ops->detach_dev() caused +around what translation, exactly, is the IOMMU performing after +detach. There were at least three different answers to that question in +the tree, they are all now clearly named with domain types. + +Tested-by: Heiko Stuebner +Tested-by: Niklas Schnelle +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/20-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1866,7 +1866,6 @@ static int iommu_get_def_domain_type(str + static int iommu_get_default_domain_type(struct iommu_group *group, + int target_type) + { +- const struct iommu_ops *ops = group_iommu_ops(group); + struct device *untrusted = NULL; + struct group_device *gdev; + int driver_type = 0; +@@ -1877,11 +1876,13 @@ static int iommu_get_default_domain_type + * ARM32 drivers supporting CONFIG_ARM_DMA_USE_IOMMU can declare an + * identity_domain and it will automatically become their default + * domain. Later on ARM_DMA_USE_IOMMU will install its UNMANAGED domain. +- * Override the selection to IDENTITY if we are sure the driver supports +- * it. ++ * Override the selection to IDENTITY. + */ +- if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) && ops->identity_domain) ++ if (IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU)) { ++ static_assert(!(IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) && ++ IS_ENABLED(CONFIG_IOMMU_DMA))); + driver_type = IOMMU_DOMAIN_IDENTITY; ++ } + + for_each_group_device(group, gdev) { + driver_type = iommu_get_def_domain_type(group, gdev->dev, +@@ -3017,18 +3018,9 @@ static int iommu_setup_default_domain(st + if (req_type < 0) + return -EINVAL; + +- /* +- * There are still some drivers which don't support default domains, so +- * we ignore the failure and leave group->default_domain NULL. +- */ + dom = iommu_group_alloc_default_domain(group, req_type); +- if (!dom) { +- /* Once in default_domain mode we never leave */ +- if (group->default_domain) +- return -ENODEV; +- group->default_domain = NULL; +- return 0; +- } ++ if (!dom) ++ return -ENODEV; + + if (group->default_domain == dom) + return 0; diff --git a/target/linux/tegra/patches-6.6/009-v6.7-iommu-Add-__iommu_group_domain_alloc.patch b/target/linux/tegra/patches-6.6/009-v6.7-iommu-Add-__iommu_group_domain_alloc.patch new file mode 100644 index 000000000000..8cabfb648448 --- /dev/null +++ b/target/linux/tegra/patches-6.6/009-v6.7-iommu-Add-__iommu_group_domain_alloc.patch @@ -0,0 +1,171 @@ +From 8359cf39acba72606736f453f54432ac9dc28523 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:54 -0300 +Subject: [PATCH 2/7] iommu: Add __iommu_group_domain_alloc() + +Allocate a domain from a group. Automatically obtains the iommu_ops to use +from the device list of the group. Convert the internal callers to use it. + +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/21-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 59 +++++++++++++++++++++---------------------- + 1 file changed, 29 insertions(+), 30 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -96,8 +96,8 @@ static const char * const iommu_group_re + static int iommu_bus_notifier(struct notifier_block *nb, + unsigned long action, void *data); + static void iommu_release_device(struct device *dev); +-static struct iommu_domain *__iommu_domain_alloc(const struct bus_type *bus, +- unsigned type); ++static struct iommu_domain * ++__iommu_group_domain_alloc(struct iommu_group *group, unsigned int type); + static int __iommu_attach_device(struct iommu_domain *domain, + struct device *dev); + static int __iommu_attach_group(struct iommu_domain *domain, +@@ -1718,12 +1718,11 @@ struct iommu_group *fsl_mc_device_group( + EXPORT_SYMBOL_GPL(fsl_mc_device_group); + + static struct iommu_domain * +-__iommu_group_alloc_default_domain(const struct bus_type *bus, +- struct iommu_group *group, int req_type) ++__iommu_group_alloc_default_domain(struct iommu_group *group, int req_type) + { + if (group->default_domain && group->default_domain->type == req_type) + return group->default_domain; +- return __iommu_domain_alloc(bus, req_type); ++ return __iommu_group_domain_alloc(group, req_type); + } + + /* +@@ -1750,9 +1749,7 @@ static const struct iommu_ops *group_iom + static struct iommu_domain * + iommu_group_alloc_default_domain(struct iommu_group *group, int req_type) + { +- const struct bus_type *bus = +- list_first_entry(&group->devices, struct group_device, list) +- ->dev->bus; ++ const struct iommu_ops *ops = group_iommu_ops(group); + struct iommu_domain *dom; + + lockdep_assert_held(&group->mutex); +@@ -1762,24 +1759,24 @@ iommu_group_alloc_default_domain(struct + * domain. This should always be either an IDENTITY/BLOCKED/PLATFORM + * domain. Do not use in new drivers. + */ +- if (bus->iommu_ops->default_domain) { ++ if (ops->default_domain) { + if (req_type) + return ERR_PTR(-EINVAL); +- return bus->iommu_ops->default_domain; ++ return ops->default_domain; + } + + if (req_type) +- return __iommu_group_alloc_default_domain(bus, group, req_type); ++ return __iommu_group_alloc_default_domain(group, req_type); + + /* The driver gave no guidance on what type to use, try the default */ +- dom = __iommu_group_alloc_default_domain(bus, group, iommu_def_domain_type); ++ dom = __iommu_group_alloc_default_domain(group, iommu_def_domain_type); + if (dom) + return dom; + + /* Otherwise IDENTITY and DMA_FQ defaults will try DMA */ + if (iommu_def_domain_type == IOMMU_DOMAIN_DMA) + return NULL; +- dom = __iommu_group_alloc_default_domain(bus, group, IOMMU_DOMAIN_DMA); ++ dom = __iommu_group_alloc_default_domain(group, IOMMU_DOMAIN_DMA); + if (!dom) + return NULL; + +@@ -2044,19 +2041,16 @@ void iommu_set_fault_handler(struct iomm + } + EXPORT_SYMBOL_GPL(iommu_set_fault_handler); + +-static struct iommu_domain *__iommu_domain_alloc(const struct bus_type *bus, +- unsigned type) ++static struct iommu_domain *__iommu_domain_alloc(const struct iommu_ops *ops, ++ unsigned int type) + { + struct iommu_domain *domain; + unsigned int alloc_type = type & IOMMU_DOMAIN_ALLOC_FLAGS; + +- if (bus == NULL || bus->iommu_ops == NULL) +- return NULL; ++ if (alloc_type == IOMMU_DOMAIN_IDENTITY && ops->identity_domain) ++ return ops->identity_domain; + +- if (alloc_type == IOMMU_DOMAIN_IDENTITY && bus->iommu_ops->identity_domain) +- return bus->iommu_ops->identity_domain; +- +- domain = bus->iommu_ops->domain_alloc(alloc_type); ++ domain = ops->domain_alloc(alloc_type); + if (!domain) + return NULL; + +@@ -2066,10 +2060,10 @@ static struct iommu_domain *__iommu_doma + * may override this later + */ + if (!domain->pgsize_bitmap) +- domain->pgsize_bitmap = bus->iommu_ops->pgsize_bitmap; ++ domain->pgsize_bitmap = ops->pgsize_bitmap; + + if (!domain->ops) +- domain->ops = bus->iommu_ops->default_domain_ops; ++ domain->ops = ops->default_domain_ops; + + if (iommu_is_dma_domain(domain) && iommu_get_dma_cookie(domain)) { + iommu_domain_free(domain); +@@ -2078,9 +2072,17 @@ static struct iommu_domain *__iommu_doma + return domain; + } + ++static struct iommu_domain * ++__iommu_group_domain_alloc(struct iommu_group *group, unsigned int type) ++{ ++ return __iommu_domain_alloc(group_iommu_ops(group), type); ++} ++ + struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus) + { +- return __iommu_domain_alloc(bus, IOMMU_DOMAIN_UNMANAGED); ++ if (bus == NULL || bus->iommu_ops == NULL) ++ return NULL; ++ return __iommu_domain_alloc(bus->iommu_ops, IOMMU_DOMAIN_UNMANAGED); + } + EXPORT_SYMBOL_GPL(iommu_domain_alloc); + +@@ -3240,21 +3242,18 @@ void iommu_device_unuse_default_domain(s + + static int __iommu_group_alloc_blocking_domain(struct iommu_group *group) + { +- struct group_device *dev = +- list_first_entry(&group->devices, struct group_device, list); +- + if (group->blocking_domain) + return 0; + + group->blocking_domain = +- __iommu_domain_alloc(dev->dev->bus, IOMMU_DOMAIN_BLOCKED); ++ __iommu_group_domain_alloc(group, IOMMU_DOMAIN_BLOCKED); + if (!group->blocking_domain) { + /* + * For drivers that do not yet understand IOMMU_DOMAIN_BLOCKED + * create an empty domain instead. + */ +- group->blocking_domain = __iommu_domain_alloc( +- dev->dev->bus, IOMMU_DOMAIN_UNMANAGED); ++ group->blocking_domain = __iommu_group_domain_alloc( ++ group, IOMMU_DOMAIN_UNMANAGED); + if (!group->blocking_domain) + return -EINVAL; + } diff --git a/target/linux/tegra/patches-6.6/010-v6.7-iommu-Add-ops-domain_alloc_paging.patch b/target/linux/tegra/patches-6.6/010-v6.7-iommu-Add-ops-domain_alloc_paging.patch new file mode 100644 index 000000000000..0eaca4ce8661 --- /dev/null +++ b/target/linux/tegra/patches-6.6/010-v6.7-iommu-Add-ops-domain_alloc_paging.patch @@ -0,0 +1,101 @@ +From 4601cd2d7c4c82c4bafc822e1ff630a709eff206 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:55 -0300 +Subject: [PATCH 3/7] iommu: Add ops->domain_alloc_paging() + +This callback requests the driver to create only a __IOMMU_DOMAIN_PAGING +domain, so it saves a few lines in a lot of drivers needlessly checking +the type. + +More critically, this allows us to sweep out all the +IOMMU_DOMAIN_UNMANAGED and IOMMU_DOMAIN_DMA checks from a lot of the +drivers, simplifying what is going on in the code and ultimately removing +the now-unused special cases in drivers where they did not support +IOMMU_DOMAIN_DMA. + +domain_alloc_paging() should return a struct iommu_domain that is +functionally compatible with ARM_DMA_USE_IOMMU, dma-iommu.c and iommufd. + +Be forwards looking and pass in a 'struct device *' argument. We can +provide this when allocating the default_domain. No drivers will look at +this. + +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/22-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 17 ++++++++++++++--- + include/linux/iommu.h | 3 +++ + 2 files changed, 17 insertions(+), 3 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -2042,6 +2042,7 @@ void iommu_set_fault_handler(struct iomm + EXPORT_SYMBOL_GPL(iommu_set_fault_handler); + + static struct iommu_domain *__iommu_domain_alloc(const struct iommu_ops *ops, ++ struct device *dev, + unsigned int type) + { + struct iommu_domain *domain; +@@ -2049,8 +2050,13 @@ static struct iommu_domain *__iommu_doma + + if (alloc_type == IOMMU_DOMAIN_IDENTITY && ops->identity_domain) + return ops->identity_domain; ++ else if (type & __IOMMU_DOMAIN_PAGING && ops->domain_alloc_paging) ++ domain = ops->domain_alloc_paging(dev); ++ else if (ops->domain_alloc) ++ domain = ops->domain_alloc(alloc_type); ++ else ++ return NULL; + +- domain = ops->domain_alloc(alloc_type); + if (!domain) + return NULL; + +@@ -2075,14 +2081,19 @@ static struct iommu_domain *__iommu_doma + static struct iommu_domain * + __iommu_group_domain_alloc(struct iommu_group *group, unsigned int type) + { +- return __iommu_domain_alloc(group_iommu_ops(group), type); ++ struct device *dev = ++ list_first_entry(&group->devices, struct group_device, list) ++ ->dev; ++ ++ return __iommu_domain_alloc(group_iommu_ops(group), dev, type); + } + + struct iommu_domain *iommu_domain_alloc(const struct bus_type *bus) + { + if (bus == NULL || bus->iommu_ops == NULL) + return NULL; +- return __iommu_domain_alloc(bus->iommu_ops, IOMMU_DOMAIN_UNMANAGED); ++ return __iommu_domain_alloc(bus->iommu_ops, NULL, ++ IOMMU_DOMAIN_UNMANAGED); + } + EXPORT_SYMBOL_GPL(iommu_domain_alloc); + +--- a/include/linux/iommu.h ++++ b/include/linux/iommu.h +@@ -239,6 +239,8 @@ struct iommu_iotlb_gather { + * use. The information type is one of enum iommu_hw_info_type defined + * in include/uapi/linux/iommufd.h. + * @domain_alloc: allocate iommu domain ++ * @domain_alloc_paging: Allocate an iommu_domain that can be used for ++ * UNMANAGED, DMA, and DMA_FQ domain types. + * @probe_device: Add device to iommu driver handling + * @release_device: Remove device from iommu driver handling + * @probe_finalize: Do final setup work after the device is added to an IOMMU +@@ -273,6 +275,7 @@ struct iommu_ops { + + /* Domain allocation and freeing by the iommu driver */ + struct iommu_domain *(*domain_alloc)(unsigned iommu_domain_type); ++ struct iommu_domain *(*domain_alloc_paging)(struct device *dev); + + struct iommu_device *(*probe_device)(struct device *dev); + void (*release_device)(struct device *dev); diff --git a/target/linux/tegra/patches-6.6/011-v6.7-iommu-Convert-simple-drivers-with-DOMAIN_DMA-to-doma.patch b/target/linux/tegra/patches-6.6/011-v6.7-iommu-Convert-simple-drivers-with-DOMAIN_DMA-to-doma.patch new file mode 100644 index 000000000000..8f38bfc98146 --- /dev/null +++ b/target/linux/tegra/patches-6.6/011-v6.7-iommu-Convert-simple-drivers-with-DOMAIN_DMA-to-doma.patch @@ -0,0 +1,50 @@ +From 3529375e7777b0f9b77c53df9a7da122bd165ae7 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 13 Sep 2023 10:43:56 -0300 +Subject: [PATCH 4/7] iommu: Convert simple drivers with DOMAIN_DMA to + domain_alloc_paging() + +These drivers are all trivially converted since the function is only +called if the domain type is going to be +IOMMU_DOMAIN_UNMANAGED/DMA. + +Tested-by: Heiko Stuebner +Tested-by: Steven Price +Tested-by: Marek Szyprowski +Tested-by: Nicolin Chen +Reviewed-by: Lu Baolu +Reviewed-by: Jerry Snitselaar +Signed-off-by: Jason Gunthorpe +Tested-by: Yong Wu #For mtk_iommu.c +Link: https://lore.kernel.org/r/23-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/tegra-smmu.c | 7 ++----- + 8 files changed, 17 insertions(+), 40 deletions(-) + +--- a/drivers/iommu/tegra-smmu.c ++++ b/drivers/iommu/tegra-smmu.c +@@ -272,13 +272,10 @@ static void tegra_smmu_free_asid(struct + clear_bit(id, smmu->asids); + } + +-static struct iommu_domain *tegra_smmu_domain_alloc(unsigned type) ++static struct iommu_domain *tegra_smmu_domain_alloc_paging(struct device *dev) + { + struct tegra_smmu_as *as; + +- if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA) +- return NULL; +- + as = kzalloc(sizeof(*as), GFP_KERNEL); + if (!as) + return NULL; +@@ -991,7 +988,7 @@ static int tegra_smmu_def_domain_type(st + static const struct iommu_ops tegra_smmu_ops = { + .identity_domain = &tegra_smmu_identity_domain, + .def_domain_type = &tegra_smmu_def_domain_type, +- .domain_alloc = tegra_smmu_domain_alloc, ++ .domain_alloc_paging = tegra_smmu_domain_alloc_paging, + .probe_device = tegra_smmu_probe_device, + .device_group = tegra_smmu_device_group, + .of_xlate = tegra_smmu_of_xlate, diff --git a/target/linux/tegra/patches-6.6/012-v6.7-iommu-Remove-useless-group-refcounting.patch b/target/linux/tegra/patches-6.6/012-v6.7-iommu-Remove-useless-group-refcounting.patch new file mode 100644 index 000000000000..8626c5291e5a --- /dev/null +++ b/target/linux/tegra/patches-6.6/012-v6.7-iommu-Remove-useless-group-refcounting.patch @@ -0,0 +1,239 @@ +From e946f8e3e62bf05da21a14658f8cb05e2a616260 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Tue, 22 Aug 2023 13:15:56 -0300 +Subject: [PATCH 6/7] iommu: Remove useless group refcounting + +Several functions obtain the group reference and then release it before +returning. This gives the impression that the refcount is protecting +something for the duration of the function. + +In truth all of these functions are called in places that know a device +driver is probed to the device and our locking rules already require +that dev->iommu_group cannot change while a driver is attached to the +struct device. + +If this was not the case then this code is already at risk of triggering +UAF as it is racy if the dev->iommu_group is concurrently going to +NULL/free. refcount debugging will throw a WARN if kobject_get() is +called on a 0 refcount object to highlight the bug. + +Remove the confusing refcounting and leave behind a comment about the +restriction. + +Reviewed-by: Lu Baolu +Reviewed-by: Kevin Tian +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/1-v1-c869a95191f2+5e8-iommu_single_grp_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 57 ++++++++++++++++--------------------------- + 1 file changed, 21 insertions(+), 36 deletions(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -2153,10 +2153,10 @@ static int __iommu_attach_device(struct + */ + int iommu_attach_device(struct iommu_domain *domain, struct device *dev) + { +- struct iommu_group *group; ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + int ret; + +- group = iommu_group_get(dev); + if (!group) + return -ENODEV; + +@@ -2173,8 +2173,6 @@ int iommu_attach_device(struct iommu_dom + + out_unlock: + mutex_unlock(&group->mutex); +- iommu_group_put(group); +- + return ret; + } + EXPORT_SYMBOL_GPL(iommu_attach_device); +@@ -2189,9 +2187,9 @@ int iommu_deferred_attach(struct device + + void iommu_detach_device(struct iommu_domain *domain, struct device *dev) + { +- struct iommu_group *group; ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + +- group = iommu_group_get(dev); + if (!group) + return; + +@@ -2203,24 +2201,18 @@ void iommu_detach_device(struct iommu_do + + out_unlock: + mutex_unlock(&group->mutex); +- iommu_group_put(group); + } + EXPORT_SYMBOL_GPL(iommu_detach_device); + + struct iommu_domain *iommu_get_domain_for_dev(struct device *dev) + { +- struct iommu_domain *domain; +- struct iommu_group *group; ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + +- group = iommu_group_get(dev); + if (!group) + return NULL; + +- domain = group->domain; +- +- iommu_group_put(group); +- +- return domain; ++ return group->domain; + } + EXPORT_SYMBOL_GPL(iommu_get_domain_for_dev); + +@@ -3204,7 +3196,8 @@ static bool iommu_is_default_domain(stru + */ + int iommu_device_use_default_domain(struct device *dev) + { +- struct iommu_group *group = iommu_group_get(dev); ++ /* Caller is the driver core during the pre-probe path */ ++ struct iommu_group *group = dev->iommu_group; + int ret = 0; + + if (!group) +@@ -3223,8 +3216,6 @@ int iommu_device_use_default_domain(stru + + unlock_out: + mutex_unlock(&group->mutex); +- iommu_group_put(group); +- + return ret; + } + +@@ -3238,7 +3229,8 @@ unlock_out: + */ + void iommu_device_unuse_default_domain(struct device *dev) + { +- struct iommu_group *group = iommu_group_get(dev); ++ /* Caller is the driver core during the post-probe path */ ++ struct iommu_group *group = dev->iommu_group; + + if (!group) + return; +@@ -3248,7 +3240,6 @@ void iommu_device_unuse_default_domain(s + group->owner_cnt--; + + mutex_unlock(&group->mutex); +- iommu_group_put(group); + } + + static int __iommu_group_alloc_blocking_domain(struct iommu_group *group) +@@ -3332,13 +3323,13 @@ EXPORT_SYMBOL_GPL(iommu_group_claim_dma_ + */ + int iommu_device_claim_dma_owner(struct device *dev, void *owner) + { +- struct iommu_group *group; ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + int ret = 0; + + if (WARN_ON(!owner)) + return -EINVAL; + +- group = iommu_group_get(dev); + if (!group) + return -ENODEV; + +@@ -3355,8 +3346,6 @@ int iommu_device_claim_dma_owner(struct + ret = __iommu_take_dma_ownership(group, owner); + unlock_out: + mutex_unlock(&group->mutex); +- iommu_group_put(group); +- + return ret; + } + EXPORT_SYMBOL_GPL(iommu_device_claim_dma_owner); +@@ -3394,7 +3383,8 @@ EXPORT_SYMBOL_GPL(iommu_group_release_dm + */ + void iommu_device_release_dma_owner(struct device *dev) + { +- struct iommu_group *group = iommu_group_get(dev); ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + + mutex_lock(&group->mutex); + if (group->owner_cnt > 1) +@@ -3402,7 +3392,6 @@ void iommu_device_release_dma_owner(stru + else + __iommu_release_dma_ownership(group); + mutex_unlock(&group->mutex); +- iommu_group_put(group); + } + EXPORT_SYMBOL_GPL(iommu_device_release_dma_owner); + +@@ -3474,14 +3463,14 @@ static void __iommu_remove_group_pasid(s + int iommu_attach_device_pasid(struct iommu_domain *domain, + struct device *dev, ioasid_t pasid) + { +- struct iommu_group *group; ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + void *curr; + int ret; + + if (!domain->ops->set_dev_pasid) + return -EOPNOTSUPP; + +- group = iommu_group_get(dev); + if (!group) + return -ENODEV; + +@@ -3497,8 +3486,6 @@ int iommu_attach_device_pasid(struct iom + xa_erase(&group->pasid_array, pasid); + out_unlock: + mutex_unlock(&group->mutex); +- iommu_group_put(group); +- + return ret; + } + EXPORT_SYMBOL_GPL(iommu_attach_device_pasid); +@@ -3515,14 +3502,13 @@ EXPORT_SYMBOL_GPL(iommu_attach_device_pa + void iommu_detach_device_pasid(struct iommu_domain *domain, struct device *dev, + ioasid_t pasid) + { +- struct iommu_group *group = iommu_group_get(dev); ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + + mutex_lock(&group->mutex); + __iommu_remove_group_pasid(group, pasid); + WARN_ON(xa_erase(&group->pasid_array, pasid) != domain); + mutex_unlock(&group->mutex); +- +- iommu_group_put(group); + } + EXPORT_SYMBOL_GPL(iommu_detach_device_pasid); + +@@ -3544,10 +3530,10 @@ struct iommu_domain *iommu_get_domain_fo + ioasid_t pasid, + unsigned int type) + { ++ /* Caller must be a probed driver on dev */ ++ struct iommu_group *group = dev->iommu_group; + struct iommu_domain *domain; +- struct iommu_group *group; + +- group = iommu_group_get(dev); + if (!group) + return NULL; + +@@ -3556,7 +3542,6 @@ struct iommu_domain *iommu_get_domain_fo + if (type && domain && domain->type != type) + domain = ERR_PTR(-EBUSY); + xa_unlock(&group->pasid_array); +- iommu_group_put(group); + + return domain; + } diff --git a/target/linux/tegra/patches-6.6/013-v6.7-iommu-Add-generic_single_device_group.patch b/target/linux/tegra/patches-6.6/013-v6.7-iommu-Add-generic_single_device_group.patch new file mode 100644 index 000000000000..e4ef659b56f7 --- /dev/null +++ b/target/linux/tegra/patches-6.6/013-v6.7-iommu-Add-generic_single_device_group.patch @@ -0,0 +1,110 @@ +From e8f52d84cf0b6d1862ab62f7ed705f78690d11b2 Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Tue, 22 Aug 2023 13:15:57 -0300 +Subject: [PATCH 7/7] iommu: Add generic_single_device_group() + +This implements the common pattern seen in drivers of a single iommu_group +for the entire iommu driver instance. Implement this in core code so the +drivers that want this can select it from their ops. + +Reviewed-by: Lu Baolu +Reviewed-by: Kevin Tian +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/2-v1-c869a95191f2+5e8-iommu_single_grp_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 28 +++++++++++++++++++++++++++- + include/linux/iommu.h | 3 +++ + 2 files changed, 30 insertions(+), 1 deletion(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -292,6 +292,10 @@ void iommu_device_unregister(struct iomm + spin_lock(&iommu_device_lock); + list_del(&iommu->list); + spin_unlock(&iommu_device_lock); ++ ++ /* Pairs with the alloc in generic_single_device_group() */ ++ iommu_group_put(iommu->singleton_group); ++ iommu->singleton_group = NULL; + } + EXPORT_SYMBOL_GPL(iommu_device_unregister); + +@@ -406,6 +410,7 @@ static int iommu_init_device(struct devi + ret = PTR_ERR(iommu_dev); + goto err_module_put; + } ++ dev->iommu->iommu_dev = iommu_dev; + + ret = iommu_device_link(iommu_dev, dev); + if (ret) +@@ -420,7 +425,6 @@ static int iommu_init_device(struct devi + } + dev->iommu_group = group; + +- dev->iommu->iommu_dev = iommu_dev; + dev->iommu->max_pasids = dev_iommu_get_max_pasids(dev); + if (ops->is_attach_deferred) + dev->iommu->attach_deferred = ops->is_attach_deferred(dev); +@@ -434,6 +438,7 @@ err_release: + err_module_put: + module_put(ops->owner); + err_free: ++ dev->iommu->iommu_dev = NULL; + dev_iommu_free(dev); + return ret; + } +@@ -1637,6 +1642,27 @@ struct iommu_group *generic_device_group + EXPORT_SYMBOL_GPL(generic_device_group); + + /* ++ * Generic device_group call-back function. It just allocates one ++ * iommu-group per iommu driver instance shared by every device ++ * probed by that iommu driver. ++ */ ++struct iommu_group *generic_single_device_group(struct device *dev) ++{ ++ struct iommu_device *iommu = dev->iommu->iommu_dev; ++ ++ if (!iommu->singleton_group) { ++ struct iommu_group *group; ++ ++ group = iommu_group_alloc(); ++ if (IS_ERR(group)) ++ return group; ++ iommu->singleton_group = group; ++ } ++ return iommu_group_ref_get(iommu->singleton_group); ++} ++EXPORT_SYMBOL_GPL(generic_single_device_group); ++ ++/* + * Use standard PCI bus topology, isolation features, and DMA alias quirks + * to find or create an IOMMU group for a device. + */ +--- a/include/linux/iommu.h ++++ b/include/linux/iommu.h +@@ -378,6 +378,7 @@ struct iommu_domain_ops { + * @list: Used by the iommu-core to keep a list of registered iommus + * @ops: iommu-ops for talking to this iommu + * @dev: struct device for sysfs handling ++ * @singleton_group: Used internally for drivers that have only one group + * @max_pasids: number of supported PASIDs + */ + struct iommu_device { +@@ -385,6 +386,7 @@ struct iommu_device { + const struct iommu_ops *ops; + struct fwnode_handle *fwnode; + struct device *dev; ++ struct iommu_group *singleton_group; + u32 max_pasids; + }; + +@@ -648,6 +650,7 @@ extern struct iommu_group *pci_device_gr + extern struct iommu_group *generic_device_group(struct device *dev); + /* FSL-MC device grouping function */ + struct iommu_group *fsl_mc_device_group(struct device *dev); ++extern struct iommu_group *generic_single_device_group(struct device *dev); + + /** + * struct iommu_fwspec - per-device IOMMU instance data diff --git a/target/linux/tegra/patches-6.6/014-v6.7-iommu-Do-not-use-IOMMU_DOMAIN_DMA-if-CONFIG_IOMMU_DM.patch b/target/linux/tegra/patches-6.6/014-v6.7-iommu-Do-not-use-IOMMU_DOMAIN_DMA-if-CONFIG_IOMMU_DM.patch new file mode 100644 index 000000000000..542f0d18c2f2 --- /dev/null +++ b/target/linux/tegra/patches-6.6/014-v6.7-iommu-Do-not-use-IOMMU_DOMAIN_DMA-if-CONFIG_IOMMU_DM.patch @@ -0,0 +1,46 @@ +From 0f6a90436a5771fc9f6ca0d1e64f7549219e6c3c Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Tue, 3 Oct 2023 13:52:36 -0300 +Subject: [PATCH 1/2] iommu: Do not use IOMMU_DOMAIN_DMA if CONFIG_IOMMU_DMA is + not enabled + +msm_iommu platforms do not select either CONFIG_IOMMU_DMA or +CONFIG_ARM_DMA_USE_IOMMU so they create a IOMMU_DOMAIN_DMA domain by +default and never populate it. This acts like a BLOCKED domain and breaks +the GPU driver on the platform. + +Detect this and force use of IDENTITY instead. + +Fixes: 98ac73f99bc4 ("iommu: Require a default_domain for all iommu drivers") +Reported-by: Dmitry Baryshkov +Link: https://lore.kernel.org/linux-iommu/CAA8EJprz7VVmBG68U9zLuqPd0UdSRHYoLDJSP6tCj6H6qanuTQ@mail.gmail.com/ +Signed-off-by: Jason Gunthorpe +Reviewed-by: Jerry Snitselaar +Tested-by: Dmitry Baryshkov +Link: https://lore.kernel.org/r/0-v1-20700abdf239+19c-iommu_no_dma_iommu_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1922,6 +1922,18 @@ static int iommu_get_default_domain_type + } + } + ++ /* ++ * If the common dma ops are not selected in kconfig then we cannot use ++ * IOMMU_DOMAIN_DMA at all. Force IDENTITY if nothing else has been ++ * selected. ++ */ ++ if (!IS_ENABLED(CONFIG_IOMMU_DMA)) { ++ if (WARN_ON(driver_type == IOMMU_DOMAIN_DMA)) ++ return -1; ++ if (!driver_type) ++ driver_type = IOMMU_DOMAIN_IDENTITY; ++ } ++ + if (untrusted) { + if (driver_type && driver_type != IOMMU_DOMAIN_DMA) { + dev_err_ratelimited( diff --git a/target/linux/tegra/patches-6.6/015-v6.7-iommu-Fix-return-code-in-iommu_group_alloc_default_d.patch b/target/linux/tegra/patches-6.6/015-v6.7-iommu-Fix-return-code-in-iommu_group_alloc_default_d.patch new file mode 100644 index 000000000000..9f7914ad98ce --- /dev/null +++ b/target/linux/tegra/patches-6.6/015-v6.7-iommu-Fix-return-code-in-iommu_group_alloc_default_d.patch @@ -0,0 +1,29 @@ +From b85b4f30846bb169c114e99ceee17cc119f02a4b Mon Sep 17 00:00:00 2001 +From: Jason Gunthorpe +Date: Wed, 4 Oct 2023 09:08:32 -0300 +Subject: [PATCH 2/2] iommu: Fix return code in + iommu_group_alloc_default_domain() + +This function returns NULL on errors, not ERR_PTR. + +Fixes: 1c68cbc64fe6 ("iommu: Add IOMMU_DOMAIN_PLATFORM") +Reported-by: Dan Carpenter +Link: https://lore.kernel.org/r/8fb75157-6c81-4a9c-9992-d73d49902fa8@moroto.mountain +Signed-off-by: Jason Gunthorpe +Link: https://lore.kernel.org/r/0-v2-ee2bae9af0f2+96-iommu_ga_err_ptr_jgg@nvidia.com +Signed-off-by: Joerg Roedel +--- + drivers/iommu/iommu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/iommu/iommu.c ++++ b/drivers/iommu/iommu.c +@@ -1787,7 +1787,7 @@ iommu_group_alloc_default_domain(struct + */ + if (ops->default_domain) { + if (req_type) +- return ERR_PTR(-EINVAL); ++ return NULL; + return ops->default_domain; + } + diff --git a/target/linux/tegra/patches-6.6/016-v6.12-arm64-tegra-Fix-gpio-for-P2597-vmmc-regulator.patch b/target/linux/tegra/patches-6.6/016-v6.12-arm64-tegra-Fix-gpio-for-P2597-vmmc-regulator.patch new file mode 100644 index 000000000000..278dda0ee9e8 --- /dev/null +++ b/target/linux/tegra/patches-6.6/016-v6.12-arm64-tegra-Fix-gpio-for-P2597-vmmc-regulator.patch @@ -0,0 +1,28 @@ +From 46a26db82748a9434fae662738ff80e350b179ee Mon Sep 17 00:00:00 2001 +From: Diogo Ivo +Date: Thu, 15 Aug 2024 16:50:39 +0100 +Subject: [PATCH 1/2] arm64: tegra: Fix gpio for P2597 vmmc regulator + +The current declaration is off-by-one and actually corresponds to the +wp-gpio of the external slot. + +Tested on a P2597 board. + +Signed-off-by: Diogo Ivo +Tested-by: Tomasz Maciej Nowak +Signed-off-by: Thierry Reding +--- + arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +@@ -1603,7 +1603,7 @@ + regulator-name = "VDD_3V3_SD"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; +- gpio = <&gpio TEGRA_GPIO(Z, 4) GPIO_ACTIVE_HIGH>; ++ gpio = <&gpio TEGRA_GPIO(Z, 3) GPIO_ACTIVE_HIGH>; + enable-active-high; + vin-supply = <&vdd_3v3_sys>; + diff --git a/target/linux/tegra/patches-6.6/017-v6.12-arm64-tegra-Add-wp-gpio-for-P2597-s-external-card-sl.patch b/target/linux/tegra/patches-6.6/017-v6.12-arm64-tegra-Add-wp-gpio-for-P2597-s-external-card-sl.patch new file mode 100644 index 000000000000..1b97ea0bd589 --- /dev/null +++ b/target/linux/tegra/patches-6.6/017-v6.12-arm64-tegra-Add-wp-gpio-for-P2597-s-external-card-sl.patch @@ -0,0 +1,27 @@ +From ebe899563a83c9bb578248eb4a4d56414275d9fa Mon Sep 17 00:00:00 2001 +From: Diogo Ivo +Date: Thu, 15 Aug 2024 16:50:40 +0100 +Subject: [PATCH 2/2] arm64: tegra: Add wp-gpio for P2597's external card slot + +Add the definition for the wp-gpio of the P2597's external card slot, +enabling this functionality. + +Tested on a P2597 board. + +Signed-off-by: Diogo Ivo +Tested-by: Tomasz Maciej Nowak +Signed-off-by: Thierry Reding +--- + arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +@@ -1517,6 +1517,7 @@ + bus-width = <4>; + + cd-gpios = <&gpio TEGRA_GPIO(Z, 1) GPIO_ACTIVE_LOW>; ++ wp-gpios = <&gpio TEGRA_GPIO(Z, 4) GPIO_ACTIVE_HIGH>; + + vqmmc-supply = <&vddio_sdmmc>; + vmmc-supply = <&vdd_3v3_sd>; diff --git a/target/linux/tegra/patches-6.6/018-v6.12-arm64-tegra-Wire-up-power-sensors-on-Jetson-TX1-DevK.patch b/target/linux/tegra/patches-6.6/018-v6.12-arm64-tegra-Wire-up-power-sensors-on-Jetson-TX1-DevK.patch new file mode 100644 index 000000000000..aa776666f592 --- /dev/null +++ b/target/linux/tegra/patches-6.6/018-v6.12-arm64-tegra-Wire-up-power-sensors-on-Jetson-TX1-DevK.patch @@ -0,0 +1,112 @@ +From 3ed4e0986028867d1a2fe68da933dd935b12af9e Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Wed, 21 Aug 2024 20:58:03 +0200 +Subject: [PATCH 1/3] arm64: tegra: Wire up power sensors on Jetson TX1 DevKit + +One INA3221 sensor is located on P2180 module and the other two are on +P2597 base board. + +Signed-off-by: Tomasz Maciej Nowak +Signed-off-by: Thierry Reding +--- + .../arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 29 +++++++++++ + .../arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 50 +++++++++++++++++++ + 2 files changed, 79 insertions(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -33,6 +33,35 @@ + status = "okay"; + }; + ++ i2c@7000c400 { ++ status = "okay"; ++ ++ power-sensor@40 { ++ compatible = "ti,ina3221"; ++ reg = <0x40>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ input@0 { ++ reg = <0x0>; ++ label = "VDD_IN"; ++ shunt-resistor-micro-ohms = <20000>; ++ }; ++ ++ input@1 { ++ reg = <0x1>; ++ label = "VDD_GPU"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ ++ input@2 { ++ reg = <0x2>; ++ label = "VDD_CPU"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ }; ++ }; ++ + i2c@7000c500 { + status = "okay"; + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +@@ -1319,6 +1319,56 @@ + status = "okay"; + clock-frequency = <100000>; + ++ power-sensor@42 { ++ compatible = "ti,ina3221"; ++ reg = <0x42>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ input@0 { ++ reg = <0x0>; ++ label = "VDD_MUX"; ++ shunt-resistor-micro-ohms = <20000>; ++ }; ++ ++ input@1 { ++ reg = <0x1>; ++ label = "VDD_5V_IO_SYS"; ++ shunt-resistor-micro-ohms = <5000>; ++ }; ++ ++ input@2 { ++ reg = <0x2>; ++ label = "VDD_3V3_SYS"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ }; ++ ++ power-sensor@43 { ++ compatible = "ti,ina3221"; ++ reg = <0x43>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ input@0 { ++ reg = <0x0>; ++ label = "VDD_3V3_IO"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ ++ input@1 { ++ reg = <0x1>; ++ label = "VDD_1V8_IO"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ ++ input@2 { ++ reg = <0x2>; ++ label = "VDD_M2_IN"; ++ shunt-resistor-micro-ohms = <10000>; ++ }; ++ }; ++ + exp1: gpio@74 { + compatible = "ti,tca9539"; + reg = <0x74>; diff --git a/target/linux/tegra/patches-6.6/019-v6.12-arm64-tegra-Wire-up-Bluetooth-on-Jetson-TX1-module.patch b/target/linux/tegra/patches-6.6/019-v6.12-arm64-tegra-Wire-up-Bluetooth-on-Jetson-TX1-module.patch new file mode 100644 index 000000000000..d0f5ac7a12cc --- /dev/null +++ b/target/linux/tegra/patches-6.6/019-v6.12-arm64-tegra-Wire-up-Bluetooth-on-Jetson-TX1-module.patch @@ -0,0 +1,43 @@ +From 6eba6471bbb7e3bf27e2b540fb7282848a58cd17 Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Wed, 21 Aug 2024 20:58:04 +0200 +Subject: [PATCH 2/3] arm64: tegra: Wire up Bluetooth on Jetson TX1 module + +P2180 modules have Bluetooth in form of BCM4354 chip, and kernel driver +supports this one, so enable it for all users. The necessary firmware +can be obtained from Jetson Linux Archive. bcm4354.hcd file is located +in "Driver Package (BSP)" in +nv_tegra/l4t_deb_packages/nvidia-l4t-firmware__arm64.deb +archive. + +Signed-off-by: Tomasz Maciej Nowak +Signed-off-by: Thierry Reding +--- + arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -33,6 +33,22 @@ + status = "okay"; + }; + ++ serial@70006300 { ++ /delete-property/ reg-shift; ++ status = "okay"; ++ compatible = "nvidia,tegra30-hsuart"; ++ reset-names = "serial"; ++ ++ bluetooth { ++ compatible = "brcm,bcm43540-bt"; ++ device-wakeup-gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>; ++ shutdown-gpios = <&gpio TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>; ++ interrupt-parent = <&gpio>; ++ interrupts = ; ++ interrupt-names = "host-wakeup"; ++ }; ++ }; ++ + i2c@7000c400 { + status = "okay"; + diff --git a/target/linux/tegra/patches-6.6/020-v6.12-arm64-tegra-Wire-up-WiFi-on-Jetson-TX1-module.patch b/target/linux/tegra/patches-6.6/020-v6.12-arm64-tegra-Wire-up-WiFi-on-Jetson-TX1-module.patch new file mode 100644 index 000000000000..b695373b301f --- /dev/null +++ b/target/linux/tegra/patches-6.6/020-v6.12-arm64-tegra-Wire-up-WiFi-on-Jetson-TX1-module.patch @@ -0,0 +1,48 @@ +From a50d5dcd28154c1a38aa1d72b1678715aecf5464 Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Wed, 21 Aug 2024 20:58:05 +0200 +Subject: [PATCH 3/3] arm64: tegra: Wire up WiFi on Jetson TX1 module + +P2180 modules have WiFi in form of BCM4354 chip, and kernel driver +supports this one, so enable it for all users. The necessary calibration +file can be obtained from Jetson Linux Archive. nvram.txt file is +located in "Driver Package (BSP)" in +nv_tegra/l4t_deb_packages/nvidia-l4t-firmware__arm64.deb +archive. The rest of necessary blobs can be obtained from official +Linux Firmware repository or (newer ones) from Infineon +ifx-linux-firmware repository (look in older releases). + +Signed-off-by: Tomasz Maciej Nowak +Signed-off-by: Thierry Reding +--- + .../arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -340,6 +340,25 @@ + nvidia,sys-clock-req-active-high; + }; + ++ mmc@700b0200 { ++ status = "okay"; ++ bus-width = <4>; ++ non-removable; ++ power-gpios = <&gpio TEGRA_GPIO(H, 0) GPIO_ACTIVE_HIGH>; ++ vqmmc-supply = <&vdd_1v8>; ++ vmmc-supply = <&vdd_3v3_sys>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ wifi@1 { ++ compatible = "brcm,bcm4354-fmac"; ++ reg = <1>; ++ interrupt-parent = <&gpio>; ++ interrupts = ; ++ interrupt-names = "host-wake"; ++ }; ++ }; ++ + /* eMMC */ + mmc@700b0600 { + status = "okay"; diff --git a/target/linux/tegra/patches-6.6/021-v6.13-arm64-tegra-Add-SDMMC-sdr104-offsets-for-Tegra-X1.patch b/target/linux/tegra/patches-6.6/021-v6.13-arm64-tegra-Add-SDMMC-sdr104-offsets-for-Tegra-X1.patch new file mode 100644 index 000000000000..1310ce4bf0de --- /dev/null +++ b/target/linux/tegra/patches-6.6/021-v6.13-arm64-tegra-Add-SDMMC-sdr104-offsets-for-Tegra-X1.patch @@ -0,0 +1,29 @@ +From 87b90082179daf87969ad9ff44032acc59d9086a Mon Sep 17 00:00:00 2001 +From: Diogo Ivo +Date: Mon, 23 Sep 2024 19:24:51 +0100 +Subject: [PATCH] arm64: tegra: Add SDMMC sdr104-offsets for Tegra X1 + +Define the sdr104-specific offsets, preventing the driver from +defaulting to the 1.8V offsets, which cause the system to hang during +the SDR104 mode calibration. + +The zeroing of these values was chosen since it restores functionality +and no better suggestions are provided by the Tegra X1 TRM. + +Signed-off-by: Diogo Ivo +Signed-off-by: Thierry Reding +--- + arch/arm64/boot/dts/nvidia/tegra210.dtsi | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210.dtsi +@@ -1218,6 +1218,8 @@ + nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>; + nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>; + nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>; ++ nvidia,pad-autocal-pull-up-offset-sdr104 = <0x0>; ++ nvidia,pad-autocal-pull-down-offset-sdr104 = <0x0>; + nvidia,default-tap = <0x2>; + nvidia,default-trim = <0x4>; + assigned-clocks = <&tegra_car TEGRA210_CLK_SDMMC4>, diff --git a/target/linux/tegra/patches-6.6/102-Revert-Bluetooth-hci_bcm-do-not-mark-valid-bd_addr-a.patch b/target/linux/tegra/patches-6.6/102-Revert-Bluetooth-hci_bcm-do-not-mark-valid-bd_addr-a.patch new file mode 100644 index 000000000000..d07c39dbbcf6 --- /dev/null +++ b/target/linux/tegra/patches-6.6/102-Revert-Bluetooth-hci_bcm-do-not-mark-valid-bd_addr-a.patch @@ -0,0 +1,27 @@ +From 344cb1d9e869381a9d47d41b74b3c386ede1976b Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Tue, 6 Aug 2024 22:12:58 +0200 +Subject: [PATCH] Revert "Bluetooth: hci_bcm: do not mark valid bd_addr as + invalid" + +This reverts commit 56b7f325db139c9255b1eb1d1e741576d5f8fa34, as driver +sets the invalid flag, there is no way to asign address provided by +local-bd-address property. + +Signed-off-by: Tomasz Maciej Nowak +--- + drivers/bluetooth/hci_bcm.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/bluetooth/hci_bcm.c ++++ b/drivers/bluetooth/hci_bcm.c +@@ -643,8 +643,7 @@ static int bcm_setup(struct hci_uart *hu + * Allow the bootloader to set a valid address through the + * device tree. + */ +- if (test_bit(HCI_QUIRK_INVALID_BDADDR, &hu->hdev->quirks)) +- set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hu->hdev->quirks); ++ set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hu->hdev->quirks); + + if (!bcm_request_irq(bcm)) + err = bcm_setup_sleep(hu); diff --git a/target/linux/tegra/patches-6.6/103-arm64-tegra-wire-up-PWM-fan-on-Jetson-TX1-DevKit-bas.patch b/target/linux/tegra/patches-6.6/103-arm64-tegra-wire-up-PWM-fan-on-Jetson-TX1-DevKit-bas.patch new file mode 100644 index 000000000000..794d61dbef08 --- /dev/null +++ b/target/linux/tegra/patches-6.6/103-arm64-tegra-wire-up-PWM-fan-on-Jetson-TX1-DevKit-bas.patch @@ -0,0 +1,49 @@ +From a78c520ec94aeab2c9dc8e1f46597c4174ff957d Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Tue, 16 Jul 2024 20:29:13 +0200 +Subject: [PATCH 1/2] arm64: tegra: wire up PWM fan on Jetson TX1 DevKit base + board + +With enabling Bluetooth and WiFi the P2180 module starts to warm up, so +to keep it cool, enable PWM fan connected to J15 header on P2597 base +board. No colling map yet specified, as the polarity seems to be +inverted(?) and 255 value in sysfs is no rotation and 0 is the highest +rotation speed. Needs to be investigated. + +Signed-off-by: Tomasz Maciej Nowak +--- + arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +@@ -1605,6 +1605,14 @@ + }; + }; + ++ pwm-fan { ++ compatible = "pwm-fan"; ++ pwms = <&pwm 3 45334>; ++ fan-supply = <&vdd_fan>; ++ interrupt-parent = <&gpio>; ++ interrupts = ; ++ }; ++ + vdd_sys_mux: regulator-vdd-sys-mux { + compatible = "regulator-fixed"; + regulator-name = "VDD_SYS_MUX"; +@@ -1760,4 +1768,14 @@ + enable-active-high; + vin-supply = <&vdd_5v0_sys>; + }; ++ ++ vdd_fan: regulator-vdd-fan { ++ compatible = "regulator-fixed"; ++ regulator-name = "VDD_FAN_5V0"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-enable-ramp-delay = <284>; ++ gpio = <&exp1 4 GPIO_ACTIVE_LOW>; ++ vin-supply = <&vdd_5v0_sys>; ++ }; + }; diff --git a/target/linux/tegra/patches-6.6/104-arm64-tegra-add-cooling-maps-for-Jetson-TX1-module.patch b/target/linux/tegra/patches-6.6/104-arm64-tegra-add-cooling-maps-for-Jetson-TX1-module.patch new file mode 100644 index 000000000000..560db75d54cb --- /dev/null +++ b/target/linux/tegra/patches-6.6/104-arm64-tegra-add-cooling-maps-for-Jetson-TX1-module.patch @@ -0,0 +1,127 @@ +From 99beee4f0cd5d3a6f30e1829d823c11cb8b54bac Mon Sep 17 00:00:00 2001 +From: Tomasz Maciej Nowak +Date: Thu, 18 Jul 2024 15:46:16 +0200 +Subject: [PATCH 2/2] arm64: tegra: add cooling maps for Jetson TX1 module + +The PWM signals are indeed inverted, so work around it by specifying +colling levels in reverse order, since driver does not implement +inverted polarity. + +Signed-off-by: Tomasz Maciej Nowak +--- + .../arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 85 +++++++++++++++++++ + .../arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 4 +- + 2 files changed, 88 insertions(+), 1 deletion(-) + +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -402,6 +402,91 @@ + method = "smc"; + }; + ++ thermal-zones { ++ cpu-thermal { ++ trips { ++ cpu_trip_critical: critical { ++ temperature = <94000>; ++ hysteresis = <0>; ++ type = "critical"; ++ }; ++ ++ cpu_trip_hot: hot { ++ temperature = <86000>; ++ hysteresis = <1000>; ++ type = "hot"; ++ }; ++ ++ cpu_trip_active_78: active-78 { ++ temperature = <78000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ ++ cpu_trip_active_70: active-70 { ++ temperature = <70000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ ++ cpu_trip_active_60: active-60 { ++ temperature = <60000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ ++ cpu_trip_active_50: active-50 { ++ temperature = <50000>; ++ hysteresis = <2000>; ++ type = "active"; ++ }; ++ ++ cpu_trip_passive: passive { ++ temperature = <23000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ }; ++ ++ cooling-maps { ++ cpu-critical { ++ cooling-device = <&fan 6 6>; ++ trip = <&cpu_trip_critical>; ++ }; ++ ++ cpu-hot { ++ cooling-device = <&fan 5 5>; ++ trip = <&cpu_trip_hot>; ++ }; ++ ++ cpu-active-78 { ++ cooling-device = <&fan 4 4>; ++ trip = <&cpu_trip_active_78>; ++ }; ++ ++ cpu-active-70 { ++ cooling-device = <&fan 3 3>; ++ trip = <&cpu_trip_active_70>; ++ }; ++ ++ cpu-active-60 { ++ cooling-device = <&fan 2 2>; ++ trip = <&cpu_trip_active_60>; ++ }; ++ ++ cpu-active-50 { ++ cooling-device = <&fan 1 1>; ++ trip = <&cpu_trip_active_50>; ++ }; ++ ++ cpu-passive { ++ cooling-device = <&fan 0 0>; ++ trip = <&cpu_trip_passive>; ++ }; ++ }; ++ }; ++ }; ++ + vdd_gpu: regulator-vdd-gpu { + compatible = "pwm-regulator"; + pwms = <&pwm 1 8000>; +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +@@ -1605,12 +1605,14 @@ + }; + }; + +- pwm-fan { ++ fan: pwm-fan { + compatible = "pwm-fan"; + pwms = <&pwm 3 45334>; + fan-supply = <&vdd_fan>; + interrupt-parent = <&gpio>; + interrupts = ; ++ cooling-levels = <255 192 160 128 96 64 0>; ++ #cooling-cells = <2>; + }; + + vdd_sys_mux: regulator-vdd-sys-mux { diff --git a/target/linux/tegra/patches-6.6/105-arm64-tegra-keep-crucial-sysfs-paths-constant.patch b/target/linux/tegra/patches-6.6/105-arm64-tegra-keep-crucial-sysfs-paths-constant.patch new file mode 100644 index 000000000000..8e4e422da55b --- /dev/null +++ b/target/linux/tegra/patches-6.6/105-arm64-tegra-keep-crucial-sysfs-paths-constant.patch @@ -0,0 +1,14 @@ +--- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi ++++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi +@@ -8,9 +8,11 @@ + compatible = "nvidia,p2180", "nvidia,tegra210"; + + aliases { ++ mmc1 = "/mmc@700b0200"; + rtc0 = "/i2c@7000d000/pmic@3c"; + rtc1 = "/rtc@7000e000"; + serial0 = &uarta; ++ serial3 = &uartd; + }; + + chosen { From patchwork Tue Oct 29 15:47:03 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: 2003849 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=48Cmd6xz; 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=e/zrJ5CR; 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=G/L94nWy; 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 4XdHc42f6nz1xwc for ; Wed, 30 Oct 2024 04:41:08 +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=lk/0boFvcmQ207HnonkNeKvUWOoaT8Pa9Iskf+qfVnw=; b=48Cmd6xz9NzxFv BPdbDw4c5HC+prxZ6kHOaIlvlA7A/e039GvTUBQSSrESjBNgV2wyhN2k/p1dmtpfjYeYDaXcICY0f v3M+oHWpIDkGoBogLhYRjb5h975Nm9haqvIkU4TIIQ8UhMoTujMrSNndcLmVjMITr8mRftdMr2z7k J1CP6UnRMm4CtvxFTfENRBSN9TZ0+P8oQd/6ldw6ZjfYsyLCBiLyjPCWA4LIDuVLDPsINmTS2DdaM 6/qSMCbkC3OxHCDWqvfQewHdb1TmGULlXLMkVNWM5F3xopLIZ5rSn6U5zgitS7HrTj4CWI0GxrK+t CxXS9C62Ee00AELsys1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qCP-0000000FL7P-0sOF; Tue, 29 Oct 2024 17:40:09 +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 1t5op9-0000000F4ok-0lnh for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:12:03 +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=FpMyi8PY+P5/tzicVOOnzoTanuZ43Bh3VVulh8gebew=; b=e/zrJ5CRCGSOP1qe2HIEAaTbul 9j6M4mnrf/Hup+C4uqmEZ+bX/xYWNAaF4zVmCu5pk0QpGwhC9ltCIEB3/L0bbGAtXFZJsGCHXxhYQ xyGDCGd+RVppn/E3U7zyEfakwUH3rtlMC1uATOKeTH0KQlPVti19b3WMM5HJSy7RuXU+EMt/JuZez iTE7HvFgi7NXaYMO8UYZ8yV+EComKekzRyx6tB+jUj/uDExqNdgaWLCPWSSOgrXnfhAbrni/oh7me bn+MClTJ11ZhxK7rUJ3xfWKGSUGG/0+W5wMqZOuO98xBYpy2FldZ7skERcyVJhw0EJLJpERaJb4u+ QqfTubFQ==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oov-00000009wmb-3an3 for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:12:02 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id B80F020312; Tue, 29 Oct 2024 17:11:44 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218304; bh=qwNsC7jm16bI0uEyvqQE9NJbQvotEXvFwMipwODMko8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=G/L94nWy1UwvmQHjSF2l8cxcHg2/uxXe8lhzgHK66TzjqmyBZKRNNLSa6uCIkuw6r 2qcTFs6trPsttq2MTdXSp/DDWHBL35KM6Bdwt4xXNoeK0jiuqDYYxhIEJphm+zfI5J mVBcCPcfc7p1kOh5ZkLYUbpRu42JcEtCKDHLT98ex5GrCBDNlIm0mREOE2tr/Qf4ct Hqs+eP9erYWvYbaTUhb6iMvQa3TL/+xjqbCSPxICxAT9B/2AUepVOQ5e5DpG8LzmsI UKO8sXz6wQCLa7xEDbd65s1AGkWRgWHCBSC8QBDINUc6bq/p4klw/j/UoIymeoHKAQ GJcCwCukFlQgg== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 10/14] linux-firmware: package Tegra X1 VIC firmware Date: Tue, 29 Oct 2024 16:47:03 +0100 Message-ID: <20241029161046.110403-11-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_161200_089861_B93B10D6 X-CRM114-Status: UNSURE ( 7.23 ) X-CRM114-Notice: Please train this message. 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: Koen Vandeputte This adds the required blob for the Video Image Compositor. Signed-off-by: Koen Vandeputte [reword commit title] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvidia.mk | 8 ++++++++ 1 f [...] 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: Koen Vandeputte This adds the required blob for the Video Image Compositor. Signed-off-by: Koen Vandeputte [reword commit title] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvidia.mk | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/package/firmware/linux-firmware/nvidia.mk b/package/firmware/linux-firmware/nvidia.mk index b18d9c224007..4bb523a18fe9 100644 --- a/package/firmware/linux-firmware/nvidia.mk +++ b/package/firmware/linux-firmware/nvidia.mk @@ -7,3 +7,11 @@ define Package/t210-usb-firmware/install endef $(eval $(call BuildPackage,t210-usb-firmware)) +Package/t210-vic-firmware = $(call Package/firmware-default,nVidia T210 VIC firmware) +define Package/t210-vic-firmware/install + $(INSTALL_DIR) $(1)/lib/firmware/nvidia/tegra210 + $(INSTALL_DATA) \ + $(PKG_BUILD_DIR)/nvidia/tegra210/vic04_ucode.bin \ + $(1)/lib/firmware/nvidia/tegra210 +endef +$(eval $(call BuildPackage,t210-vic-firmware)) From patchwork Tue Oct 29 15:47:04 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: 2003845 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=exVvmIG1; 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=dGkk90YQ; 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=CMk0C6mS; 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 4XdHb62yHkz1xwc for ; Wed, 30 Oct 2024 04:40:18 +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=Vi2LXEOo74DzTrk8D/nwsZltghx6h8bTAipH53NdK/Y=; b=exVvmIG1nuQbkx ZdPMeVk9B4ZxhMJviRD6ypudAGOYXmwpRSENaglYp62TAySkVEJlwiWuRb7RJ4T3uUeyCXVBceP9N Gt47Y2WdXwnt1IUfy46+9NLGV569n7BgRWc05T7LJRBqoRRGKAsiml0xevayquSWczIjysHMa3ywN KeU1gGVkIpBFMq6oWUcdEiowD0wLMPzsQtZtHfQ6hETfRAkNqgGGmgEkKN1KZkJXwYyijUXo0ae4I y9oAP5PbW3+7LboJPXQu2A06+SrruLmJRdQ2zSf94Jcvs7s+1+mzcuBDDj5gEODaVhygSMilRuXf4 P55COgU0K8gkiS64F4cg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qBG-0000000FKBZ-2wAW; Tue, 29 Oct 2024 17:38:58 +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-0000000F4nT-2Num 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=3Le2AwjCp4Sde9wu+z6452476uW41LkkSqgLKEdZ9/4=; b=dGkk90YQU0SyZLBSuXCXlqdNWY OqMWBTa6d8Li9btfKIoVRz1e1e9DpJLO4kl9WqDZEZQg/DcEiUIcPQtRi0GyzAMEH6JF+Ty8hYVoR 9NYda0ApceZCmA0aWHayW4VMeoJDP0AuAwZet4IZuArm/T22Rvx7lkBps7m7g1aSo2p4AxmYQiILL 3WQnCj9nT1yrRW2f51qBuhGUGGlzz2LF/uxfcpQB9xpWJuOHgiVusQr6V9VCDkfSf64vOCvk8p2rh d0RCjIjTgHM2g0uCI5TDKtp52ybIuXlnttOuvwuUNy4qmlZlaW9VZXFB7v11Csh0rCbf+M56d+4EU XZMGPT0w==; Received: from terefe.re ([5.255.96.200]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oov-00000009wmo-3awu for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:52 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 164B920313; Tue, 29 Oct 2024 17:11:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218305; bh=7ggjRaiBx51N5KqenL5uSC/B2wj6IyuKTbxyXw1gCiw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CMk0C6mSH7YSOZ3Ivn6ALYBFLOucu5zBifpUXPXuwwYIAuf7vOYWbM+bUOKcqqrBr ocPzjXI6q8kRp+LzHrQ1O9g0sP6/gEAcbw8AkKYh4O6VrYHMAd6vqq8Zd1DTvCzumF aYFEhnma3TFRphpOR4pYTLyiyaJCfkhhdKZWefetjn/9owV8SnhVQI6riDZyfoQp/2 H8CHFq/0cOxnflNXoBMT/Hemg5T8uxepAgbNp6g0VXllVZN65GDgwBqdwMYL1gb5ud pRgfxzqPJ8y+QLUDuwZCEa1RLedigfy2cJnzNwWvCeZuqcI4GUT58g9XStbOpivvq2 bQlivtqGK5U+g== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 11/14] linux-firmware: add support for NVIDIA GM20B GPU Date: Tue, 29 Oct 2024 16:47:04 +0100 Message-ID: <20241029161046.110403-12-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_161150_679324_5AE7F3F5 X-CRM114-Status: UNSURE ( 8.85 ) X-CRM114-Notice: Please train this message. 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: Koen Vandeputte This commit allows to install the required firmware files for the GM20B GPU. This GPU is based on Maxwell and is present on Tegra X1 SoC. Signed-off-by: Koen Vandeputte [reword, add missing firmware file] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvidia.mk | [...] 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: Koen Vandeputte This commit allows to install the required firmware files for the GM20B GPU. This GPU is based on Maxwell and is present on Tegra X1 SoC. Signed-off-by: Koen Vandeputte [reword, add missing firmware file] Signed-off-by: Tomasz Maciej Nowak --- package/firmware/linux-firmware/nvidia.mk | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/package/firmware/linux-firmware/nvidia.mk b/package/firmware/linux-firmware/nvidia.mk index 4bb523a18fe9..65df7ea035ea 100644 --- a/package/firmware/linux-firmware/nvidia.mk +++ b/package/firmware/linux-firmware/nvidia.mk @@ -1,3 +1,23 @@ +Package/gm20b-firmware = $(call Package/firmware-default,GM20B Video Driver firmware) +define Package/gm20b-firmware/install + $(INSTALL_DIR) $(1)/lib/firmware/nvidia/gm20b/acr + $(INSTALL_DIR) $(1)/lib/firmware/nvidia/gm20b/gr + $(INSTALL_DIR) $(1)/lib/firmware/nvidia/gm20b/pmu + $(CP) \ + $(PKG_BUILD_DIR)/nvidia/gm20b/acr/*.bin \ + $(1)/lib/firmware/nvidia/gm20b/acr + $(CP) \ + $(PKG_BUILD_DIR)/nvidia/gm20b/gr/*.bin \ + $(1)/lib/firmware/nvidia/gm20b/gr + $(CP) \ + $(PKG_BUILD_DIR)/nvidia/gm200/gr/sw_method_init.bin \ + $(1)/lib/firmware/nvidia/gm20b/gr + $(CP) \ + $(PKG_BUILD_DIR)/nvidia/gm20b/pmu/*.bin \ + $(1)/lib/firmware/nvidia/gm20b/pmu +endef +$(eval $(call BuildPackage,gm20b-firmware)) + Package/t210-usb-firmware = $(call Package/firmware-default,nVidia T210 USB firmware) define Package/t210-usb-firmware/install $(INSTALL_DIR) $(1)/lib/firmware/nvidia/tegra210 From patchwork Tue Oct 29 15:47:05 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: 2003846 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=nKh6QSD0; 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=nwBUwTZe; 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=xssLOMhO; 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 4XdHbB3H5Wz1xwc for ; Wed, 30 Oct 2024 04:40:22 +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=XEHMNLDkBRu6mF7Rt0mjjfWg+rVpLgafbWb4HX/UIvM=; b=nKh6QSD0KbyIC9 6GczuTQ5Pih5eXgQfoLpVkUVqiPE/H8jZCIDbOVKXQqivot45S+43DvSxSReuxn3+6FHGb7lqyRNx RajEzEodpTbWQ7t85frbPLG1iqM9KONbKeh0pkCRcYEWHrvUiQXQe0Xp8JSEAwawv0LnbyTU3u03a E8l1hi8veflTCxmE40WBHVCaiGLxvHx5NI/Yc4Ppd443DqfPO0I8JcTsm9QWUN/ZJZzZh26DEYJFB YOQz5/DLjQibP/L26BtbE8nJLQNx2oTreQ0daxCW7zORc7k08/mQpI9dwpKuTZFtEpStVLPkwKyer WjZLKGyBlRkQlkFA2NMw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qBZ-0000000FKPV-0zRz; Tue, 29 Oct 2024 17:39:17 +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 1t5op0-0000000F4nu-0tEY for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:54 +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=L5j4++xTdT4r5+g7l7qa2mTd7AZ1RJbb2zAYTUraXS0=; b=nwBUwTZeoKspiGIX9SaobjUwko cwFrYFoYtN6gz4cg2j8uvzCwVXNBkG0M29fpfX0pm5OnPsZK5HSX5B6ogGcX/1tiQFCxClEiM1qJN RRaAu2J+hCYjr68h9Mt1HQylqd/r4mKOjxG49gizIdfU8+qKIKt29JRN8fDAJ9zQPGg5z1VcJEzBQ XtILpWgFLGc2pL5Yjx5uIAPo5VcHvokJi6qJymeodv98wUptjB6IYnAizyo8H9I5uybEomO18/LeD njUzDc/D4xtubmTAj23NIby1KQI913Kmj50eudehF5Z4f27EIVpl/I3aCSqsXFNNu/wR7eY1SDBn9 DdwcF4Mg==; Received: from terefe.re ([5.255.96.200]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oov-00000009wmn-3atQ for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:52 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 67A8B20314; Tue, 29 Oct 2024 17:11:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218305; bh=nuku27oY6L9oTPv+/hyuEb0UTiI01L6BI171ZYcx3Ko=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xssLOMhOzWtgr/Py4QUg2RyEvn4UQxzhV8dKRPVfiCW21RRX59IeTXA+Kol/j/KYQ XHpiIX1RWSY/GRyZMjxnDVib8bkhoMq8AIgEJZRjMmFwuNPmA3oNHWeBA9d1FsX3QV ibWzpTwhc4dCPuaCZCIH7Kt748fGngGvYEC8YInOFXgTxd0snYk/oSDe6MtM4o9Aj9 VMfQt+/ekH5JAmeobKWIX9tFpXeBzUmxzu5hq0ZH1ZDPtCXN2d2i1y+i5mexM28Pzt I192f1cJz2EO1jQjB63VkI7dFu2tTZvPpjQc0x1SkOJBuFwFZp54d7ZrtOFHDpGTFV Dt7tKKU7JfwfA== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 12/14] kernel: modules: package Tegra and Nouveau DRM drivers Date: Tue, 29 Oct 2024 16:47:05 +0100 Message-ID: <20241029161046.110403-13-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_161150_721165_4487A1BC X-CRM114-Status: UNSURE ( 9.02 ) X-CRM114-Notice: Please train this message. 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 Responsible for console output on HDMI port and power management of the SoC. Unfortunately need to be built as modules because of necesarry firmware. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/video.mk | 57 +++++++++++++++++++++++++++ target/linux/loongarch64/config-6.6 | 3 ++ target/linux/tegra/image/arm [...] 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 Responsible for console output on HDMI port and power management of the SoC. Unfortunately need to be built as modules because of necesarry firmware. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/video.mk | 57 +++++++++++++++++++++++++++ target/linux/loongarch64/config-6.6 | 3 ++ target/linux/tegra/image/armv8.mk | 6 +-- target/linux/zynq/config-6.6 | 3 ++ 4 files changed, 66 insertions(+), 3 deletions(-) diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index 52fc55bbadd0..d48c38d54993 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -501,6 +501,63 @@ endef $(eval $(call KernelPackage,drm-radeon)) + +define KernelPackage/drm-nouveau + SUBMENU:=$(VIDEO_MENU) + TITLE:=Nouveau DRM driver + DEPENDS:=@DISPLAY_SUPPORT +kmod-backlight +kmod-drm +kmod-drm-display-helper \ + +kmod-drm-exec +kmod-drm-kms-helper +kmod-drm-ttm +kmod-drm-ttm-helper \ + +kmod-hwmon-core +kmod-i2c-algo-bit +TARGET_x86:kmod-acpi-video \ + +TARGET_tegra_armv8:kmod-drm-tegra +TARGET_tegra_armv8:gm20b-firmware + KCONFIG:= \ + CONFIG_DRM_NOUVEAU \ + CONFIG_DRM_NOUVEAU_BACKLIGHT=y \ + CONFIG_NOUVEAU_DEBUG=5 \ + CONFIG_NOUVEAU_DEBUG_DEFAULT=3 \ + CONFIG_NOUVEAU_DEBUG_MMU=n \ + CONFIG_NOUVEAU_DEBUG_PUSH=n \ + CONFIG_NOUVEAU_PLATFORM_DRIVER=y + FILES:= \ + $(LINUX_DIR)/drivers/gpu/drm/nouveau/nouveau.ko \ + $(LINUX_DIR)/drivers/gpu/drm/scheduler/gpu-sched.ko + AUTOLOAD:=$(call AutoProbe,nouveau) +endef + +define KernelPackage/drm-nouveau/description + GPU driver for majority of NVIDIA Tegra SoCs. +endef + +$(eval $(call KernelPackage,drm-nouveau)) + + +define KernelPackage/drm-tegra + SUBMENU:=$(VIDEO_MENU) + TITLE:=Tegra DRM driver + DEPENDS:=@TARGET_tegra +kmod-backlight +kmod-drm +kmod-drm-display-helper \ + +kmod-drm-kms-helper +TARGET_tegra_armv8:t210-vic-firmware + KCONFIG:= \ + CONFIG_DRM_TEGRA \ + CONFIG_DRM_TEGRA_DEBUG=n \ + CONFIG_DRM_TEGRA_STAGING=n \ + CONFIG_DRM_FBDEV_EMULATION=y \ + CONFIG_DRM_FBDEV_OVERALLOC=100 \ + CONFIG_TEGRA_HOST1X \ + CONFIG_TEGRA_HOST1X_CONTEXT_BUS=y \ + CONFIG_TEGRA_HOST1X_FIREWALL=y + FILES:= \ + $(LINUX_DIR)/drivers/gpu/drm/display/drm_dp_aux_bus.ko \ + $(LINUX_DIR)/drivers/gpu/drm/tegra/tegra-drm.ko \ + $(LINUX_DIR)/drivers/gpu/host1x/host1x.ko + AUTOLOAD:=$(call AutoProbe,host1x tegra-drm) +endef + +define KernelPackage/drm-tegra/description + GPU driver for all of NVIDIA Tegra SoCs. +endef + +$(eval $(call KernelPackage,drm-tegra)) + + # # Video Capture # diff --git a/target/linux/loongarch64/config-6.6 b/target/linux/loongarch64/config-6.6 index 46a90c128495..bd3e199c11c0 100644 --- a/target/linux/loongarch64/config-6.6 +++ b/target/linux/loongarch64/config-6.6 @@ -367,6 +367,9 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_SPARSEKMAP=y # CONFIG_IOMMUFD is not set # CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set CONFIG_IOMMU_SUPPORT=y CONFIG_IO_URING=y CONFIG_IRQCHIP=y diff --git a/target/linux/tegra/image/armv8.mk b/target/linux/tegra/image/armv8.mk index 2aae94012546..ad3535f23bfa 100644 --- a/target/linux/tegra/image/armv8.mk +++ b/target/linux/tegra/image/armv8.mk @@ -3,9 +3,9 @@ define Device/nvidia_jetson-tx1 DEVICE_MODEL := Jetson TX1 Developer Kit DEVICE_DTS := tegra210-p2371-2180 DEVICE_PACKAGES := brcmfmac-nvram-4354-sdio cypress-firmware-4354-sdio \ - kmod-bluetooth kmod-brcmfmac kmod-usb-gadget-serial kmod-usb-hid \ - kmod-usb-net-rtl8152 kmod-usb-udc-tegra kmod-usb-xhci-tegra \ - wpad-basic-mbedtls + kmod-bluetooth kmod-brcmfmac kmod-drm-nouveau kmod-drm-tegra \ + kmod-usb-gadget-serial kmod-usb-hid kmod-usb-net-rtl8152 \ + kmod-usb-udc-tegra kmod-usb-xhci-tegra wpad-basic-mbedtls SUPPORTED_DEVICES := nvidia,p2371-2180 endef TARGET_DEVICES += nvidia_jetson-tx1 diff --git a/target/linux/zynq/config-6.6 b/target/linux/zynq/config-6.6 index 15716a12cdbc..ed06c2bf45c7 100644 --- a/target/linux/zynq/config-6.6 +++ b/target/linux/zynq/config-6.6 @@ -265,6 +265,9 @@ CONFIG_INPUT_SPARSEKMAP=y CONFIG_INPUT_VIVALDIFMAP=y # CONFIG_IOMMUFD is not set # CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set # CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set # CONFIG_IOMMU_IO_PGTABLE_LPAE is not set CONFIG_IOMMU_SUPPORT=y From patchwork Tue Oct 29 15:47:06 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: 2003848 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=ODCQydb2; 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=n5arAelj; 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=X0FzxWe/; 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 4XdHbn2bxNz1xwc for ; Wed, 30 Oct 2024 04:40: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=1BBMmvYf7HQO+lMU9+6H7nhNSVyT4zB9uvNduYO3R+I=; b=ODCQydb2G5/TZG GHrS+hMV5KZNCbCGzG6OwpU7fwvmEyLJt2laTW39cG7Jbm3xGgYLmxZSegjlmvaV+VkAicXLzho4v o9krkW1dpqvVoY+SjTslLqOPFRw5eSLnh/I8Z+9BVwqj3SwU6pBoyrTgmrckHtwlsO3nZ2QjmQV8g 4ktfY3qtRcpYTiDqhMt0z4aEfDFo40Jgew8eY3MeEnAiGWddSIcm568LZbWa4x9RAVdTSK+dzsLlF MyjIuQCFG0qRbGr7h9mlQWaSXdQdxb9E2xAnfGcT7yMSxjOw9xcGWaZYrn0rwNhqrmIqKG4p4sCsl szhn7OxOf7Bo0ghSnNjw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qC3-0000000FKq8-2Ay6; Tue, 29 Oct 2024 17:39:47 +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 1t5op0-0000000F4o1-1Rt8 for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:54 +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=scNiFX9cxL/Czlth6dUQbCW0Zymn5n0uOid/leIhgJ8=; b=n5arAeljnjLCDWomdIK1yOdBVN msUGlh4v/3V0RIJvkNRKtG1fZfUxLlzqjUUtW6EgwZyTtRBOTzKaTO7RaHR5L4r0ix/NkPmD+LVk6 fUhPe425sBgu13xpkWrTfKiZ0hCzpRoL3PTMIf1/YmWI3bMwX7f8kek+hZmj/IRA7aPGft6V1Z74v SNny47bG6SuC19fMOPx5UH6YSV+Lzurl8FWf45N9cg2ZvSVnpkFDZCvf4Cy04ZU5xs+FfmJwpluhI CmI3wrn4Qimzy25OAjiLKoZZm5T+eO2kRlr7Daz99NLXEUl1jszGSBrXvAb12hBMi0oEP2x6SZLBS 19fR30MA==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oov-00000009wmt-3b5M for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:53 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id B682820315; Tue, 29 Oct 2024 17:11:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218305; bh=LgaZZ0SjO/sgUGv2nMuQw5+n0KucsGwBg17wiJJEgzY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=X0FzxWe/8yVkmAP5pEQXE5WZJMYd+WP64hHcy04e7MnEoAPwbf9E2CvwZJCkor6l3 S1fCvVRU13JrV6oU4ye8SZKzgY4h+oemE88qGqW7wJ0jN0DxZYUDhyD7NdJTZODOaf gGbgt29Umbu82O1LrgiSI90jpNQLPEXI8/dJ8A6Qrmqyp5mbwRcuPxYwH3VgEABF4D GtJImfjIrh0p84MoFa1w1aPadHC4bCeQ5Z2HbBEP2acGXcZLUgPXlAQBUN/x+N4dl2 nS1gfP7+6PHBmSoOiHWiRaETUfxj69pWdIboHHHM53dMlCkZv3B6XWcVAqKv8X6oEl RxX6nz0e2WFXw== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 13/14] kernel: modules: package Tegra X1 sound modules Date: Tue, 29 Oct 2024 16:47:06 +0100 Message-ID: <20241029161046.110403-14-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_161150_807004_4DB5A83F X-CRM114-Status: UNSURE ( 7.55 ) X-CRM114-Notice: Please train this message. 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 To make Power Management Circuit (PMC) happy. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/sound.mk | 77 +++++++++++++++++++++++++++ target/linux/tegra/image/armv8.mk | 5 +- 2 files changed, 80 insertions [...] 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 To make Power Management Circuit (PMC) happy. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/sound.mk | 77 +++++++++++++++++++++++++++ target/linux/tegra/image/armv8.mk | 5 +- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/package/kernel/linux/modules/sound.mk b/package/kernel/linux/modules/sound.mk index 623f65ac59ad..e1ef0d3f358e 100644 --- a/package/kernel/linux/modules/sound.mk +++ b/package/kernel/linux/modules/sound.mk @@ -288,6 +288,83 @@ endef $(eval $(call KernelPackage,sound-soc-imx-sgtl5000)) +define KernelPackage/sound-soc-tegra210 + TITLE:=Tegra 210 SoC audio support + KCONFIG:= \ + CONFIG_SND_AUDIO_GRAPH_CARD \ + CONFIG_SND_HDA_TEGRA \ + CONFIG_SND_SOC_TEGRA \ + CONFIG_SND_SOC_TEGRA210_ADMAIF \ + CONFIG_SND_SOC_TEGRA210_ADX \ + CONFIG_SND_SOC_TEGRA210_AHUB \ + CONFIG_SND_SOC_TEGRA210_AMX \ + CONFIG_SND_SOC_TEGRA210_DMIC \ + CONFIG_SND_SOC_TEGRA210_I2S \ + CONFIG_SND_SOC_TEGRA210_MIXER \ + CONFIG_SND_SOC_TEGRA210_MVC \ + CONFIG_SND_SOC_TEGRA210_OPE \ + CONFIG_SND_SOC_TEGRA210_SFC \ + CONFIG_SND_SOC_TEGRA_AUDIO_GRAPH_CARD \ + CONFIG_SND_SOC_TEGRA186_ASRC=n \ + CONFIG_SND_SOC_TEGRA186_DSPK=n \ + CONFIG_SND_SOC_TEGRA20_AC97=n \ + CONFIG_SND_SOC_TEGRA20_DAS=n \ + CONFIG_SND_SOC_TEGRA20_I2S=n \ + CONFIG_SND_SOC_TEGRA20_SPDIF=n \ + CONFIG_SND_SOC_TEGRA30_AHUB=n \ + CONFIG_SND_SOC_TEGRA30_I2S=n \ + CONFIG_SND_SOC_TEGRA_ALC5632=n \ + CONFIG_SND_SOC_TEGRA_MAX98088=n \ + CONFIG_SND_SOC_TEGRA_MAX98090=n \ + CONFIG_SND_SOC_TEGRA_RT5631=n \ + CONFIG_SND_SOC_TEGRA_RT5640=n \ + CONFIG_SND_SOC_TEGRA_RT5677=n \ + CONFIG_SND_SOC_TEGRA_SGTL5000=n \ + CONFIG_SND_SOC_TEGRA_TRIMSLICE=n \ + CONFIG_SND_SOC_TEGRA_WM8753=n \ + CONFIG_SND_SOC_TEGRA_WM8903=n \ + CONFIG_SND_SOC_TEGRA_WM9712=n + FILES:= \ + $(LINUX_DIR)/sound/soc/generic/snd-soc-audio-graph-card.ko \ + $(LINUX_DIR)/sound/soc/generic/snd-soc-simple-card-utils.ko \ + $(LINUX_DIR)/sound/pci/hda/snd-hda-tegra.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-admaif.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-adx.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-ahub.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-amx.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-dmic.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-i2s.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-mixer.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-mvc.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-ope.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra210-sfc.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra-audio-graph-card.ko \ + $(LINUX_DIR)/sound/soc/tegra/snd-soc-tegra-pcm.ko + AUTOLOAD:=$(call AutoProbe, \ + snd-hda-tegra \ + snd-soc-tegra-audio-graph-card \ + snd-soc-tegra210-admaif \ + snd-soc-tegra210-adx \ + snd-soc-tegra210-ahub \ + snd-soc-tegra210-amx \ + snd-soc-tegra210-dmic \ + snd-soc-tegra210-i2s \ + snd-soc-tegra210-mixer \ + snd-soc-tegra210-mvc \ + snd-soc-tegra210-ope \ + snd-soc-tegra210-sfc \ + snd-soc-tegra-pcm) + DEPENDS:=@TARGET_tegra_armv8 +kmod-sound-hda-core +kmod-sound-soc-core + $(call AddDepends/sound) +endef + +define KernelPackage/sound-soc-tegra210/description + Support for Tegra 210 Platform sound +endef + +$(eval $(call KernelPackage,sound-soc-tegra210)) + + define KernelPackage/sound-soc-wm8960 TITLE:=SoC WM8960 codec support KCONFIG:=CONFIG_SND_SOC_WM8960 diff --git a/target/linux/tegra/image/armv8.mk b/target/linux/tegra/image/armv8.mk index ad3535f23bfa..406d6ce101de 100644 --- a/target/linux/tegra/image/armv8.mk +++ b/target/linux/tegra/image/armv8.mk @@ -4,8 +4,9 @@ define Device/nvidia_jetson-tx1 DEVICE_DTS := tegra210-p2371-2180 DEVICE_PACKAGES := brcmfmac-nvram-4354-sdio cypress-firmware-4354-sdio \ kmod-bluetooth kmod-brcmfmac kmod-drm-nouveau kmod-drm-tegra \ - kmod-usb-gadget-serial kmod-usb-hid kmod-usb-net-rtl8152 \ - kmod-usb-udc-tegra kmod-usb-xhci-tegra wpad-basic-mbedtls + kmod-sound-soc-tegra210 kmod-usb-gadget-serial kmod-usb-hid \ + kmod-usb-net-rtl8152 kmod-usb-udc-tegra kmod-usb-xhci-tegra \ + wpad-basic-mbedtls SUPPORTED_DEVICES := nvidia,p2371-2180 endef TARGET_DEVICES += nvidia_jetson-tx1 From patchwork Tue Oct 29 15:47:07 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: 2003847 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=VrzNtdbg; 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=iBG5Rrm4; 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=V0owouhl; 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 4XdHbV3Vfbz1xwc for ; Wed, 30 Oct 2024 04:40:38 +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=cIEzKemVJuXm6KHHx+XLLwmbFL+Vds8dOtY8NjtLfXA=; b=VrzNtdbgZE8uWH Cn32WbefJc2lpcOWbKFmT2jIxDXPQ8ClGKlr4SApG3APhmtUmJKUJBjr0R4btbaNItAVhZddpJjNy +S8fsNHNS6fD96BVegsNbbPRVoHVozfjCrikg6mtTxfJ4QFqIfX2jJGSyocsfcp6aoKWQyQjGPg4O E6O7UfTs1sA08Pbo5zj8o5oGimbvvzmNeJekTWMzsKT2A06jEaylEOq5TWELFG8nCnKVMp5QKOWyF UOPipJUoc0QxCdZ3rQs2VoyEmohZSIdOXHDwwpbb/EV38l1HKtFusd3iZFmMOsUgkVTyTQxTTEOen k8N9Qoo4xjdIJcFAj+qQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1t5qBq-0000000FKgj-3O1W; Tue, 29 Oct 2024 17:39:34 +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 1t5op0-0000000F4o3-1hFr for openwrt-devel@bombadil.infradead.org; Tue, 29 Oct 2024 16:11:54 +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=4LPI6yb3c+okCGrsK57blxekQYg8C6Aal/kt/moe+RY=; b=iBG5Rrm4axHENfOUQWq7dXiuPA 4qME7Jjk6RROkaTQRzbVl7L+SoJSjOrPwXpl7xM/UMdflgOAmeSIu5tiseL7wXfFDfBU8qV1TSl1B rP6VGDRHh8B7Zi90wvaIVfehoHX5LWsQVBIXRRZI/oMKpwz+hrCLyAh//pmJc6mn0YWq9jPs8R1D7 AtiKAO5z4su/7cSzXPqPYsg/uhJ5dC5tUMArk8vS9H4+RazYxLzaFcz5aM38bqGNyOjRybGalizpx TVNNOyTXG9gCRFkNXPDoeO1WFDITz2S7kjjhE4WjZftkJH8vacoDdR5+hoQZ4CObEgwRJlC2dMzbI x8Szslng==; Received: from terefe.re ([2a04:52c0:101:a4a:0:ffff:5ff:60c8]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1t5oov-00000009wmu-3b2n for openwrt-devel@lists.openwrt.org; Tue, 29 Oct 2024 16:11:53 +0000 Received: from localhost.localdomain (unknown [212.106.161.104]) by terefe.re (Postfix) with ESMTPSA id 11D8020316; Tue, 29 Oct 2024 17:11:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=terefe.re; s=default; t=1730218306; bh=BF7UTQGSljqQNzzTaPqzbEXyesUl5JolXgf+UD5/3CY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=V0owouhl5HCCjR/VcOQU4MP199kZiCaaZRkaOD7K7zdEMvhNBIGM5eRIPH3j/S5jB 9r5RDNhafl1kk9aqf1z37DZU31LjeDbmCeSwzbZO8OTcNfQLaTQB8OKLSjJbmxPKzn I7geVOEZXONg+BHOGnKUB6BJXkJBoMORcidmKA8lti30fOgERiTWiwTH/3ickrexvT wkjaRmxlrOke4qSyVZwdSzumcT86PQTbwQ1+bqym67tiLIWwQkEJ9D/PmXOYRF1QdR LjtDirZ+oSLUNwIn79BuDM5MKkMlsToZOml1Y9tMFexECjakdHdyLgf2ATneILvwD2 cI3pHnCmJ/LjA== From: Tomasz Maciej Nowak To: openwrt-devel@lists.openwrt.org Cc: Raylynn Knight , Koen Vandeputte , Tomasz Maciej Nowak Subject: [PATCH 14/14] kernel: modules: package Tegra Video Input module Date: Tue, 29 Oct 2024 16:47:07 +0100 Message-ID: <20241029161046.110403-15-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_161150_701623_BB310B1A X-CRM114-Status: UNSURE ( 7.97 ) X-CRM114-Notice: Please train this message. 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 Support for video input from connected camera sensors. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/usb.mk | 1 + package/kernel/linux/modules/video.mk | 29 +++++++++++++++++++++++++-- target/linux/tegra/image/armv [...] 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 Support for video input from connected camera sensors. Signed-off-by: Tomasz Maciej Nowak --- package/kernel/linux/modules/usb.mk | 1 + package/kernel/linux/modules/video.mk | 29 +++++++++++++++++++++++++-- target/linux/tegra/image/armv8.mk | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/package/kernel/linux/modules/usb.mk b/package/kernel/linux/modules/usb.mk index a970a08e6b2c..3bad7cf9907e 100644 --- a/package/kernel/linux/modules/usb.mk +++ b/package/kernel/linux/modules/usb.mk @@ -576,6 +576,7 @@ define KernelPackage/usb-audio CONFIG_SND_USB_AUDIO $(call AddDepends/usb) $(call AddDepends/sound) + DEPENDS+=$(if $(CONFIG_MEDIA_CONTROLLER),+kmod-video-core) FILES:= \ $(LINUX_DIR)/sound/usb/snd-usbmidi-lib.ko \ $(LINUX_DIR)/sound/usb/snd-usb-audio.ko diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk index d48c38d54993..ab971a896d7d 100644 --- a/package/kernel/linux/modules/video.mk +++ b/package/kernel/linux/modules/video.mk @@ -573,7 +573,8 @@ define KernelPackage/video-core CONFIG_V4L_PLATFORM_DRIVERS=y \ CONFIG_MEDIA_PLATFORM_DRIVERS=y FILES:= \ - $(LINUX_DIR)/drivers/media/$(V4L2_DIR)/videodev.ko + $(LINUX_DIR)/drivers/media/$(V4L2_DIR)/videodev.ko \ + $(if $(CONFIG_MEDIA_CONTROLLER),$(LINUX_DIR)/drivers/media/mc/mc.ko) AUTOLOAD:=$(call AutoLoad,60,videodev) endef @@ -612,7 +613,7 @@ define KernelPackage/video-videobuf2 $(LINUX_DIR)/drivers/media/common/videobuf2/videobuf2-common.ko \ $(LINUX_DIR)/drivers/media/common/videobuf2/videobuf2-v4l2.ko \ $(LINUX_DIR)/drivers/media/common/videobuf2/videobuf2-memops.ko \ - $(LINUX_DIR)/drivers/media/common/videobuf2/videobuf2-vmalloc.ko + $(if $(CONFIG_VIDEOBUF2_VMALLOC),$(LINUX_DIR)/drivers/media/common/videobuf2/videobuf2-vmalloc.ko) AUTOLOAD:=$(call AutoLoad,65,videobuf2-core videobuf-v4l2 videobuf2-memops videobuf2-vmalloc) $(call AddDepends/video) endef @@ -1333,3 +1334,27 @@ define KernelPackage/video-tw686x/description endef $(eval $(call KernelPackage,video-tw686x)) + +define KernelPackage/video-tegra-vi + TITLE:=Tegra SoC VideoInput + DEPENDS:=@TARGET_tegra +kmod-drm-tegra +kmod-video-dma-contig +kmod-video-videobuf2 + KCONFIG:= \ + CONFIG_STAGING_MEDIA=y \ + CONFIG_STAGING_MEDIA_DEPRECATED=n \ + CONFIG_VIDEO_TEGRA \ + CONFIG_VIDEO_TEGRA_TPG=n \ + CONFIG_VIDEO_MAX96712=n + FILES:= \ + $(LINUX_DIR)/drivers/staging/media/tegra-video/tegra-video.ko \ + $(LINUX_DIR)/drivers/media/$(V4L2_DIR)/v4l2-async.ko \ + $(LINUX_DIR)/drivers/media/$(V4L2_DIR)/v4l2-dv-timings.ko \ + $(LINUX_DIR)/drivers/media/$(V4L2_DIR)/v4l2-fwnode.ko + AUTOLOAD:=$(call AutoProbe,tegra-video) + $(call AddDepends/video) +endef + +define KernelPackage/video-tegra-vi/description + Tegra SoC VideoInput driver +endef + +$(eval $(call KernelPackage,video-tegra-vi)) diff --git a/target/linux/tegra/image/armv8.mk b/target/linux/tegra/image/armv8.mk index 406d6ce101de..80cb14325e59 100644 --- a/target/linux/tegra/image/armv8.mk +++ b/target/linux/tegra/image/armv8.mk @@ -6,7 +6,7 @@ define Device/nvidia_jetson-tx1 kmod-bluetooth kmod-brcmfmac kmod-drm-nouveau kmod-drm-tegra \ kmod-sound-soc-tegra210 kmod-usb-gadget-serial kmod-usb-hid \ kmod-usb-net-rtl8152 kmod-usb-udc-tegra kmod-usb-xhci-tegra \ - wpad-basic-mbedtls + kmod-video-tegra-vi wpad-basic-mbedtls SUPPORTED_DEVICES := nvidia,p2371-2180 endef TARGET_DEVICES += nvidia_jetson-tx1