From 54e5e396c59948224dfb8ccf7aa8afe11462f647 Mon Sep 17 00:00:00 2001 From: Ivan Pavlov Date: Wed, 2 Aug 2023 08:23:02 +0300 Subject: [PATCH 01/31] ramips: improve Xiaomi mi-mini indications Sets status indications led color on Xiaomi mi-mini router as other Xiaomi routers Signed-off-by: Ivan Pavlov --- target/linux/ramips/dts/mt7620a_xiaomi_miwifi-mini.dts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/target/linux/ramips/dts/mt7620a_xiaomi_miwifi-mini.dts b/target/linux/ramips/dts/mt7620a_xiaomi_miwifi-mini.dts index 1dd3f2eb471..95868c9be99 100644 --- a/target/linux/ramips/dts/mt7620a_xiaomi_miwifi-mini.dts +++ b/target/linux/ramips/dts/mt7620a_xiaomi_miwifi-mini.dts @@ -8,8 +8,8 @@ model = "Xiaomi MiWiFi Mini"; aliases { - led-boot = &led_blue; - led-failsafe = &led_blue; + led-boot = &led_yellow; + led-failsafe = &led_red; led-running = &led_blue; led-upgrade = &led_blue; label-mac-device = ðernet; @@ -25,15 +25,14 @@ led_blue: blue { label = "blue:status"; gpios = <&gpio1 0 GPIO_ACTIVE_LOW>; - default-state = "on"; }; - yellow { + led_yellow: yellow { label = "yellow:status"; gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; }; - red { + led_red: red { label = "red:status"; gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; }; From a87bc138cfccd8de06afaad81f7ba838a87fe4f8 Mon Sep 17 00:00:00 2001 From: Ivan Pavlov Date: Wed, 2 Aug 2023 08:53:23 +0300 Subject: [PATCH 02/31] uboot-envtools: add u-boot env config for Xiaomi mi-mini Add u-boot env config for Xiaomi mi-mini for using fw_printenv and fw_setenv on this board Signed-off-by: Ivan Pavlov --- package/boot/uboot-envtools/files/ramips | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/package/boot/uboot-envtools/files/ramips b/package/boot/uboot-envtools/files/ramips index c94f8d69c74..835b4ec3e12 100644 --- a/package/boot/uboot-envtools/files/ramips +++ b/package/boot/uboot-envtools/files/ramips @@ -105,6 +105,10 @@ snr,cpe-w4n-mt) [ -n "$idx" ] && \ ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x1000" "0x1000" ;; +xiaomi,miwifi-mini) + ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x1000" "0x10000" + ubootenv_add_uci_sys_config "/dev/mtd9" "0x0" "0x4000" "0x10000" + ;; xiaomi,mi-router-3g-v2|\ xiaomi,mi-router-4a-gigabit|\ xiaomi,miwifi-3c) From ff71035751bf440401b4bbc32e0b61ba11178234 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 13 Aug 2023 22:50:19 +0200 Subject: [PATCH 03/31] x86: Activate CONFIG_PCIEASPM This activates PCI Express ASPM control in Linux. Without this option it is completely controlled by the BIOS, now Linux will take over and apply some workarounds if needed. Fixes: #13248 Signed-off-by: Hauke Mehrtens --- target/linux/x86/64/config-5.15 | 5 +++++ target/linux/x86/generic/config-5.15 | 5 +++++ target/linux/x86/legacy/config-5.15 | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/target/linux/x86/64/config-5.15 b/target/linux/x86/64/config-5.15 index d80706338bc..720809e9857 100644 --- a/target/linux/x86/64/config-5.15 +++ b/target/linux/x86/64/config-5.15 @@ -356,6 +356,11 @@ CONFIG_PATA_VIA=y CONFIG_PCC=y # CONFIG_PCENGINES_APU2 is not set 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_HYPERV=y diff --git a/target/linux/x86/generic/config-5.15 b/target/linux/x86/generic/config-5.15 index 29c1e43b22f..0aa6f3da5a5 100644 --- a/target/linux/x86/generic/config-5.15 +++ b/target/linux/x86/generic/config-5.15 @@ -308,6 +308,11 @@ CONFIG_PATA_TIMINGS=y CONFIG_PATA_VIA=y # CONFIG_PCENGINES_APU2 is not set 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_MMCONFIG=y diff --git a/target/linux/x86/legacy/config-5.15 b/target/linux/x86/legacy/config-5.15 index d6802d6c996..8e17703cbc1 100644 --- a/target/linux/x86/legacy/config-5.15 +++ b/target/linux/x86/legacy/config-5.15 @@ -184,6 +184,11 @@ CONFIG_PATA_SIS=y CONFIG_PATA_TIMINGS=y CONFIG_PATA_VIA=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_PCI_MMCONFIG=y # CONFIG_PCWATCHDOG is not set From 54d470ed0ecaff9e8084c013ddbc95e8afc3ab42 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 13 Aug 2023 23:02:03 +0200 Subject: [PATCH 04/31] x86: Add virtualization time sync support This compiles the CONFIG_PTP_1588_CLOCK support into the kernel binary and activates the drivers for KVM and VMware which allow syncing the host time with the VM when OpenWrt is running in a VM. With this change the CONFIG_HYPERV_UTILS driver is now build into the kernel, because it depends on the PTP framework being compiled in. CONFIG_HYPERV_UTILS was build as a module, but not packages before. Fixes: #13277 Signed-off-by: Hauke Mehrtens --- target/linux/x86/64/config-5.15 | 5 +++++ target/linux/x86/generic/config-5.15 | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/target/linux/x86/64/config-5.15 b/target/linux/x86/64/config-5.15 index 720809e9857..28a4758e572 100644 --- a/target/linux/x86/64/config-5.15 +++ b/target/linux/x86/64/config-5.15 @@ -328,6 +328,7 @@ CONFIG_ND_CLAIM=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NET_FAILOVER=y CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_PTP_CLASSIFY=y # CONFIG_NITRO_ENCLAVES is not set CONFIG_NR_CPUS=512 CONFIG_NR_CPUS_DEFAULT=64 @@ -395,7 +396,11 @@ CONFIG_PM_SLEEP_SMP=y CONFIG_PNP=y CONFIG_PNPACPI=y CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_PPS=y CONFIG_PROC_EVENTS=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_KVM=y +CONFIG_PTP_1588_CLOCK_VMW=y CONFIG_PVH=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y diff --git a/target/linux/x86/generic/config-5.15 b/target/linux/x86/generic/config-5.15 index 0aa6f3da5a5..06f00080216 100644 --- a/target/linux/x86/generic/config-5.15 +++ b/target/linux/x86/generic/config-5.15 @@ -285,6 +285,7 @@ CONFIG_ND_CLAIM=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NET_FAILOVER=y CONFIG_NET_FLOW_LIMIT=y +CONFIG_NET_PTP_CLASSIFY=y CONFIG_NO_HZ=y CONFIG_NR_CPUS=4 CONFIG_NR_CPUS_DEFAULT=8 @@ -346,8 +347,12 @@ CONFIG_PNP=y CONFIG_PNPACPI=y # CONFIG_PNPBIOS is not set CONFIG_PNP_DEBUG_MESSAGES=y +CONFIG_PPS=y CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PROC_EVENTS=y +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_KVM=y +CONFIG_PTP_1588_CLOCK_VMW=y CONFIG_PVH=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y From dfdaa3630bf718c7c7f42c85adb4ddfdb7d4f59c Mon Sep 17 00:00:00 2001 From: Andre Heider Date: Sun, 30 Jul 2023 13:24:25 +0200 Subject: [PATCH 05/31] tools: mold: update to 2.1.0 v2.0.0: - transition from AGPL to MIT - Previously, mold could not produce an object file with more than 65520 sections using the --relocatable option. Now the bug has been fixed. - mold now interprets -undefined as a synonym for --undefined instead of -u ndefined. This seems inconsistent, as -ufoo is generally treated as -u foo (which is an alias for --undefined foo), but this is the behavior of the GNU linkers and LLVM lld, so we prioritize compatibility over consistency. - -nopie is now handled as a synonym for --no-pie. - [RISC-V] R_RISCV_SET_ULEB128 and R_RISCV_SUB_ULEB128 relocation types are now supported (4bffe26, 1ac5fe7) - [PPC64] R_PPC64_REL32 relocation type is now supported. (ebd780e) v2.1.0: - Loongson's LoongArch CPU has been supported. (03b1a1c) - -z nosectionheader has been added to eliminate section headers from the output file. (084ca55) - Previously, linking with the -z pack-relative-relocs option produces an executable that glibc 2.38 refuses to run with DT_RELR without GLIBC_ABI_DT_RELR dependency error. Now, mold produces binaries compatible with glibc 2.38. (f467ad1) - [ARM64] R_AARCH64_ADR_PREL_PG_HI21_NC relocation type has been supported. (17a5c3e) - [ARM64] R_AARCH64_MOVW_UABS_G3 relocation type has now been handled as a PLT-generating relocation to fix an issue when main is not defined in the main executable but rather in a .so file. (e764557) - [RISC-V] We now merge input .riscv.attributes contents. Previously, we just concatenated them. (aa64491) Signed-off-by: Andre Heider --- tools/mold/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mold/Makefile b/tools/mold/Makefile index e8fcecbfed6..b266cea77dc 100644 --- a/tools/mold/Makefile +++ b/tools/mold/Makefile @@ -3,12 +3,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mold -PKG_VERSION:=1.11.0 +PKG_VERSION:=2.1.0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL_FILE:=v$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/rui314/mold/archive/refs/tags -PKG_HASH:=99318eced81b09a77e4c657011076cc8ec3d4b6867bd324b8677974545bc4d6f +PKG_HASH:=a32bec1282671b18ea4691855aed925ea2f348dfef89cb7689cd81273ea0c5df include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/cmake.mk From cbf8c76d0a30838961553b75ba038ecc7a29a621 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Aug 2023 19:17:26 -0700 Subject: [PATCH 06/31] tools/meson: update to 1.2.1 Remove PKG_RELEASE as it's not really used with tools. Changelog: https://mesonbuild.com/Release-notes-for-1-2-0.html Signed-off-by: Rosen Penev --- tools/meson/Makefile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/meson/Makefile b/tools/meson/Makefile index f957bfb49f0..23bb393a593 100644 --- a/tools/meson/Makefile +++ b/tools/meson/Makefile @@ -1,12 +1,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=meson -PKG_VERSION:=1.1.1 -PKG_RELEASE:=2 +PKG_VERSION:=1.2.1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://github.com/mesonbuild/meson/releases/download/$(PKG_VERSION) -PKG_HASH:=d04b541f97ca439fb82fab7d0d480988be4bd4e62563a5ca35fadb5400727b1c +PKG_HASH:=b1db3a153087549497ee52b1c938d2134e0338214fe14f7efd16fecd57b639f5 PKG_MAINTAINER:=Andre Heider PKG_LICENSE:=Apache-2.0 From 728581dc4bc7f32a29b1fbba6aa54ed6266feb33 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 15 Mar 2023 20:02:45 -0700 Subject: [PATCH 07/31] prereq-build: increase GCC requirement to 8 The current minimum OS requirement for OpenWrt is Ubuntu 18.04, which includes 7 and 8. 8 is necessary for ccache. gcc and g+++ are now symlinked to staging_dir, similar to Python. Signed-off-by: Rosen Penev --- include/prereq-build.mk | 22 ++++++++++++---------- rules.mk | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/prereq-build.mk b/include/prereq-build.mk index 5b63490ca3c..e5f20fff22e 100644 --- a/include/prereq-build.mk +++ b/include/prereq-build.mk @@ -32,28 +32,30 @@ $(eval $(call TestHostCommand,proper-umask, \ ifndef IB $(eval $(call SetupHostCommand,gcc, \ - Please install the GNU C Compiler (gcc) 6 or later, \ - $(CC) -dumpversion | grep -E '^([6-9]\.?|1[0-9]\.?)', \ - gcc -dumpversion | grep -E '^([6-9]\.?|1[0-9]\.?)', \ + Please install the GNU C Compiler (gcc) 8 or later, \ + $(CC) -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ + gcc -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ + gcc-8 -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ gcc --version | grep -E 'Apple.(LLVM|clang)' )) $(eval $(call TestHostCommand,working-gcc, \ - Please reinstall the GNU C Compiler (6 or later) - \ + Please reinstall the GNU C Compiler (8 or later) - \ it appears to be broken, \ echo 'int main(int argc, char **argv) { return 0; }' | \ - gcc -x c -o $(TMP_DIR)/a.out -)) + $(STAGING_DIR_HOST)/bin/gcc -x c -o $(TMP_DIR)/a.out -)) $(eval $(call SetupHostCommand,g++, \ - Please install the GNU C++ Compiler (g++) 6 or later, \ - $(CXX) -dumpversion | grep -E '^([6-9]\.?|1[0-9]\.?)', \ - g++ -dumpversion | grep -E '^([6-9]\.?|1[0-9]\.?)', \ + Please install the GNU C++ Compiler (g++) 8 or later, \ + $(CXX) -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ + g++ -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ + g++-8 -dumpversion | grep -E '^([8-9]\.?|1[0-9]\.?)', \ g++ --version | grep -E 'Apple.(LLVM|clang)' )) $(eval $(call TestHostCommand,working-g++, \ - Please reinstall the GNU C++ Compiler (6 or later) - \ + Please reinstall the GNU C++ Compiler (8 or later) - \ it appears to be broken, \ echo 'int main(int argc, char **argv) { return 0; }' | \ - g++ -x c++ -o $(TMP_DIR)/a.out - -lstdc++ && \ + $(STAGING_DIR_HOST)/bin/g++ -x c++ -o $(TMP_DIR)/a.out - -lstdc++ && \ $(TMP_DIR)/a.out)) $(eval $(call RequireCHeader,ncurses.h, \ diff --git a/rules.mk b/rules.mk index ca27583d27e..f298c8d7942 100644 --- a/rules.mk +++ b/rules.mk @@ -240,8 +240,8 @@ PKG_CONFIG:=$(STAGING_DIR_HOST)/bin/pkg-config export PKG_CONFIG -HOSTCC:=gcc -HOSTCXX:=g++ +HOSTCC:=$(STAGING_DIR_HOST)/bin/gcc +HOSTCXX:=$(STAGING_DIR_HOST)/bin/g++ HOST_CPPFLAGS:=-I$(STAGING_DIR_HOST)/include $(if $(IS_PACKAGE_BUILD),-I$(STAGING_DIR_HOSTPKG)/include -I$(STAGING_DIR)/host/include) HOST_CXXFLAGS:= HOST_CFLAGS:=-O2 $(HOST_CPPFLAGS) From 58c19759e41225386365f9b240bc8e2af9bba367 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Fri, 11 Aug 2023 19:13:41 -0700 Subject: [PATCH 08/31] tools/pkgconf: update to 2.0.1 Changes from 2.0.0 to 2.0.1: ---------------------------- * The behavior of --modversion was largely reverted back to the traditional pkg-config behavior, but still operates on a solved dependency graph. The order of --modversion output is based on the dependency resolution queue which is passed to the solver, which itself generally maps to the order of the constrants provided on the command line. * A new flag, --verbose, has been added. When used with `--modversion`, it is possible to disambiguate which version belongs to which module: % pkgconf --modversion --verbose foo bar foo: 1.2.3 bar: 1.3 Changes from 1.9.5 to 2.0.0: ---------------------------- * When flattening the dependency graph, retain the latest seen edges rather than the earliest. * Fix a long-standing bug where the dependency resolution queue was evaluated in reverse. This bug masked the aforementioned dependency flattening bug in many cases. * Fix handling of --with-path, which was appending paths to the search list rather than prepending them as intended. * Error when --modversion is requested with more than one package, as the output is ambiguous. Signed-off-by: Rosen Penev --- tools/pkgconf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/pkgconf/Makefile b/tools/pkgconf/Makefile index d0a8a271d93..da1f005be63 100644 --- a/tools/pkgconf/Makefile +++ b/tools/pkgconf/Makefile @@ -7,11 +7,11 @@ include $(TOPDIR)/rules.mk PKG_NAME:=pkgconf -PKG_VERSION:=1.9.5 +PKG_VERSION:=2.0.1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://distfiles.dereferenced.org/pkgconf -PKG_HASH:=1ac1656debb27497563036f7bffc281490f83f9b8457c0d60bcfb638fb6b6171 +PKG_HASH:=3238af7473740844e5159dd8fb6540603e3fbcebf60beb3c8a426cdca2e29c51 PKG_CPE_ID:=cpe:/a:pkgconf:pkgconf From 497012ab4eb1f37cbbbff9a766d2fecdb43dd0db Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Mon, 14 Aug 2023 23:33:49 +0200 Subject: [PATCH 09/31] scripts: qemustart: Fix x86/legacy bootup The ide-drive option was renamed to ide-hd in qemu 6.0. With this change qemu is starting again on Debian 12. Signed-off-by: Hauke Mehrtens --- scripts/qemustart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/qemustart b/scripts/qemustart index f6a46551294..6c4c9be4cb0 100755 --- a/scripts/qemustart +++ b/scripts/qemustart @@ -309,12 +309,12 @@ start_qemu_x86() { # To use AHCI interface # # -device ich9-ahci,id=ahci \ - # -device ide-drive,drive=drv0,bus=ahci.0 \ + # -device ide-hd,drive=drv0,bus=ahci.0 \ # -drive "file=$rootfs,format=raw,id=drv0,if=none" \ # # [1] https://dev.openwrt.org/ticket/17947 "$qemu_exe" -machine "$mach" -nographic \ - -device ide-drive,drive=drv0 \ + -device ide-hd,drive=drv0 \ -drive "file=$rootfs,format=raw,id=drv0,if=none" \ "${o_qemu_extra[@]}" ;; From 5c4239ac3f189352698de706599bc32a6e457532 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 7 Jun 2023 01:04:03 +0000 Subject: [PATCH 10/31] armsr: armv8: sync Arm64 erratum options with kernel defconfig To reduce differences with the Linux arm64 defconfig, sync the enabled erratum items with defconfig. There are still some options not selected due to CONFIG_KVM or other options not enabled in OpenWrt by default. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 5bdda2d5175..57b4dcf13e1 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -25,14 +25,30 @@ CONFIG_ARM64_4K_PAGES=y CONFIG_ARM64_CNP=y CONFIG_ARM64_CRYPTO=y CONFIG_ARM64_EPAN=y +CONFIG_ARM64_ERRATUM_1024718=y CONFIG_ARM64_ERRATUM_1165522=y CONFIG_ARM64_ERRATUM_1286807=y +CONFIG_ARM64_ERRATUM_1319367=y +CONFIG_ARM64_ERRATUM_1418040=y +CONFIG_ARM64_ERRATUM_1463225=y +CONFIG_ARM64_ERRATUM_1508412=y +CONFIG_ARM64_ERRATUM_1530923=y +CONFIG_ARM64_ERRATUM_1542419=y +CONFIG_ARM64_ERRATUM_1742098=y +CONFIG_ARM64_ERRATUM_2051678=y +CONFIG_ARM64_ERRATUM_2054223=y +CONFIG_ARM64_ERRATUM_2067961=y +CONFIG_ARM64_ERRATUM_2077057=y +CONFIG_ARM64_ERRATUM_2441009=y +CONFIG_ARM64_ERRATUM_2457168=y +CONFIG_ARM64_ERRATUM_2658417=y CONFIG_ARM64_ERRATUM_819472=y CONFIG_ARM64_ERRATUM_824069=y CONFIG_ARM64_ERRATUM_826319=y CONFIG_ARM64_ERRATUM_827319=y CONFIG_ARM64_ERRATUM_832075=y CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y CONFIG_ARM64_PAGE_SHIFT=12 @@ -49,6 +65,7 @@ CONFIG_ARM64_VA_BITS_48=y CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y CONFIG_ARM64_WORKAROUND_REPEAT_TLBI=y CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y +CONFIG_ARM64_WORKAROUND_TSB_FLUSH_FAILURE=y # CONFIG_ARMADA_37XX_RWTM_MBOX is not set CONFIG_ARMADA_37XX_WATCHDOG=y CONFIG_ARMADA_THERMAL=y @@ -68,6 +85,11 @@ CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y # CONFIG_AXI_DMAC is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BLK_PM=y +CONFIG_CAVIUM_ERRATUM_22375=y +CONFIG_CAVIUM_ERRATUM_23144=y +CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y +CONFIG_CAVIUM_ERRATUM_30115=y CONFIG_CAVIUM_TX2_ERRATUM_219=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y CONFIG_CLK_INTEL_SOCFPGA=y @@ -188,6 +210,7 @@ CONFIG_GPIO_ZYNQMP_MODEPIN=y CONFIG_HDMI=y CONFIG_HI3660_MBOX=y CONFIG_HI6220_MBOX=y +CONFIG_HISILICON_ERRATUM_161600802=y CONFIG_HISILICON_LPC=y CONFIG_HISI_PMU=y CONFIG_HISI_THERMAL=y @@ -346,6 +369,10 @@ CONFIG_POWER_RESET=y CONFIG_POWER_RESET_HISI=y CONFIG_POWER_RESET_VEXPRESS=y CONFIG_POWER_SUPPLY=y +CONFIG_QCOM_FALKOR_ERRATUM_1003=y +CONFIG_QCOM_FALKOR_ERRATUM_1009=y +CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +CONFIG_QCOM_QDF2400_ERRATUM_0065=y CONFIG_QORIQ_THERMAL=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y @@ -379,6 +406,7 @@ CONFIG_SERIAL_SAMSUNG_CONSOLE=y # CONFIG_SND_SUN8I_CODEC is not set # CONFIG_SND_SUN8I_CODEC_ANALOG is not set # CONFIG_SNI_NETSEC is not set +CONFIG_SOCIONEXT_SYNQUACER_PREITS=y CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP=y From e505873e65f72b5e89c136dbb61d992a2219b6eb Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Tue, 20 Jun 2023 01:23:17 +0000 Subject: [PATCH 11/31] armsr: armv8: enable KVM host x86/64 enables support for KVM so I can't see a reason why not on armsr/armv8 as well. Arm CPU errata workaround items related to virtualization are also enabled by this change. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 57b4dcf13e1..151303614c0 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -1,5 +1,6 @@ CONFIG_64BIT=y CONFIG_ACPI_PCC=y +CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y CONFIG_ARCH_HISI=y CONFIG_ARCH_INTEL_SOCFPGA=y CONFIG_ARCH_LAYERSCAPE=y @@ -39,6 +40,7 @@ CONFIG_ARM64_ERRATUM_2051678=y CONFIG_ARM64_ERRATUM_2054223=y CONFIG_ARM64_ERRATUM_2067961=y CONFIG_ARM64_ERRATUM_2077057=y +CONFIG_ARM64_ERRATUM_2441007=y CONFIG_ARM64_ERRATUM_2441009=y CONFIG_ARM64_ERRATUM_2457168=y CONFIG_ARM64_ERRATUM_2658417=y @@ -47,6 +49,7 @@ CONFIG_ARM64_ERRATUM_824069=y CONFIG_ARM64_ERRATUM_826319=y CONFIG_ARM64_ERRATUM_827319=y CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_ERRATUM_834220=y CONFIG_ARM64_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_HW_AFDBM=y @@ -245,6 +248,7 @@ CONFIG_IOMMU_SUPPORT=y # CONFIG_K3_DMA is not set CONFIG_KCMP=y # CONFIG_KEYBOARD_SUN4I_LRADC is not set +CONFIG_KVM=y CONFIG_LCD_CLASS_DEVICE=m # CONFIG_LCD_PLATFORM is not set # CONFIG_MAILBOX_TEST is not set @@ -290,6 +294,7 @@ CONFIG_NO_HZ=y CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_IDLE=y CONFIG_NR_CPUS=64 +# CONFIG_NVHE_EL2_DEBUG is not set CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y # CONFIG_NVMEM_LAYERSCAPE_SFP is not set CONFIG_NVMEM_ROCKCHIP_EFUSE=y @@ -458,6 +463,7 @@ CONFIG_VEXPRESS_CONFIG=y CONFIG_VIDEOMODE_HELPERS=y CONFIG_VIRTIO_DMA_SHARED_BUFFER=y # CONFIG_VIRTIO_IOMMU is not set +CONFIG_VIRTUALIZATION=y CONFIG_VMAP_STACK=y CONFIG_WDAT_WDT=y # CONFIG_XILINX_AMS is not set From 76d4a7c84a97a5555b1962ddb9fc694b7e1f6ba8 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Tue, 15 Aug 2023 03:47:23 +0000 Subject: [PATCH 12/31] kernel: default ARM_PMU on for armsr/armv8 CONFIG_ARM_PMU (Arm Performance Monitor Unit) is a requirement to use KVM (virtualization) from Linux 5.11+, as the virtualised guest has virtualized PMU access. Signed-off-by: Mathew McBride --- config/Config-kernel.in | 1 + 1 file changed, 1 insertion(+) diff --git a/config/Config-kernel.in b/config/Config-kernel.in index 0c9e00d11fe..a1209d82f3a 100644 --- a/config/Config-kernel.in +++ b/config/Config-kernel.in @@ -47,6 +47,7 @@ config KERNEL_MIPS_FP_SUPPORT config KERNEL_ARM_PMU bool + default y if TARGET_armsr_armv8 depends on (arm || aarch64) config KERNEL_X86_VSYSCALL_EMULATION From 22e0c7be47ca55b7366dc569926724271d51cb77 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Tue, 20 Jun 2023 01:31:12 +0000 Subject: [PATCH 13/31] armsr: armv8: sync CPU features, EFI, CMA and scheduler options with Linux defconfig To bring the armsr/armv8 kernel configuration closer to the Linux arm64 defconfig, synchronize options related to CPU features (especially more recent Armv8.X variants), scheduler, EFI vars, CMA and scheduler options. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 45 ++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 151303614c0..8e049c23e1a 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -1,4 +1,5 @@ CONFIG_64BIT=y +CONFIG_ACPI_HMAT=y CONFIG_ACPI_PCC=y CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y CONFIG_ARCH_HISI=y @@ -23,8 +24,11 @@ CONFIG_ARCH_WANTS_NO_INSTR=y CONFIG_ARCH_ZYNQMP=y CONFIG_ARM64=y CONFIG_ARM64_4K_PAGES=y +CONFIG_ARM64_AMU_EXTN=y +CONFIG_ARM64_BTI=y CONFIG_ARM64_CNP=y CONFIG_ARM64_CRYPTO=y +CONFIG_ARM64_E0PD=y CONFIG_ARM64_EPAN=y CONFIG_ARM64_ERRATUM_1024718=y CONFIG_ARM64_ERRATUM_1165522=y @@ -54,15 +58,18 @@ CONFIG_ARM64_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y +CONFIG_ARM64_MTE=y CONFIG_ARM64_PAGE_SHIFT=12 CONFIG_ARM64_PAN=y CONFIG_ARM64_PA_BITS=48 CONFIG_ARM64_PA_BITS_48=y CONFIG_ARM64_PTR_AUTH=y CONFIG_ARM64_PTR_AUTH_KERNEL=y +CONFIG_ARM64_RAS_EXTN=y CONFIG_ARM64_SME=y CONFIG_ARM64_SVE=y CONFIG_ARM64_TAGGED_ADDR_ABI=y +CONFIG_ARM64_TLB_RANGE=y CONFIG_ARM64_VA_BITS=48 CONFIG_ARM64_VA_BITS_48=y CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y @@ -75,7 +82,12 @@ CONFIG_ARMADA_THERMAL=y CONFIG_ARM_ARCH_TIMER_OOL_WORKAROUND=y # CONFIG_ARM_DMC620_PMU is not set # CONFIG_ARM_MHU_V2 is not set +CONFIG_ARM_PSCI_CPUIDLE=y +CONFIG_ARM_PSCI_CPUIDLE_DOMAIN=y CONFIG_ARM_SBSA_WATCHDOG=y +CONFIG_ARM_SCPI_POWER_DOMAIN=y +CONFIG_ARM_SCPI_PROTOCOL=y +CONFIG_ARM_SMCCC_SOC_ID=y CONFIG_ARM_SMC_WATCHDOG=y CONFIG_ARM_SMMU=y # CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT is not set @@ -112,6 +124,17 @@ CONFIG_CLK_SUNXI_CLOCKS=y # CONFIG_CLK_SUNXI_PRCM_SUN8I is not set # CONFIG_CLK_SUNXI_PRCM_SUN9I is not set CONFIG_CLK_VEXPRESS_OSC=y +CONFIG_CMA=y +CONFIG_CMA_ALIGNMENT=8 +CONFIG_CMA_AREAS=19 +# CONFIG_CMA_DEBUG is not set +# CONFIG_CMA_DEBUGFS is not set +CONFIG_CMA_SIZE_MBYTES=32 +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SYSFS is not set # CONFIG_COMMON_CLK_FSL_FLEXSPI is not set # CONFIG_COMMON_CLK_FSL_SAI is not set CONFIG_COMMON_CLK_HI3516CV300=y @@ -163,6 +186,8 @@ CONFIG_CRYPTO_SHA512_ARM64=y CONFIG_CRYPTO_SIMD=y # CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set # CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set +# CONFIG_DEV_DAX_HMEM is not set +CONFIG_DMA_CMA=y CONFIG_DMA_DIRECT_REMAP=y CONFIG_DMA_SHARED_BUFFER=y CONFIG_DMA_SUN6I=y @@ -183,6 +208,11 @@ CONFIG_DRM_VRAM_HELPER=y # CONFIG_DWMAC_SUN8I is not set # CONFIG_DWMAC_SUNXI is not set CONFIG_DW_WATCHDOG=y +CONFIG_EFI_CAPSULE_LOADER=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +CONFIG_EFI_SOFT_RESERVE=y +CONFIG_EFI_VARS_PSTORE=y +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set CONFIG_FB=y CONFIG_FB_ARMCLCD=y CONFIG_FB_CFB_COPYAREA=y @@ -248,6 +278,7 @@ CONFIG_IOMMU_SUPPORT=y # CONFIG_K3_DMA is not set CONFIG_KCMP=y # CONFIG_KEYBOARD_SUN4I_LRADC is not set +CONFIG_KSM=y CONFIG_KVM=y CONFIG_LCD_CLASS_DEVICE=m # CONFIG_LCD_PLATFORM is not set @@ -290,10 +321,14 @@ CONFIG_MODULES_USE_ELF_RELA=y # CONFIG_MV_XOR is not set CONFIG_NEED_SG_DMA_LENGTH=y # CONFIG_NET_VENDOR_ALLWINNER is not set +CONFIG_NODES_SHIFT=4 CONFIG_NO_HZ=y CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_IDLE=y -CONFIG_NR_CPUS=64 +CONFIG_NR_CPUS=256 +CONFIG_NUMA=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y # CONFIG_NVHE_EL2_DEBUG is not set CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y # CONFIG_NVMEM_LAYERSCAPE_SFP is not set @@ -395,6 +430,10 @@ CONFIG_RODATA_FULL_DEFAULT_ENABLED=y # CONFIG_RTC_DRV_FSL_FTM_ALARM is not set CONFIG_RTC_DRV_MV=y CONFIG_RTC_I2C_AND_SPI=y +# CONFIG_SCHED_CORE is not set +CONFIG_SCHED_MC=y +CONFIG_SCHED_SMT=y +# CONFIG_SENSORS_ARM_SCPI is not set # CONFIG_SERIAL_8250_EXAR is not set CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_PCI=y @@ -450,6 +489,10 @@ CONFIG_SYNC_FILE=y CONFIG_SYSCTL_EXCEPTION_TRACE=y # CONFIG_TCG_TIS_SYNQUACER is not set CONFIG_THREAD_INFO_IN_TASK=y +# CONFIG_THUNDERX2_PMU is not set +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y +# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set # CONFIG_TURRIS_MOX_RWTM is not set # CONFIG_UACCE is not set CONFIG_UNMAP_KERNEL_AT_EL0=y From c4c60e4b192180288aab577e166091c2d4c470af Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 14 Aug 2023 06:31:14 +0000 Subject: [PATCH 14/31] armsr: enable ACPI_BUTTON A review of the generated OpenWrt kernel .config vs the Linux arm64 defconfig showed that this option was not being enabled, as it is disabled in OpenWrt's generic config. ACPI_BUTTON is needed to report and respond to power button events, so it should be enabled. Signed-off-by: Mathew McBride --- target/linux/armsr/config-6.1 | 1 + 1 file changed, 1 insertion(+) diff --git a/target/linux/armsr/config-6.1 b/target/linux/armsr/config-6.1 index 46483152d03..d1dac69da44 100644 --- a/target/linux/armsr/config-6.1 +++ b/target/linux/armsr/config-6.1 @@ -13,6 +13,7 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y CONFIG_ACPI_APEI_PCIEAER=y CONFIG_ACPI_BATTERY=y # CONFIG_ACPI_BGRT is not set +CONFIG_ACPI_BUTTON=y CONFIG_ACPI_CCA_REQUIRED=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_CPPC_CPUFREQ=y From 45b445498b7dad54739ed15b2c630260f89d2fe4 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 7 Jun 2023 04:39:25 +0000 Subject: [PATCH 15/31] armsr: armv8: fix NXP/Freescale i.MX family configuration Due to an error on my part, Anton Antonov's i.MX changes[1] did not fully make it into my armvirt kernel 6.1 EFI pull request. I have updated them using the options he supplied[1] as well as comparing to the Linux arm64 defconfig. The notable exception is: CONFIG_USB_DWC3_OF_SIMPLE currently disabled due to an issue with i.MX8P and i.MX8Q. Fixes: 3efb3b8 ("armvirt: 64: Add NXP i.MX 8M Mini/Nano/Quad/Plus EVK support") Signed-off-by: Mathew McBride [1] - https://github.com/anta5010/openwrt/commit/ccf826c3444fd5fa8fac08aac05f66568ae0c242 --- target/linux/armsr/armv8/config-6.1 | 129 ++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 8e049c23e1a..67d4d2db59d 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -1,6 +1,7 @@ CONFIG_64BIT=y CONFIG_ACPI_HMAT=y CONFIG_ACPI_PCC=y +CONFIG_AHCI_IMX=y CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y CONFIG_ARCH_HISI=y CONFIG_ARCH_INTEL_SOCFPGA=y @@ -11,6 +12,7 @@ CONFIG_ARCH_MMAP_RND_BITS_MAX=24 CONFIG_ARCH_MMAP_RND_BITS_MIN=18 CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 CONFIG_ARCH_MVEBU=y +CONFIG_ARCH_MXC=y CONFIG_ARCH_NXP=y CONFIG_ARCH_PROC_KCORE_TEXT=y CONFIG_ARCH_ROCKCHIP=y @@ -107,6 +109,13 @@ CONFIG_CAVIUM_ERRATUM_27456=y CONFIG_CAVIUM_ERRATUM_30115=y CONFIG_CAVIUM_TX2_ERRATUM_219=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CLK_IMX8MM=y +CONFIG_CLK_IMX8MN=y +CONFIG_CLK_IMX8MP=y +CONFIG_CLK_IMX8MQ=y +CONFIG_CLK_IMX8QXP=y +CONFIG_CLK_IMX8ULP=y +CONFIG_CLK_IMX93=y CONFIG_CLK_INTEL_SOCFPGA=y CONFIG_CLK_INTEL_SOCFPGA64=y CONFIG_CLK_LS1028A_PLLDIG=y @@ -194,7 +203,14 @@ CONFIG_DMA_SUN6I=y CONFIG_DRM=y CONFIG_DRM_BOCHS=y CONFIG_DRM_BRIDGE=y +# CONFIG_DRM_FSL_LDB is not set CONFIG_DRM_GEM_SHMEM_HELPER=y +# CONFIG_DRM_IMX8QM_LDB is not set +# CONFIG_DRM_IMX8QXP_LDB is not set +# CONFIG_DRM_IMX8QXP_PIXEL_COMBINER is not set +# CONFIG_DRM_IMX8QXP_PIXEL_LINK is not set +# CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI is not set +# CONFIG_DRM_IMX_DCSS is not set CONFIG_DRM_KMS_HELPER=y CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_BRIDGE=y @@ -220,6 +236,7 @@ CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CMDLINE=y CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_MX3=y # CONFIG_FB_XILINX is not set CONFIG_FRAME_POINTER=y # CONFIG_FSL_DPAA is not set @@ -235,6 +252,7 @@ CONFIG_GENERIC_FIND_FIRST_BIT=y CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC_PLATFORM=y CONFIG_GPIO_MPC8XXX=y +CONFIG_GPIO_MXC=y CONFIG_GPIO_ROCKCHIP=y CONFIG_GPIO_THUNDERX=y CONFIG_GPIO_XLP=y @@ -257,16 +275,37 @@ CONFIG_I2C_ALTERA=y CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_HIX5HD2 is not set CONFIG_I2C_IMX=y +CONFIG_I2C_IMX_LPI2C=y # CONFIG_I2C_SLAVE_TESTUNIT is not set CONFIG_I2C_SYNQUACER=y CONFIG_I2C_THUNDERX=y # CONFIG_I2C_XLP9XX is not set CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 # CONFIG_IMX2_WDT is not set +# CONFIG_IMX8MM_THERMAL is not set +# CONFIG_IMX8QXP_ADC is not set +# CONFIG_IMX_DMA is not set +# CONFIG_IMX_DSP is not set +CONFIG_IMX_INTMUX=y +CONFIG_IMX_IRQSTEER=y +CONFIG_IMX_MBOX=y +# CONFIG_IMX_MU_MSI is not set +CONFIG_IMX_SCU=y +CONFIG_IMX_SCU_PD=y +# CONFIG_IMX_SC_THERMAL is not set +# CONFIG_IMX_SC_WDT is not set +# CONFIG_IMX_SDMA is not set +# CONFIG_IMX_WEIM is not set # CONFIG_INPUT_HISI_POWERKEY is not set # CONFIG_INPUT_IBM_PANEL is not set # CONFIG_INTEL_STRATIX10_RSU is not set # CONFIG_INTEL_STRATIX10_SERVICE is not set +CONFIG_INTERCONNECT=y +CONFIG_INTERCONNECT_IMX=y +CONFIG_INTERCONNECT_IMX8MM=y +CONFIG_INTERCONNECT_IMX8MN=y +CONFIG_INTERCONNECT_IMX8MP=y +CONFIG_INTERCONNECT_IMX8MQ=y # CONFIG_IOMMU_DEBUGFS is not set # CONFIG_IOMMU_DEFAULT_DMA_LAZY is not set CONFIG_IOMMU_DEFAULT_DMA_STRICT=y @@ -277,6 +316,7 @@ CONFIG_IOMMU_DEFAULT_PASSTHROUGH=y CONFIG_IOMMU_SUPPORT=y # CONFIG_K3_DMA is not set CONFIG_KCMP=y +# CONFIG_KEYBOARD_IMX_SC_KEY is not set # CONFIG_KEYBOARD_SUN4I_LRADC is not set CONFIG_KSM=y CONFIG_KVM=y @@ -299,6 +339,7 @@ CONFIG_MFD_SYSCON=y CONFIG_MFD_VEXPRESS_SYSREG=y CONFIG_MMC=y CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BLOCK=y CONFIG_MMC_CAVIUM_THUNDERX=y CONFIG_MMC_DW=y # CONFIG_MMC_DW_BLUEFIELD is not set @@ -308,9 +349,12 @@ CONFIG_MMC_DW=y # CONFIG_MMC_DW_PCI is not set CONFIG_MMC_DW_PLTFM=y CONFIG_MMC_DW_ROCKCHIP=y +# CONFIG_MMC_MXC is not set CONFIG_MMC_RICOH_MMC=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_ACPI=y +CONFIG_MMC_SDHCI_CADENCE=y +CONFIG_MMC_SDHCI_ESDHC_IMX=y CONFIG_MMC_SDHCI_OF_ESDHC=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_SDHCI_PLTFM=y @@ -319,9 +363,14 @@ CONFIG_MODULES_USE_ELF_RELA=y # CONFIG_MVNETA is not set # CONFIG_MVPP2 is not set # CONFIG_MV_XOR is not set +# CONFIG_MX3_IPU is not set +CONFIG_MXC_CLK=y +CONFIG_MXC_CLK_SCU=y +# CONFIG_MXS_DMA is not set CONFIG_NEED_SG_DMA_LENGTH=y # CONFIG_NET_VENDOR_ALLWINNER is not set CONFIG_NODES_SHIFT=4 +CONFIG_NOP_USB_XCEIV=y CONFIG_NO_HZ=y CONFIG_NO_HZ_COMMON=y CONFIG_NO_HZ_IDLE=y @@ -331,9 +380,13 @@ CONFIG_NUMA_BALANCING=y CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y # CONFIG_NVHE_EL2_DEBUG is not set CONFIG_NVIDIA_CARMEL_CNP_ERRATUM=y +# CONFIG_NVMEM_IMX_IIM is not set +# CONFIG_NVMEM_IMX_OCOTP_ELE is not set +CONFIG_NVMEM_IMX_OCOTP_SCU=y # CONFIG_NVMEM_LAYERSCAPE_SFP is not set CONFIG_NVMEM_ROCKCHIP_EFUSE=y # CONFIG_NVMEM_ROCKCHIP_OTP is not set +# CONFIG_NVMEM_SNVS_LPGPR is not set # CONFIG_NVMEM_SUNXI_SID is not set # CONFIG_NVMEM_ZYNQMP is not set CONFIG_PCC=y @@ -346,7 +399,9 @@ CONFIG_PCIE_ROCKCHIP_HOST=y CONFIG_PCIE_XILINX_CPM=y CONFIG_PCIE_XILINX_NWL=y CONFIG_PCI_AARDVARK=y +CONFIG_PCI_IMX6=y CONFIG_PCI_LAYERSCAPE=y +CONFIG_PHY_FSL_IMX8M_PCIE=y # CONFIG_PHY_FSL_LYNX_28G is not set CONFIG_PHY_HI3660_USB=y CONFIG_PHY_HI3670_PCIE=y @@ -354,6 +409,7 @@ CONFIG_PHY_HI3670_USB=y CONFIG_PHY_HI6220_USB=y CONFIG_PHY_HISI_INNO_USB2=y # CONFIG_PHY_HISTB_COMBPHY is not set +# CONFIG_PHY_MIXEL_LVDS_PHY is not set CONFIG_PHY_MVEBU_A3700_COMPHY=y CONFIG_PHY_MVEBU_A3700_UTMI=y CONFIG_PHY_MVEBU_A38X_COMPHY=y @@ -375,6 +431,19 @@ CONFIG_PHY_SUN50I_USB3=y # CONFIG_PHY_SUN6I_MIPI_DPHY is not set CONFIG_PHY_SUN9I_USB=y # CONFIG_PHY_XILINX_ZYNQMP is not set +CONFIG_PINCTRL_IMX=y +CONFIG_PINCTRL_IMX8DXL=y +CONFIG_PINCTRL_IMX8MM=y +CONFIG_PINCTRL_IMX8MN=y +CONFIG_PINCTRL_IMX8MP=y +CONFIG_PINCTRL_IMX8MQ=y +CONFIG_PINCTRL_IMX8QM=y +CONFIG_PINCTRL_IMX8QXP=y +CONFIG_PINCTRL_IMX8ULP=y +CONFIG_PINCTRL_IMX93=y +# CONFIG_PINCTRL_IMXRT1050 is not set +# CONFIG_PINCTRL_IMXRT1170 is not set +CONFIG_PINCTRL_IMX_SCU=y CONFIG_PINCTRL_ROCKCHIP=y # CONFIG_PINCTRL_SUN20I_D1 is not set CONFIG_PINCTRL_SUN4I_A10=y @@ -418,8 +487,14 @@ CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y CONFIG_REGMAP=y CONFIG_REGMAP_MMIO=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_ANATOP=y CONFIG_REGULATOR_AXP20X=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_HI655X=y +CONFIG_REGULATOR_PFUZE100=y +# CONFIG_REGULATOR_VEXPRESS is not set +CONFIG_RESET_IMX7=y CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_IOMMU=y # CONFIG_ROCKCHIP_MBOX is not set @@ -428,7 +503,11 @@ CONFIG_ROCKCHIP_PM_DOMAINS=y # CONFIG_ROCKCHIP_THERMAL is not set CONFIG_RODATA_FULL_DEFAULT_ENABLED=y # CONFIG_RTC_DRV_FSL_FTM_ALARM is not set +# CONFIG_RTC_DRV_IMXDI is not set +# CONFIG_RTC_DRV_IMX_SC is not set CONFIG_RTC_DRV_MV=y +# CONFIG_RTC_DRV_MXC is not set +# CONFIG_RTC_DRV_MXC_V2 is not set CONFIG_RTC_I2C_AND_SPI=y # CONFIG_SCHED_CORE is not set CONFIG_SCHED_MC=y @@ -437,8 +516,13 @@ CONFIG_SCHED_SMT=y # CONFIG_SERIAL_8250_EXAR is not set CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_FSL_LINFLEXUART=y +CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE=y CONFIG_SERIAL_FSL_LPUART=y CONFIG_SERIAL_FSL_LPUART_CONSOLE=y +CONFIG_SERIAL_IMX=y +CONFIG_SERIAL_IMX_CONSOLE=y +CONFIG_SERIAL_IMX_EARLYCON=y CONFIG_SERIAL_MVEBU_CONSOLE=y CONFIG_SERIAL_MVEBU_UART=y CONFIG_SERIAL_SAMSUNG=y @@ -451,15 +535,19 @@ CONFIG_SERIAL_SAMSUNG_CONSOLE=y # CONFIG_SND_SUN8I_CODEC_ANALOG is not set # CONFIG_SNI_NETSEC is not set CONFIG_SOCIONEXT_SYNQUACER_PREITS=y +CONFIG_SOC_IMX8M=y +CONFIG_SOC_IMX9=y CONFIG_SPARSEMEM=y CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPI_ARMADA_3700=y +CONFIG_SPI_FSL_LPSPI=y # CONFIG_SPI_FSL_QUADSPI is not set # CONFIG_SPI_HISI_KUNPENG is not set # CONFIG_SPI_HISI_SFC is not set # CONFIG_SPI_HISI_SFC_V3XX is not set +CONFIG_SPI_IMX=y # CONFIG_SPI_ROCKCHIP_SFC is not set # CONFIG_SPI_SUN4I is not set # CONFIG_SPI_SUN6I is not set @@ -494,10 +582,51 @@ CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y # CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set # CONFIG_TURRIS_MOX_RWTM is not set +CONFIG_TYPEC=y +# CONFIG_TYPEC_ANX7411 is not set +# CONFIG_TYPEC_DP_ALTMODE is not set +# CONFIG_TYPEC_FUSB302 is not set +# CONFIG_TYPEC_HD3SS3220 is not set +# CONFIG_TYPEC_MUX_FSA4480 is not set +# CONFIG_TYPEC_MUX_PI3USB30532 is not set +# CONFIG_TYPEC_RT1711H is not set +# CONFIG_TYPEC_RT1719 is not set +# CONFIG_TYPEC_STUSB160X is not set +CONFIG_TYPEC_TCPCI=y +# CONFIG_TYPEC_TCPCI_MAXIM is not set +CONFIG_TYPEC_TCPM=y +# CONFIG_TYPEC_TPS6598X is not set +# CONFIG_TYPEC_WUSB3801 is not set # CONFIG_UACCE is not set CONFIG_UNMAP_KERNEL_AT_EL0=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_GENERIC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_IMX=y +CONFIG_USB_CHIPIDEA_PCI=y +CONFIG_USB_CHIPIDEA_UDC=y CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_DUAL_ROLE=y +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_HAPS=y +# CONFIG_USB_DWC3_HOST is not set +CONFIG_USB_DWC3_IMX8MP=y +# CONFIG_USB_DWC3_OF_SIMPLE is not set +CONFIG_USB_DWC3_PCI=y +# CONFIG_USB_DWC3_ULPI is not set CONFIG_USB_DWC3_XILINX=y +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_ORION=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=y +CONFIG_USB_MXS_PHY=y +CONFIG_USB_OHCI_EXYNOS=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OTG=y +CONFIG_USB_OTG_FSM=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HISTB=y CONFIG_USB_XHCI_MVEBU=y From 1ff4f4df230166994c660ad77479f248223ce45b Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Tue, 20 Jun 2023 01:53:23 +0000 Subject: [PATCH 16/31] armsr: armv8: enable CONFIG_ARCH_RENESAS Renesas markets several embedded Arm64 SoCs in the RZ series (RZ/G, RZ/V), so should be enabled in a general purpose target. Automotive (R-Car) SoC's are not enabled by this change. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 65 +++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 67d4d2db59d..7cbd67480f8 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -15,6 +15,27 @@ CONFIG_ARCH_MVEBU=y CONFIG_ARCH_MXC=y CONFIG_ARCH_NXP=y CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ARCH_R8A774A1=y +CONFIG_ARCH_R8A774B1=y +CONFIG_ARCH_R8A774C0=y +CONFIG_ARCH_R8A774E1=y +# CONFIG_ARCH_R8A77950 is not set +# CONFIG_ARCH_R8A77951 is not set +# CONFIG_ARCH_R8A77960 is not set +# CONFIG_ARCH_R8A77961 is not set +# CONFIG_ARCH_R8A77965 is not set +# CONFIG_ARCH_R8A77970 is not set +# CONFIG_ARCH_R8A77980 is not set +# CONFIG_ARCH_R8A77990 is not set +# CONFIG_ARCH_R8A77995 is not set +# CONFIG_ARCH_R8A779A0 is not set +# CONFIG_ARCH_R8A779F0 is not set +# CONFIG_ARCH_R8A779G0 is not set +CONFIG_ARCH_R9A07G043=y +CONFIG_ARCH_R9A07G044=y +CONFIG_ARCH_R9A07G054=y +CONFIG_ARCH_R9A09G011=y +CONFIG_ARCH_RENESAS=y CONFIG_ARCH_ROCKCHIP=y CONFIG_ARCH_STACKWALK=y CONFIG_ARCH_SUNXI=y @@ -121,6 +142,8 @@ CONFIG_CLK_INTEL_SOCFPGA64=y CONFIG_CLK_LS1028A_PLLDIG=y CONFIG_CLK_PX30=y CONFIG_CLK_QORIQ=y +CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y +CONFIG_CLK_RENESAS=y CONFIG_CLK_RK3308=y CONFIG_CLK_RK3328=y CONFIG_CLK_RK3368=y @@ -216,6 +239,7 @@ CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_BRIDGE=y CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y CONFIG_DRM_QXL=y +# CONFIG_DRM_RCAR_DU is not set # CONFIG_DRM_ROCKCHIP is not set CONFIG_DRM_TTM=y CONFIG_DRM_TTM_HELPER=y @@ -237,6 +261,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CMDLINE=y CONFIG_FB_MODE_HELPERS=y CONFIG_FB_MX3=y +# CONFIG_FB_SH_MOBILE_LCDC is not set # CONFIG_FB_XILINX is not set CONFIG_FRAME_POINTER=y # CONFIG_FSL_DPAA is not set @@ -276,6 +301,8 @@ CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_HIX5HD2 is not set CONFIG_I2C_IMX=y CONFIG_I2C_IMX_LPI2C=y +CONFIG_I2C_RIIC=y +# CONFIG_I2C_RZV2M is not set # CONFIG_I2C_SLAVE_TESTUNIT is not set CONFIG_I2C_SYNQUACER=y CONFIG_I2C_THUNDERX=y @@ -314,6 +341,7 @@ CONFIG_IOMMU_DEFAULT_PASSTHROUGH=y # CONFIG_IOMMU_IO_PGTABLE_DART is not set # CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set CONFIG_IOMMU_SUPPORT=y +# CONFIG_IPMMU_VMSA is not set # CONFIG_K3_DMA is not set CONFIG_KCMP=y # CONFIG_KEYBOARD_IMX_SC_KEY is not set @@ -358,6 +386,10 @@ CONFIG_MMC_SDHCI_ESDHC_IMX=y CONFIG_MMC_SDHCI_OF_ESDHC=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHI=y +CONFIG_MMC_SDHI_INTERNAL_DMAC=y +# CONFIG_MMC_SDHI_SYS_DMAC is not set +# CONFIG_MMC_SH_MMCIF is not set CONFIG_MMC_SUNXI=y CONFIG_MODULES_USE_ELF_RELA=y # CONFIG_MVNETA is not set @@ -393,6 +425,8 @@ CONFIG_PCC=y CONFIG_PCIE_HISI_STB=y CONFIG_PCIE_LAYERSCAPE=y CONFIG_PCIE_MOBIVEIL_PLAT=y +# CONFIG_PCIE_RCAR_EP is not set +CONFIG_PCIE_RCAR_HOST=y CONFIG_PCIE_ROCKCHIP=y # CONFIG_PCIE_ROCKCHIP_DW_HOST is not set CONFIG_PCIE_ROCKCHIP_HOST=y @@ -401,6 +435,7 @@ CONFIG_PCIE_XILINX_NWL=y CONFIG_PCI_AARDVARK=y CONFIG_PCI_IMX6=y CONFIG_PCI_LAYERSCAPE=y +# CONFIG_PCI_RCAR_GEN2 is not set CONFIG_PHY_FSL_IMX8M_PCIE=y # CONFIG_PHY_FSL_LYNX_28G is not set CONFIG_PHY_HI3660_USB=y @@ -414,6 +449,10 @@ CONFIG_PHY_MVEBU_A3700_COMPHY=y CONFIG_PHY_MVEBU_A3700_UTMI=y CONFIG_PHY_MVEBU_A38X_COMPHY=y CONFIG_PHY_MVEBU_CP110_COMPHY=y +# CONFIG_PHY_RCAR_GEN2 is not set +CONFIG_PHY_RCAR_GEN3_PCIE=y +CONFIG_PHY_RCAR_GEN3_USB2=y +CONFIG_PHY_RCAR_GEN3_USB3=y # CONFIG_PHY_ROCKCHIP_DP is not set # CONFIG_PHY_ROCKCHIP_DPHY_RX0 is not set CONFIG_PHY_ROCKCHIP_EMMC=y @@ -485,6 +524,10 @@ CONFIG_QCOM_QDF2400_ERRATUM_0065=y CONFIG_QORIQ_THERMAL=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y +# CONFIG_RAVB is not set +CONFIG_RCAR_DMAC=y +# CONFIG_RCAR_GEN3_THERMAL is not set +# CONFIG_RCAR_THERMAL is not set CONFIG_REGMAP=y CONFIG_REGMAP_MMIO=y CONFIG_REGULATOR=y @@ -494,7 +537,14 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_HI655X=y CONFIG_REGULATOR_PFUZE100=y # CONFIG_REGULATOR_VEXPRESS is not set +CONFIG_RENESAS_OSTM=y +# CONFIG_RENESAS_RZAWDT is not set +# CONFIG_RENESAS_RZG2LWDT is not set +# CONFIG_RENESAS_RZN1WDT is not set +CONFIG_RENESAS_USB_DMAC=y +# CONFIG_RENESAS_WDT is not set CONFIG_RESET_IMX7=y +CONFIG_RESET_RZG2L_USBPHY_CTRL=y CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_IOMMU=y # CONFIG_ROCKCHIP_MBOX is not set @@ -508,7 +558,11 @@ CONFIG_RODATA_FULL_DEFAULT_ENABLED=y CONFIG_RTC_DRV_MV=y # CONFIG_RTC_DRV_MXC is not set # CONFIG_RTC_DRV_MXC_V2 is not set +# CONFIG_RTC_DRV_SH is not set CONFIG_RTC_I2C_AND_SPI=y +# CONFIG_RZG2L_ADC is not set +# CONFIG_RZG2L_THERMAL is not set +CONFIG_RZ_DMAC=y # CONFIG_SCHED_CORE is not set CONFIG_SCHED_MC=y CONFIG_SCHED_SMT=y @@ -528,6 +582,9 @@ CONFIG_SERIAL_MVEBU_UART=y CONFIG_SERIAL_SAMSUNG=y CONFIG_SERIAL_SAMSUNG_CONSOLE=y # CONFIG_SMC91X is not set +# CONFIG_SND_SOC_RCAR is not set +# CONFIG_SND_SOC_RZ is not set +# CONFIG_SND_SOC_SH4_FSI is not set # CONFIG_SND_SUN4I_I2S is not set # CONFIG_SND_SUN50I_CODEC_ANALOG is not set # CONFIG_SND_SUN50I_DMIC is not set @@ -549,6 +606,9 @@ CONFIG_SPI_FSL_LPSPI=y # CONFIG_SPI_HISI_SFC_V3XX is not set CONFIG_SPI_IMX=y # CONFIG_SPI_ROCKCHIP_SFC is not set +# CONFIG_SPI_RSPI is not set +# CONFIG_SPI_SH_HSPI is not set +# CONFIG_SPI_SH_MSIOF is not set # CONFIG_SPI_SUN4I is not set # CONFIG_SPI_SUN6I is not set # CONFIG_SPI_SYNQUACER is not set @@ -619,6 +679,7 @@ CONFIG_USB_EHCI_FSL=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_HCD_ORION=y CONFIG_USB_EHCI_HCD_PLATFORM=y +# CONFIG_USB_EMXX is not set CONFIG_USB_GADGET=y CONFIG_USB_MXS_PHY=y CONFIG_USB_OHCI_EXYNOS=y @@ -627,6 +688,10 @@ CONFIG_USB_OHCI_HCD_PCI=y CONFIG_USB_OHCI_HCD_PLATFORM=y CONFIG_USB_OTG=y CONFIG_USB_OTG_FSM=y +CONFIG_USB_RENESAS_USB3=y +CONFIG_USB_RENESAS_USBHS=y +CONFIG_USB_RENESAS_USBHS_HCD=y +CONFIG_USB_RENESAS_USBHS_UDC=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_HISTB=y CONFIG_USB_XHCI_MVEBU=y From df23eed17925b8cadccec53a784a12468a8a2e85 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Tue, 20 Jun 2023 03:30:51 +0000 Subject: [PATCH 17/31] armsr: armv8: enable Broadcom arch'es This is part of an effort to reduce differences between the OpenWrt armsr/armv8 config and Linux arm64 defconfig. This enables CONFIG_ARCH_BCM and downstream CONFIG_ARCH_BCM2835 (= BCM2711 like Raspberry Pi 4) and CONFIG_ARCH_BCM_IPROC (Broadcom iProc packet processors). The broadband specific SoC's (ARCH_BCMBCA) are left out as it is assumed these will not be doing EFI boot. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 60 +++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index 7cbd67480f8..e0931f2f06a 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -3,6 +3,11 @@ CONFIG_ACPI_HMAT=y CONFIG_ACPI_PCC=y CONFIG_AHCI_IMX=y CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y +CONFIG_ARCH_BCM=y +CONFIG_ARCH_BCM2835=y +# CONFIG_ARCH_BCMBCA is not set +CONFIG_ARCH_BCM_IPROC=y +CONFIG_ARCH_BRCMSTB=y CONFIG_ARCH_HISI=y CONFIG_ARCH_INTEL_SOCFPGA=y CONFIG_ARCH_LAYERSCAPE=y @@ -122,7 +127,24 @@ CONFIG_ATOMIC64_SELFTEST=y CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y # CONFIG_AXI_DMAC is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BCM2711_THERMAL is not set +CONFIG_BCM2835_MBOX=y +CONFIG_BCM2835_POWER=y +# CONFIG_BCM2835_THERMAL is not set +# CONFIG_BCM2835_VCHIQ is not set +CONFIG_BCM2835_WDT=y +# CONFIG_BCMGENET is not set +# CONFIG_BCM_CYGNUS_PHY is not set +# CONFIG_BCM_FLEXRM_MBOX is not set +# CONFIG_BCM_NS_THERMAL is not set +# CONFIG_BCM_PDC_MBOX is not set +# CONFIG_BCM_SR_THERMAL is not set +CONFIG_BCM_VIDEOCORE=y +# CONFIG_BGMAC_PLATFORM is not set CONFIG_BLK_PM=y +# CONFIG_BRCMSTB_PM is not set +# CONFIG_BRCMSTB_THERMAL is not set +CONFIG_BRCM_USB_PINMAP=y CONFIG_CAVIUM_ERRATUM_22375=y CONFIG_CAVIUM_ERRATUM_23144=y CONFIG_CAVIUM_ERRATUM_23154=y @@ -130,6 +152,10 @@ CONFIG_CAVIUM_ERRATUM_27456=y CONFIG_CAVIUM_ERRATUM_30115=y CONFIG_CAVIUM_TX2_ERRATUM_219=y CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_CLK_BCM2711_DVP=y +CONFIG_CLK_BCM2835=y +CONFIG_CLK_BCM_NS2=y +CONFIG_CLK_BCM_SR=y CONFIG_CLK_IMX8MM=y CONFIG_CLK_IMX8MN=y CONFIG_CLK_IMX8MP=y @@ -142,6 +168,7 @@ CONFIG_CLK_INTEL_SOCFPGA64=y CONFIG_CLK_LS1028A_PLLDIG=y CONFIG_CLK_PX30=y CONFIG_CLK_QORIQ=y +CONFIG_CLK_RASPBERRYPI=y CONFIG_CLK_RCAR_USB2_CLOCK_SEL=y CONFIG_CLK_RENESAS=y CONFIG_CLK_RK3308=y @@ -198,6 +225,7 @@ CONFIG_CRYPTO_CHACHA20=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_CRYPTD=y # CONFIG_CRYPTO_DEV_ALLWINNER is not set +# CONFIG_CRYPTO_DEV_BCM_SPU is not set # CONFIG_CRYPTO_DEV_FSL_DPAA2_CAAM is not set # CONFIG_CRYPTO_DEV_HISI_HPRE is not set # CONFIG_CRYPTO_DEV_HISI_SEC2 is not set @@ -219,6 +247,7 @@ CONFIG_CRYPTO_SIMD=y # CONFIG_CRYPTO_SM4_ARM64_CE_BLK is not set # CONFIG_CRYPTO_SM4_ARM64_NEON_BLK is not set # CONFIG_DEV_DAX_HMEM is not set +CONFIG_DMA_BCM2835=y CONFIG_DMA_CMA=y CONFIG_DMA_DIRECT_REMAP=y CONFIG_DMA_SHARED_BUFFER=y @@ -243,6 +272,7 @@ CONFIG_DRM_QXL=y # CONFIG_DRM_ROCKCHIP is not set CONFIG_DRM_TTM=y CONFIG_DRM_TTM_HELPER=y +# CONFIG_DRM_V3D is not set CONFIG_DRM_VIRTIO_GPU=y CONFIG_DRM_VRAM_HELPER=y # CONFIG_DWMAC_SUN8I is not set @@ -274,10 +304,13 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_FIND_FIRST_BIT=y # CONFIG_GIANFAR is not set +CONFIG_GPIO_BCM_XGS_IPROC=y +CONFIG_GPIO_BRCMSTB=y CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC_PLATFORM=y CONFIG_GPIO_MPC8XXX=y CONFIG_GPIO_MXC=y +CONFIG_GPIO_RASPBERRYPI_EXP=y CONFIG_GPIO_ROCKCHIP=y CONFIG_GPIO_THUNDERX=y CONFIG_GPIO_XLP=y @@ -297,6 +330,7 @@ CONFIG_HW_RANDOM_VIRTIO=y CONFIG_I2C=y CONFIG_I2C_ALGOBIT=y CONFIG_I2C_ALTERA=y +# CONFIG_I2C_BCM2835 is not set CONFIG_I2C_BOARDINFO=y # CONFIG_I2C_HIX5HD2 is not set CONFIG_I2C_IMX=y @@ -354,6 +388,8 @@ CONFIG_LCD_CLASS_DEVICE=m CONFIG_MARVELL_10G_PHY=y # CONFIG_MARVELL_CN10K_DDR_PMU is not set # CONFIG_MARVELL_CN10K_TAD_PMU is not set +CONFIG_MDIO_BCM_IPROC=y +CONFIG_MDIO_BUS_MUX_BCM_IPROC=y CONFIG_MDIO_SUN4I=y # CONFIG_MFD_ALTERA_A10SR is not set CONFIG_MFD_ALTERA_SYSMGR=y @@ -367,6 +403,7 @@ CONFIG_MFD_SYSCON=y CONFIG_MFD_VEXPRESS_SYSREG=y CONFIG_MMC=y CONFIG_MMC_ARMMMCI=y +CONFIG_MMC_BCM2835=y CONFIG_MMC_BLOCK=y CONFIG_MMC_CAVIUM_THUNDERX=y CONFIG_MMC_DW=y @@ -383,6 +420,7 @@ CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_ACPI=y CONFIG_MMC_SDHCI_CADENCE=y CONFIG_MMC_SDHCI_ESDHC_IMX=y +CONFIG_MMC_SDHCI_IPROC=y CONFIG_MMC_SDHCI_OF_ESDHC=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_SDHCI_PLTFM=y @@ -422,7 +460,10 @@ CONFIG_NVMEM_ROCKCHIP_EFUSE=y # CONFIG_NVMEM_SUNXI_SID is not set # CONFIG_NVMEM_ZYNQMP is not set CONFIG_PCC=y +CONFIG_PCIE_BRCMSTB=y CONFIG_PCIE_HISI_STB=y +CONFIG_PCIE_IPROC_MSI=y +CONFIG_PCIE_IPROC_PLATFORM=y CONFIG_PCIE_LAYERSCAPE=y CONFIG_PCIE_MOBIVEIL_PLAT=y # CONFIG_PCIE_RCAR_EP is not set @@ -436,6 +477,10 @@ CONFIG_PCI_AARDVARK=y CONFIG_PCI_IMX6=y CONFIG_PCI_LAYERSCAPE=y # CONFIG_PCI_RCAR_GEN2 is not set +CONFIG_PHY_BCM_SR_PCIE=y +CONFIG_PHY_BCM_SR_USB=y +CONFIG_PHY_BRCM_SATA=y +CONFIG_PHY_BRCM_USB=y CONFIG_PHY_FSL_IMX8M_PCIE=y # CONFIG_PHY_FSL_LYNX_28G is not set CONFIG_PHY_HI3660_USB=y @@ -449,6 +494,8 @@ CONFIG_PHY_MVEBU_A3700_COMPHY=y CONFIG_PHY_MVEBU_A3700_UTMI=y CONFIG_PHY_MVEBU_A38X_COMPHY=y CONFIG_PHY_MVEBU_CP110_COMPHY=y +CONFIG_PHY_NS2_PCIE=y +CONFIG_PHY_NS2_USB_DRD=y # CONFIG_PHY_RCAR_GEN2 is not set CONFIG_PHY_RCAR_GEN3_PCIE=y CONFIG_PHY_RCAR_GEN3_USB2=y @@ -483,6 +530,8 @@ CONFIG_PINCTRL_IMX93=y # CONFIG_PINCTRL_IMXRT1050 is not set # CONFIG_PINCTRL_IMXRT1170 is not set CONFIG_PINCTRL_IMX_SCU=y +CONFIG_PINCTRL_IPROC_GPIO=y +CONFIG_PINCTRL_NS2_MUX=y CONFIG_PINCTRL_ROCKCHIP=y # CONFIG_PINCTRL_SUN20I_D1 is not set CONFIG_PINCTRL_SUN4I_A10=y @@ -517,6 +566,8 @@ CONFIG_POWER_RESET=y CONFIG_POWER_RESET_HISI=y CONFIG_POWER_RESET_VEXPRESS=y CONFIG_POWER_SUPPLY=y +# CONFIG_PTP_1588_CLOCK_DTE is not set +# CONFIG_PWM_BCM2835 is not set CONFIG_QCOM_FALKOR_ERRATUM_1003=y CONFIG_QCOM_FALKOR_ERRATUM_1009=y CONFIG_QCOM_FALKOR_ERRATUM_E1041=y @@ -524,6 +575,8 @@ CONFIG_QCOM_QDF2400_ERRATUM_0065=y CONFIG_QORIQ_THERMAL=y CONFIG_QUEUED_RWLOCKS=y CONFIG_QUEUED_SPINLOCKS=y +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_RASPBERRYPI_POWER=y # CONFIG_RAVB is not set CONFIG_RCAR_DMAC=y # CONFIG_RCAR_GEN3_THERMAL is not set @@ -543,7 +596,9 @@ CONFIG_RENESAS_OSTM=y # CONFIG_RENESAS_RZN1WDT is not set CONFIG_RENESAS_USB_DMAC=y # CONFIG_RENESAS_WDT is not set +# CONFIG_RESET_BRCMSTB is not set CONFIG_RESET_IMX7=y +# CONFIG_RESET_RASPBERRYPI is not set CONFIG_RESET_RZG2L_USBPHY_CTRL=y CONFIG_ROCKCHIP_IODOMAIN=y CONFIG_ROCKCHIP_IOMMU=y @@ -552,6 +607,7 @@ CONFIG_ROCKCHIP_PM_DOMAINS=y # CONFIG_ROCKCHIP_SARADC is not set # CONFIG_ROCKCHIP_THERMAL is not set CONFIG_RODATA_FULL_DEFAULT_ENABLED=y +# CONFIG_RTC_DRV_BRCMSTB is not set # CONFIG_RTC_DRV_FSL_FTM_ALARM is not set # CONFIG_RTC_DRV_IMXDI is not set # CONFIG_RTC_DRV_IMX_SC is not set @@ -567,6 +623,8 @@ CONFIG_RZ_DMAC=y CONFIG_SCHED_MC=y CONFIG_SCHED_SMT=y # CONFIG_SENSORS_ARM_SCPI is not set +CONFIG_SERIAL_8250_BCM2835AUX=y +CONFIG_SERIAL_8250_BCM7271=y # CONFIG_SERIAL_8250_EXAR is not set CONFIG_SERIAL_8250_FSL=y CONFIG_SERIAL_8250_PCI=y @@ -599,6 +657,7 @@ CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPI_ARMADA_3700=y +# CONFIG_SPI_BCM2835 is not set CONFIG_SPI_FSL_LPSPI=y # CONFIG_SPI_FSL_QUADSPI is not set # CONFIG_SPI_HISI_KUNPENG is not set @@ -659,6 +718,7 @@ CONFIG_TYPEC_TCPM=y # CONFIG_TYPEC_WUSB3801 is not set # CONFIG_UACCE is not set CONFIG_UNMAP_KERNEL_AT_EL0=y +# CONFIG_USB_BRCMSTB is not set CONFIG_USB_CHIPIDEA=y CONFIG_USB_CHIPIDEA_GENERIC=y CONFIG_USB_CHIPIDEA_HOST=y From 27ca83c6270a4cc6922cdae82bb5c01e4e2d1d22 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Fri, 23 Jun 2023 05:46:41 +0000 Subject: [PATCH 18/31] armsr: armv8: add Broadcom GENET and MDIO modules These are used by common Broadcom SoC's like the BCM2711 (RPi4) and iProc network processor. Tested on the RPi4B using the Raspberry Pi UEFI+ACPI firmware[1]. Signed-off-by: Mathew McBride [1] - https://github.com/pftf/RPi4 --- target/linux/armsr/modules.mk | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index 2bd5748e90e..f570c613cf3 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -13,6 +13,28 @@ endef $(eval $(call KernelPackage,acpi-mdio)) +define KernelPackage/bcmgenet + SUBMENU=$(NETWORK_DEVICES_MENU) + DEPENDS:=@(TARGET_armsr_armv8) +kmod-mdio-bcm-unimac + TITLE:=Broadcom GENET internal MAC (Raspberry Pi 4) + KCONFIG:=CONFIG_BCMGENET + FILES=$(LINUX_DIR)/drivers/net/ethernet/broadcom/genet/genet.ko + AUTOLOAD=$(call AutoLoad,30,genet) +endef + +$(eval $(call KernelPackage,bcmgenet)) + +define KernelPackage/mdio-bcm-unimac + SUBMENU=$(NETWORK_DEVICES_MENU) + DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio + TITLE:=Broadcom UniMAC MDIO bus controller + KCONFIG:=CONFIG_MDIO_BCM_UNIMAC + FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-bcm-unimac.ko + AUTOLOAD=$(call AutoLoad,30,mdio-bcm-unimac) +endef + +$(eval $(call KernelPackage,mdio-bcm-unimac)) + define KernelPackage/fsl-pcs-lynx SUBMENU=$(NETWORK_DEVICES_MENU) DEPENDS:=@(TARGET_armsr_armv8) +kmod-libphy +kmod-of-mdio +kmod-phylink From 911ee97774d2542300916f0e2763aa54c2a4dff1 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 7 Aug 2023 05:06:43 +0000 Subject: [PATCH 19/31] armsr: armv8: add bcmgenet (Raspberry Pi 4 GENET) to profile kmod-bcmgenet is needed for Ethernet support on the Raspberry Pi 4. Signed-off-by: Mathew McBride --- target/linux/armsr/image/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/linux/armsr/image/Makefile b/target/linux/armsr/image/Makefile index a6f045d24f5..e5153870d22 100644 --- a/target/linux/armsr/image/Makefile +++ b/target/linux/armsr/image/Makefile @@ -111,7 +111,8 @@ define Device/generic kmod-mvneta kmod-mvpp2 kmod-fsl-dpaa1-net kmod-fsl-dpaa2-net \ kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \ kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \ - kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic + kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \ + kmod-bcmgenet endef TARGET_DEVICES += generic From 15d3536c9deb2927c9a39350c6fa2e59f859df2a Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Thu, 10 Aug 2023 02:05:43 +0000 Subject: [PATCH 20/31] armsr: armv8: synchronize PCIE related options with arm64 defconfig This turns on various PCI related options which are enabled in the Linux kernel arch/arm64/configs/defconfig but not yet in the OpenWrt config. Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index e0931f2f06a..b1774dd2204 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -1,4 +1,5 @@ CONFIG_64BIT=y +CONFIG_ACPI_APEI=y CONFIG_ACPI_HMAT=y CONFIG_ACPI_PCC=y CONFIG_AHCI_IMX=y @@ -323,6 +324,12 @@ CONFIG_HISILICON_ERRATUM_161600802=y CONFIG_HISILICON_LPC=y CONFIG_HISI_PMU=y CONFIG_HISI_THERMAL=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +# CONFIG_HOTPLUG_PCI_ACPI_IBM is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_PCIE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=y # CONFIG_HW_RANDOM_HISI is not set @@ -460,6 +467,14 @@ CONFIG_NVMEM_ROCKCHIP_EFUSE=y # CONFIG_NVMEM_SUNXI_SID is not set # CONFIG_NVMEM_ZYNQMP is not set CONFIG_PCC=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_ARMADA_8K=y CONFIG_PCIE_BRCMSTB=y CONFIG_PCIE_HISI_STB=y CONFIG_PCIE_IPROC_MSI=y @@ -474,8 +489,13 @@ CONFIG_PCIE_ROCKCHIP_HOST=y CONFIG_PCIE_XILINX_CPM=y CONFIG_PCIE_XILINX_NWL=y CONFIG_PCI_AARDVARK=y +CONFIG_PCI_HISI=y +CONFIG_PCI_HOST_THUNDER_ECAM=y +CONFIG_PCI_HOST_THUNDER_PEM=y CONFIG_PCI_IMX6=y +CONFIG_PCI_IOV=y CONFIG_PCI_LAYERSCAPE=y +CONFIG_PCI_PASID=y # CONFIG_PCI_RCAR_GEN2 is not set CONFIG_PHY_BCM_SR_PCIE=y CONFIG_PHY_BCM_SR_USB=y From 7c5bdff9c472a3f008ac15cc1ccb81cd23b20e1f Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 9 Aug 2023 06:36:39 +0000 Subject: [PATCH 21/31] armsr: add Marvell (Cavium) ThunderX2 network driver The initial armv8 module incorrectly labelled the Thunder(v1) as supporting the ThunderX2, when they have different drivers. Add kmod-octeon-tx2 to support the newer devices. Signed-off-by: Mathew McBride --- target/linux/armsr/image/Makefile | 2 +- target/linux/armsr/modules.mk | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/target/linux/armsr/image/Makefile b/target/linux/armsr/image/Makefile index e5153870d22..1df9657385d 100644 --- a/target/linux/armsr/image/Makefile +++ b/target/linux/armsr/image/Makefile @@ -112,7 +112,7 @@ define Device/generic kmod-fsl-enetc-net kmod-dwmac-imx kmod-fsl-fec kmod-thunderx-net \ kmod-dwmac-rockchip kmod-dwmac-sun8i kmod-phy-aquantia kmod-phy-broadcom \ kmod-phy-marvell kmod-phy-marvell-10g kmod-sfp kmod-atlantic \ - kmod-bcmgenet + kmod-bcmgenet kmod-octeontx2-net endef TARGET_DEVICES += generic diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index f570c613cf3..4cf3d357d03 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -269,7 +269,7 @@ $(eval $(call KernelPackage,dwmac-rockchip)) define KernelPackage/thunderx-net SUBMENU:=$(NETWORK_DEVICES_MENU) - TITLE:=Marvell (Cavium) ThunderX/2 network drivers + TITLE:=Marvell (Cavium) Thunder network drivers DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-of-mdio KCONFIG:=CONFIG_NET_VENDOR_CAVIUM \ CONFIG_THUNDER_NIC_PF \ @@ -285,6 +285,25 @@ endef $(eval $(call KernelPackage,thunderx-net)) +define KernelPackage/octeontx2-net + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Marvell (Cavium) ThunderX2 network drivers + DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-of-mdio +kmod-macsec \ + +kmod-ptp + KCONFIG:=CONFIG_OCTEONTX2_MBOX \ + CONFIG_OCTEONTX2_AF \ + CONFIG_OCTEONTX2_PF \ + CONFIG_OCTEONTX2_VF \ + CONFIG_NDC_DIS_DYNAMIC_CACHING=n + FILES=$(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/af/rvu_mbox.ko \ + $(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/af/rvu_af.ko \ + $(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/rvu_nicpf.ko \ + $(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/rvu_nicvf.ko \ + $(LINUX_DIR)/drivers/net/ethernet/marvell/octeontx2/nic/otx2_ptp.ko + AUTOLOAD=$(call AutoLoad,40,rvu_af rvu_mbox rvu_nicpf rvu_nicvf otx2_ptp) +endef +$(eval $(call KernelPackage,octeontx2-net)) + define KernelPackage/wdt-sp805 SUBMENU:=$(OTHER_MENU) TITLE:=ARM SP805 Watchdog From 0018b335313ec7d866bf9e22273b620759e29598 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Wed, 9 Aug 2023 07:20:07 +0000 Subject: [PATCH 22/31] armsr: armv8: package and select MDIO driver for Thunder SoC's This MDIO driver was already being built, but not installed due to being selected by the ThunderX Ethernet driver. Signed-off-by: Mathew McBride --- target/linux/armsr/modules.mk | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index 4cf3d357d03..446b1483d22 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -267,10 +267,22 @@ endef $(eval $(call KernelPackage,dwmac-rockchip)) +define KernelPackage/mdio-thunder + SUBMENU:=$(NETWORK_DEVICES_MENU) + TITLE:=Marvell (Cavium) Thunder MDIO controller + DEPENDS:=@(TARGET_armsr_armv8) +kmod-of-mdio + KCONFIG:=CONFIG_MDIO_THUNDER + FILES=$(LINUX_DIR)/drivers/net/mdio/mdio-cavium.ko \ + $(LINUX_DIR)/drivers/net/mdio/mdio-thunder.ko + AUTOLOAD=$(call AutoLoad,30,mdio-cavium mdio-thunder) +endef + +$(eval $(call KernelPackage,mdio-thunder)) + define KernelPackage/thunderx-net SUBMENU:=$(NETWORK_DEVICES_MENU) TITLE:=Marvell (Cavium) Thunder network drivers - DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-of-mdio + DEPENDS:=@(TARGET_armsr_armv8) +kmod-phylink +kmod-mdio-thunder KCONFIG:=CONFIG_NET_VENDOR_CAVIUM \ CONFIG_THUNDER_NIC_PF \ CONFIG_THUNDER_NIC_VF \ From 9cb173e9f18da2530c3570479567d8130b05e5f8 Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Thu, 10 Aug 2023 04:01:20 +0000 Subject: [PATCH 23/31] armsr: armv8: enable AHCI/SATA controllers for mvebu,qoriq,juno When comparing the generated OpenWrt .config to the Linux arm64 defconfig, I noticed these SATA controllers were not included. As they may be used as a boot drive, they should be built into the kernel. CONFIG_SATA_MVEBU is for Marvell platforms. CONFIG_SATA_QORIQ is for NXP Layerscape. CONFIG_SATA_SIL24 is for Arm's Juno development board, see Linux kernel commit d7c38ff1cd86 ("arm64: defconfig: Add Juno SATA controller"). Signed-off-by: Mathew McBride --- target/linux/armsr/armv8/config-6.1 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/linux/armsr/armv8/config-6.1 b/target/linux/armsr/armv8/config-6.1 index b1774dd2204..4eab79bba96 100644 --- a/target/linux/armsr/armv8/config-6.1 +++ b/target/linux/armsr/armv8/config-6.1 @@ -3,6 +3,8 @@ CONFIG_ACPI_APEI=y CONFIG_ACPI_HMAT=y CONFIG_ACPI_PCC=y CONFIG_AHCI_IMX=y +CONFIG_AHCI_MVEBU=y +CONFIG_AHCI_QORIQ=y CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y @@ -639,6 +641,7 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RZG2L_ADC is not set # CONFIG_RZG2L_THERMAL is not set CONFIG_RZ_DMAC=y +CONFIG_SATA_SIL24=y # CONFIG_SCHED_CORE is not set CONFIG_SCHED_MC=y CONFIG_SCHED_SMT=y From 7770d08e2bd28c9c0dc0b3dc0aaf74074ad5772a Mon Sep 17 00:00:00 2001 From: Mathew McBride Date: Mon, 14 Aug 2023 06:13:28 +0000 Subject: [PATCH 24/31] armsr: armv8: fix invalid symbol value for FSL_ENETC_QOS The kernel FSL_ENETC_QOS option is only a compile time option, it does not result in a separate module being built. Set it to 'y' to resolve a warning from the kernel compile: .config:2654:warning: symbol value 'm' invalid for FSL_ENETC_QOS Signed-off-by: Mathew McBride Fixes: c3151b6f045 ("armvirt: 64: add support for other SystemReady-compatible vendors") --- target/linux/armsr/modules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/linux/armsr/modules.mk b/target/linux/armsr/modules.mk index 446b1483d22..6e9ecda9990 100644 --- a/target/linux/armsr/modules.mk +++ b/target/linux/armsr/modules.mk @@ -100,7 +100,7 @@ define KernelPackage/fsl-enetc-net KCONFIG:= \ CONFIG_FSL_ENETC \ CONFIG_FSL_ENETC_VF \ - CONFIG_FSL_ENETC_QOS + CONFIG_FSL_ENETC_QOS=y FILES:= \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc.ko \ $(LINUX_DIR)/drivers/net/ethernet/freescale/enetc/fsl-enetc-vf.ko \ From 0af88d2512b94bb0e3d81058beaa220448e46119 Mon Sep 17 00:00:00 2001 From: Martin Schiller Date: Fri, 4 Aug 2023 12:59:03 +0200 Subject: [PATCH 25/31] linux/named-gpio-export: add support for OPEN_DRAIN and OPEN_SOURCE flag This change makes it possible to use the GPIO_OPEN_DRAIN / GPIO_OPEN_SOURCE Flags when exporting GPIOs via dts. We need to emulate the open-source or open-drain functionalities for the initial value, because the used functions (gpiod_direction_output_raw) do not take this into account. Signed-off-by: Martin Schiller --- .../800-GPIO-add-named-gpio-exports.patch | 38 ++++++++++++++++--- .../800-GPIO-add-named-gpio-exports.patch | 38 ++++++++++++++++--- 2 files changed, 66 insertions(+), 10 deletions(-) diff --git a/target/linux/generic/hack-5.15/800-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-5.15/800-GPIO-add-named-gpio-exports.patch index 0a2c82cacbc..f27b7ef9de5 100644 --- a/target/linux/generic/hack-5.15/800-GPIO-add-named-gpio-exports.patch +++ b/target/linux/generic/hack-5.15/800-GPIO-add-named-gpio-exports.patch @@ -15,7 +15,7 @@ Signed-off-by: John Crispin #include "gpiolib.h" #include "gpiolib-of.h" -@@ -1059,3 +1061,72 @@ void of_gpio_dev_init(struct gpio_chip * +@@ -1059,3 +1061,100 @@ void of_gpio_dev_init(struct gpio_chip * else gc->of_node = gdev->dev.of_node; } @@ -47,6 +47,7 @@ Signed-off-by: John Crispin + max_gpio = of_gpio_count(cnp); + + for (i = 0; i < max_gpio; i++) { ++ struct gpio_desc *desc; + unsigned flags = 0; + enum of_gpio_flags of_flags; + @@ -54,17 +55,44 @@ Signed-off-by: John Crispin + if (!gpio_is_valid(gpio)) + return gpio; + -+ if (of_flags == OF_GPIO_ACTIVE_LOW) ++ if (of_flags & OF_GPIO_ACTIVE_LOW) + flags |= GPIOF_ACTIVE_LOW; + -+ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) -+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; -+ else ++ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) { ++ if (of_flags & OF_GPIO_SINGLE_ENDED) { ++ /* ++ * As gpiod_direction_output_raw() is used, we ++ * need to emulate open drain or open source here. ++ */ ++ if (of_flags & OF_GPIO_OPEN_DRAIN) { ++ flags |= GPIOF_OPEN_DRAIN; ++ flags |= val ? GPIOF_IN : GPIOF_OUT_INIT_LOW; ++ } else { ++ flags |= GPIOF_OPEN_SOURCE; ++ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_IN; ++ } ++ } else { ++ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; ++ } ++ } else { + flags |= GPIOF_IN; ++ } + + if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np))) + continue; + ++ /* ++ * When emulating open-source or open-drain functionalities by not ++ * actively driving the line (setting mode to input) we still need to ++ * set the IS_OUT flag or otherwise we won't be able to set the line ++ * value anymore. ++ */ ++ if ((flags & GPIOF_IN) && ++ ((flags & GPIOF_OPEN_DRAIN) || (flags & GPIOF_OPEN_SOURCE))) { ++ desc = gpio_to_desc(gpio); ++ set_bit(FLAG_IS_OUT, &desc->flags); ++ } ++ + dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change"); + gpio_export_with_name(gpio, dmc, name); + nb++; diff --git a/target/linux/generic/hack-6.1/800-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-6.1/800-GPIO-add-named-gpio-exports.patch index 658d9c38069..ba5351275dd 100644 --- a/target/linux/generic/hack-6.1/800-GPIO-add-named-gpio-exports.patch +++ b/target/linux/generic/hack-6.1/800-GPIO-add-named-gpio-exports.patch @@ -15,7 +15,7 @@ Signed-off-by: John Crispin #include "gpiolib.h" #include "gpiolib-of.h" -@@ -1030,3 +1032,72 @@ void of_gpio_dev_init(struct gpio_chip * +@@ -1030,3 +1032,100 @@ void of_gpio_dev_init(struct gpio_chip * else gc->of_node = gdev->dev.of_node; } @@ -47,6 +47,7 @@ Signed-off-by: John Crispin + max_gpio = of_gpio_count(cnp); + + for (i = 0; i < max_gpio; i++) { ++ struct gpio_desc *desc; + unsigned flags = 0; + enum of_gpio_flags of_flags; + @@ -54,17 +55,44 @@ Signed-off-by: John Crispin + if (!gpio_is_valid(gpio)) + return gpio; + -+ if (of_flags == OF_GPIO_ACTIVE_LOW) ++ if (of_flags & OF_GPIO_ACTIVE_LOW) + flags |= GPIOF_ACTIVE_LOW; + -+ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) -+ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; -+ else ++ if (!of_property_read_u32(cnp, "gpio-export,output", &val)) { ++ if (of_flags & OF_GPIO_SINGLE_ENDED) { ++ /* ++ * As gpiod_direction_output_raw() is used, we ++ * need to emulate open drain or open source here. ++ */ ++ if (of_flags & OF_GPIO_OPEN_DRAIN) { ++ flags |= GPIOF_OPEN_DRAIN; ++ flags |= val ? GPIOF_IN : GPIOF_OUT_INIT_LOW; ++ } else { ++ flags |= GPIOF_OPEN_SOURCE; ++ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_IN; ++ } ++ } else { ++ flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW; ++ } ++ } else { + flags |= GPIOF_IN; ++ } + + if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np))) + continue; + ++ /* ++ * When emulating open-source or open-drain functionalities by not ++ * actively driving the line (setting mode to input) we still need to ++ * set the IS_OUT flag or otherwise we won't be able to set the line ++ * value anymore. ++ */ ++ if ((flags & GPIOF_IN) && ++ ((flags & GPIOF_OPEN_DRAIN) || (flags & GPIOF_OPEN_SOURCE))) { ++ desc = gpio_to_desc(gpio); ++ set_bit(FLAG_IS_OUT, &desc->flags); ++ } ++ + dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change"); + gpio_export_with_name(gpio, dmc, name); + nb++; From 9db033005210a3874dbe413d2c8cfd3c0514edc9 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Sat, 12 Aug 2023 11:27:37 +0200 Subject: [PATCH 26/31] uboot-envtools: update to 2023.07.02 Update to the latest stable version. This update changes the default lockfile directory from /var/lock to /run [1]. In OpenWRT we still use the "legacy" /var/lock and /run might not even exist, so we add a patch to revert this particular change. [1] https://source.denx.de/u-boot/u-boot/-/commit/aeb40f1166e072856f865d26d42a4bea1ec3a514 Signed-off-by: Stefan Kalscheuer --- package/boot/uboot-envtools/Makefile | 4 +- ...-tools-env-use-run-to-store-lockfile.patch | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 package/boot/uboot-envtools/patches/002-Revert-tools-env-use-run-to-store-lockfile.patch diff --git a/package/boot/uboot-envtools/Makefile b/package/boot/uboot-envtools/Makefile index 2e4c1ac39e3..991497d20e1 100644 --- a/package/boot/uboot-envtools/Makefile +++ b/package/boot/uboot-envtools/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uboot-envtools PKG_DISTNAME:=u-boot -PKG_VERSION:=2023.04 +PKG_VERSION:=2023.07.02 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_DISTNAME)-$(PKG_VERSION).tar.bz2 @@ -17,7 +17,7 @@ PKG_SOURCE_URL:= \ https://ftp.denx.de/pub/u-boot \ https://mirror.cyberbits.eu/u-boot \ ftp://ftp.denx.de/pub/u-boot -PKG_HASH:=e31cac91545ff41b71cec5d8c22afd695645cd6e2a442ccdacacd60534069341 +PKG_HASH:=6b6a48581c14abb0f95bd87c1af4d740922406d7b801002a9f94727fdde021d5 PKG_SOURCE_SUBDIR:=$(PKG_DISTNAME)-$(PKG_VERSION) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_DISTNAME)-$(PKG_VERSION) diff --git a/package/boot/uboot-envtools/patches/002-Revert-tools-env-use-run-to-store-lockfile.patch b/package/boot/uboot-envtools/patches/002-Revert-tools-env-use-run-to-store-lockfile.patch new file mode 100644 index 00000000000..ace7cdc6810 --- /dev/null +++ b/package/boot/uboot-envtools/patches/002-Revert-tools-env-use-run-to-store-lockfile.patch @@ -0,0 +1,44 @@ +Revert "tools: env: use /run to store lockfile" + +In OpenWRT we still use /var/lock as default location for lock files and +/run might not even exist. Revert the upstream change and restore the +previous default path. + +This reverts upstream commit + https://source.denx.de/u-boot/u-boot/-/commit/aeb40f1166e072856f865d26d42a4bea1ec3a514 +--- + tools/env/fw_env_main.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tools/env/fw_env_main.c b/tools/env/fw_env_main.c +index 0b201b9e62..1d193bd437 100644 +--- a/tools/env/fw_env_main.c ++++ b/tools/env/fw_env_main.c +@@ -73,7 +73,7 @@ void usage_printenv(void) + " -c, --config configuration file, default:" CONFIG_FILE "\n" + #endif + " -n, --noheader do not repeat variable name in output\n" +- " -l, --lock lock node, default:/run\n" ++ " -l, --lock lock node, default:/var/lock\n" + "\n"); + } + +@@ -88,7 +88,7 @@ void usage_env_set(void) + #ifdef CONFIG_FILE + " -c, --config configuration file, default:" CONFIG_FILE "\n" + #endif +- " -l, --lock lock node, default:/run\n" ++ " -l, --lock lock node, default:/var/lock\n" + " -s, --script batch mode to minimize writes\n" + "\n" + "Examples:\n" +@@ -206,7 +206,7 @@ int parse_setenv_args(int argc, char *argv[]) + + int main(int argc, char *argv[]) + { +- char *lockname = "/run/" CMD_PRINTENV ".lock"; ++ char *lockname = "/var/lock/" CMD_PRINTENV ".lock"; + int lockfd = -1; + int retval = EXIT_SUCCESS; + char *_cmdname; + From e0ea79f3f56d15d97568f3d546030b4c311742a9 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 13 Aug 2023 22:34:15 +0200 Subject: [PATCH 27/31] kernel: netsupport: kmod-sched: Add act_skbmod This adds act_skbmod.ko to kmod-sched. Fixes: #13224 Signed-off-by: Hauke Mehrtens --- package/kernel/linux/modules/netsupport.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/kernel/linux/modules/netsupport.mk b/package/kernel/linux/modules/netsupport.mk index 0187a058258..5b978bae7bd 100644 --- a/package/kernel/linux/modules/netsupport.mk +++ b/package/kernel/linux/modules/netsupport.mk @@ -993,7 +993,7 @@ endef $(eval $(call KernelPackage,bpf-test)) -SCHED_MODULES_EXTRA = sch_codel sch_dsmark sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_csum em_cmp em_nbyte em_meta em_text +SCHED_MODULES_EXTRA = sch_codel sch_dsmark sch_gred sch_multiq sch_sfq sch_teql sch_fq act_pedit act_simple act_skbmod act_csum em_cmp em_nbyte em_meta em_text SCHED_FILES_EXTRA = $(foreach mod,$(SCHED_MODULES_EXTRA),$(LINUX_DIR)/net/sched/$(mod).ko) define KernelPackage/sched @@ -1010,6 +1010,7 @@ define KernelPackage/sched CONFIG_NET_SCH_FQ \ CONFIG_NET_ACT_PEDIT \ CONFIG_NET_ACT_SIMP \ + CONFIG_NET_ACT_SKBMOD \ CONFIG_NET_ACT_CSUM \ CONFIG_NET_EMATCH_CMP \ CONFIG_NET_EMATCH_NBYTE \ From a4aac5909e69abcc786484425e1afb1409f62940 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sun, 13 Aug 2023 18:20:08 +0200 Subject: [PATCH 28/31] ipq40xx: update SCM SDI patches with pending upstream SCM SDI disable support is pending upstream, so lets use that instead. Since the board check needs to be split out, export it with a header so it applies with git-am. Signed-off-by: Robert Marko --- ...are-qcom-scm-Add-SDI-disable-support.patch | 60 +++++++++++++++++++ .../420-firmware-qcom-scm-disable-SDI.patch | 47 --------------- ...-qcom-scm-disable-SDI-on-Google-WiFi.patch | 34 +++++++++++ ...qcom_scm-Clear-download-bit-during-r.patch | 6 +- 4 files changed, 97 insertions(+), 50 deletions(-) create mode 100644 target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-Add-SDI-disable-support.patch delete mode 100644 target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-disable-SDI.patch create mode 100644 target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-disable-SDI-on-Google-WiFi.patch diff --git a/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-Add-SDI-disable-support.patch b/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-Add-SDI-disable-support.patch new file mode 100644 index 00000000000..e4ee745ff1c --- /dev/null +++ b/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-Add-SDI-disable-support.patch @@ -0,0 +1,60 @@ +From b514bc3c0a5a57bc83843dc66c72788b9c9435ac Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Thu, 18 May 2023 16:02:23 +0200 +Subject: [PATCH 1/3] firmware: qcom: scm: Add SDI disable support + +Some SoC-s like IPQ5018 require SDI(Secure Debug Image) to be disabled +before trying to reboot, otherwise board will just hang after reboot has +been issued via PSCI. + +So, provide a call to SCM that allows disabling it. + +Signed-off-by: Robert Marko +Acked-by: Mukesh Ojha +--- + drivers/firmware/qcom_scm.c | 23 +++++++++++++++++++++++ + drivers/firmware/qcom_scm.h | 1 + + 2 files changed, 24 insertions(+) + +--- a/drivers/firmware/qcom_scm.c ++++ b/drivers/firmware/qcom_scm.c +@@ -389,6 +389,29 @@ int qcom_scm_set_remote_state(u32 state, + } + EXPORT_SYMBOL(qcom_scm_set_remote_state); + ++static int qcom_scm_disable_sdi(void) ++{ ++ int ret; ++ struct qcom_scm_desc desc = { ++ .svc = QCOM_SCM_SVC_BOOT, ++ .cmd = QCOM_SCM_BOOT_SDI_CONFIG, ++ .args[0] = 1, /* Disable watchdog debug */ ++ .args[1] = 0, /* Disable SDI */ ++ .arginfo = QCOM_SCM_ARGS(2), ++ .owner = ARM_SMCCC_OWNER_SIP, ++ }; ++ struct qcom_scm_res res; ++ ++ ret = qcom_scm_clk_enable(); ++ if (ret) ++ return ret; ++ ret = qcom_scm_call(__scm->dev, &desc, &res); ++ ++ qcom_scm_clk_disable(); ++ ++ return ret ? : res.result[0]; ++} ++ + static int __qcom_scm_set_dload_mode(struct device *dev, bool enable) + { + struct qcom_scm_desc desc = { +--- a/drivers/firmware/qcom_scm.h ++++ b/drivers/firmware/qcom_scm.h +@@ -77,6 +77,7 @@ extern int scm_legacy_call(struct device + #define QCOM_SCM_SVC_BOOT 0x01 + #define QCOM_SCM_BOOT_SET_ADDR 0x01 + #define QCOM_SCM_BOOT_TERMINATE_PC 0x02 ++#define QCOM_SCM_BOOT_SDI_CONFIG 0x09 + #define QCOM_SCM_BOOT_SET_DLOAD_MODE 0x10 + #define QCOM_SCM_BOOT_SET_REMOTE_STATE 0x0a + #define QCOM_SCM_FLUSH_FLAG_MASK 0x3 diff --git a/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-disable-SDI.patch b/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-disable-SDI.patch deleted file mode 100644 index a0074103cc7..00000000000 --- a/target/linux/ipq40xx/patches-5.15/420-firmware-qcom-scm-disable-SDI.patch +++ /dev/null @@ -1,47 +0,0 @@ ---- a/drivers/firmware/qcom_scm.c -+++ b/drivers/firmware/qcom_scm.c -@@ -404,6 +404,20 @@ static int __qcom_scm_set_dload_mode(str - return qcom_scm_call_atomic(__scm->dev, &desc, NULL); - } - -+static int __qcom_scm_disable_sdi(struct device *dev) -+{ -+ struct qcom_scm_desc desc = { -+ .svc = QCOM_SCM_SVC_BOOT, -+ .cmd = QCOM_SCM_BOOT_CONFIG_SDI, -+ .arginfo = QCOM_SCM_ARGS(2), -+ .args[0] = 1 /* 1: disable watchdog debug */, -+ .args[1] = 0 /* 0: disable SDI */, -+ .owner = ARM_SMCCC_OWNER_SIP, -+ }; -+ -+ return qcom_scm_call(__scm->dev, &desc, NULL); -+} -+ - static void qcom_scm_set_download_mode(bool enable) - { - bool avail; -@@ -1314,6 +1328,13 @@ static int qcom_scm_probe(struct platfor - if (download_mode) - qcom_scm_set_download_mode(true); - -+ /* -+ * Factory firmware leaves SDI (a debug interface), which prevents -+ * clean reboot. -+ */ -+ if (of_machine_is_compatible("google,wifi")) -+ __qcom_scm_disable_sdi(__scm->dev); -+ - return 0; - } - ---- a/drivers/firmware/qcom_scm.h -+++ b/drivers/firmware/qcom_scm.h -@@ -77,6 +77,7 @@ extern int scm_legacy_call(struct device - #define QCOM_SCM_SVC_BOOT 0x01 - #define QCOM_SCM_BOOT_SET_ADDR 0x01 - #define QCOM_SCM_BOOT_TERMINATE_PC 0x02 -+#define QCOM_SCM_BOOT_CONFIG_SDI 0x09 - #define QCOM_SCM_BOOT_SET_DLOAD_MODE 0x10 - #define QCOM_SCM_BOOT_SET_REMOTE_STATE 0x0a - #define QCOM_SCM_FLUSH_FLAG_MASK 0x3 diff --git a/target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-disable-SDI-on-Google-WiFi.patch b/target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-disable-SDI-on-Google-WiFi.patch new file mode 100644 index 00000000000..98f02934a96 --- /dev/null +++ b/target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-disable-SDI-on-Google-WiFi.patch @@ -0,0 +1,34 @@ +From a658ad57c2b9d46eb5395c7bb8cf83b8e0f289e7 Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Fri, 28 Jul 2023 12:02:19 +0200 +Subject: [PATCH 2/3] firmware: qcom: scm: disable SDI on Google WiFi + +Google WiFi seems to have SDI (Secure Debug Image) enabled by default which +prevents normal reboot from working causing the board to just hang after +reboot is called. + +So lets disable SDI during SCM probe on Google WiFi boards in order to +avoid a state where WDT will kick in and then the board will just hang +in the debug mode. + +Signed-off-by: Brian Norris +--- + drivers/firmware/qcom_scm.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/firmware/qcom_scm.c ++++ b/drivers/firmware/qcom_scm.c +@@ -1337,6 +1337,13 @@ static int qcom_scm_probe(struct platfor + if (download_mode) + qcom_scm_set_download_mode(true); + ++ /* ++ * Factory firmware leaves SDI (a debug interface), which prevents ++ * clean reboot. ++ */ ++ if (of_machine_is_compatible("google,wifi")) ++ qcom_scm_disable_sdi(); ++ + return 0; + } + diff --git a/target/linux/ipq40xx/patches-5.15/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch b/target/linux/ipq40xx/patches-5.15/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch index e24895deeca..b5b89b26f1d 100644 --- a/target/linux/ipq40xx/patches-5.15/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch +++ b/target/linux/ipq40xx/patches-5.15/910-Revert-firmware-qcom_scm-Clear-download-bit-during-r.patch @@ -1,6 +1,6 @@ -From c87df89a82c17411cd6b98e5afaa1203ee9508dc Mon Sep 17 00:00:00 2001 +From c668fd2c4d9ad4a510fd214a2da83bd9b67a2508 Mon Sep 17 00:00:00 2001 From: Robert Marko -Date: Thu, 18 May 2023 12:16:02 +0200 +Date: Sun, 13 Aug 2023 18:13:08 +0200 Subject: [PATCH] Revert "firmware: qcom_scm: Clear download bit during reboot" This reverts commit a3ea89b5978dbcd0fa55f675c5a1e04611093709. @@ -15,7 +15,7 @@ Signed-off-by: Robert Marko --- a/drivers/firmware/qcom_scm.c +++ b/drivers/firmware/qcom_scm.c -@@ -1352,7 +1352,8 @@ static int qcom_scm_probe(struct platfor +@@ -1361,7 +1361,8 @@ static int qcom_scm_probe(struct platfor static void qcom_scm_shutdown(struct platform_device *pdev) { /* Clean shutdown, disable download mode to allow normal restart */ From 7661e164c049bc59ab54e01f00d1e59f2877b765 Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Sun, 13 Aug 2023 18:23:33 +0200 Subject: [PATCH 29/31] ipq40xx: add header to SCM cold boot address patch Lets add a proper commit title and description to the SCM cold boot patch so it applies with a git apply or git-am. Signed-off-by: Robert Marko --- ...re-qcom-scm-fix-SCM-cold-boot-address.patch} | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) rename target/linux/ipq40xx/patches-5.15/{421-firmware-qcom-scm-cold-boot-address.patch => 422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch} (84%) diff --git a/target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-cold-boot-address.patch b/target/linux/ipq40xx/patches-5.15/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch similarity index 84% rename from target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-cold-boot-address.patch rename to target/linux/ipq40xx/patches-5.15/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch index 13ebb5b000a..a31ea69e897 100644 --- a/target/linux/ipq40xx/patches-5.15/421-firmware-qcom-scm-cold-boot-address.patch +++ b/target/linux/ipq40xx/patches-5.15/422-firmware-qcom-scm-fix-SCM-cold-boot-address.patch @@ -1,3 +1,20 @@ +From aaa675f07e781e248fcf169ce9a917b48bc2cc9b Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Fri, 28 Jul 2023 12:06:23 +0200 +Subject: [PATCH 3/3] firmware: qcom: scm: fix SCM cold boot address + +This effectively reverts upstream Linux commit 13e77747800e ("firmware: +qcom: scm: Use atomic SCM for cold boot"), because Google WiFi boot +firmwares don't support the atomic variant. + +This fixes SMP support for Google WiFi. + +Signed-off-by: Brian Norris +--- + drivers/firmware/qcom_scm-legacy.c | 62 +++++++++++++++++++++++++----- + drivers/firmware/qcom_scm.c | 11 ++++++ + 2 files changed, 63 insertions(+), 10 deletions(-) + --- a/drivers/firmware/qcom_scm-legacy.c +++ b/drivers/firmware/qcom_scm-legacy.c @@ -13,6 +13,9 @@ From 0e6982b253b9c2ae0975aabe6318ad2d03f7d76c Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Fri, 11 Aug 2023 23:51:40 +0200 Subject: [PATCH 30/31] ipq40xx: Use SoC DTSI for Teltonika RUTX Teltonika RUTX currently is the only device pulling in DK01 DTSI and thus preventing removal of DK01 and DK04 support. So, lets add the missing nodes from DK01 DTSI and use the SoC DTSI instead. Signed-off-by: Robert Marko --- .../arch/arm/boot/dts/qcom-ipq4018-rutx.dtsi | 158 +++++++++++++++--- 1 file changed, 136 insertions(+), 22 deletions(-) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rutx.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rutx.dtsi index df9425b12a8..737e7365a6b 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rutx.dtsi +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-rutx.dtsi @@ -1,9 +1,10 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT -#include "qcom-ipq4019-ap.dk01.1.dtsi" +#include "qcom-ipq4019.dtsi" #include #include +#include / { memory { @@ -11,28 +12,39 @@ reg = <0x80000000 0x10000000>; }; - soc { - pinctrl@1000000 { - mdio_pins: mdio_pinmux { - mux_1 { - pins = "gpio53"; - function = "mdio"; - bias-pull-up; - }; - mux_2 { - pins = "gpio52"; - function = "mdc"; - bias-pull-up; - }; - }; + aliases { + serial0 = &blsp1_uart1; + }; - i2c_0_pins: i2c_0_pinmux { - mux { - pins = "gpio58", "gpio59"; - function = "blsp_i2c0"; - bias-disable; - }; - }; + chosen { + stdout-path = "serial0:115200n8"; + }; + + soc { + tcsr@1949000 { + compatible = "qcom,tcsr"; + reg = <0x1949000 0x100>; + qcom,wifi_glb_cfg = ; + }; + + tcsr@194b000 { + status = "okay"; + + compatible = "qcom,tcsr"; + reg = <0x194b000 0x100>; + qcom,usb-hsphy-mode-select = ; + }; + + ess_tcsr@1953000 { + compatible = "qcom,tcsr"; + reg = <0x1953000 0x1000>; + qcom,ess-interface-select = ; + }; + + tcsr@1957000 { + compatible = "qcom,tcsr"; + reg = <0x1957000 0x100>; + qcom,wifi_noc_memtype_m0_m2 = ; }; keys { @@ -47,9 +59,91 @@ }; }; +&prng { + status = "okay"; +}; + +&watchdog { + status = "okay"; +}; + +&cryptobam { + status = "okay"; +}; + +&crypto { + status = "okay"; +}; + +&tlmm { + serial_pins: serial_pinmux { + mux { + pins = "gpio60", "gpio61"; + function = "blsp_uart0"; + bias-disable; + }; + }; + + spi_0_pins: spi_0_pinmux { + pinmux { + function = "blsp_spi0"; + pins = "gpio55", "gpio56", "gpio57"; + }; + pinmux_cs { + function = "gpio"; + pins = "gpio54"; + }; + pinconf { + pins = "gpio55", "gpio56", "gpio57"; + drive-strength = <12>; + bias-disable; + }; + pinconf_cs { + pins = "gpio54"; + drive-strength = <2>; + bias-disable; + output-high; + }; + }; + + mdio_pins: mdio_pinmux { + mux_1 { + pins = "gpio53"; + function = "mdio"; + bias-pull-up; + }; + mux_2 { + pins = "gpio52"; + function = "mdc"; + bias-pull-up; + }; + }; + + i2c_0_pins: i2c_0_pinmux { + mux { + pins = "gpio58", "gpio59"; + function = "blsp_i2c0"; + bias-disable; + }; + }; +}; + +&blsp_dma { + status = "okay"; +}; + +&blsp1_uart1 { + pinctrl-0 = <&serial_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + &blsp1_spi1 { + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; cs-gpios = <&tlmm 54 0>, <&tlmm 63 0>; num-cs = <2>; + status = "okay"; xt25f128b@0 { /* @@ -208,3 +302,23 @@ pinctrl-names = "default"; phy-reset-gpio = <&tlmm 62 0>; }; + +&usb3_ss_phy { + status = "okay"; +}; + +&usb3_hs_phy { + status = "okay"; +}; + +&usb3 { + status = "okay"; +}; + +&usb2_hs_phy { + status = "okay"; +}; + +&usb2 { + status = "okay"; +}; From 46ed38adeb76b376e34056c755e0c8ffa5acf29f Mon Sep 17 00:00:00 2001 From: Robert Marko Date: Fri, 11 Aug 2023 23:54:36 +0200 Subject: [PATCH 31/31] ipq40xx: remove DK01 and DK04 boards DK01 and DK04 board support has been in a form of 2 patches that we have been carrying for a long time. Both of the patches contain weird changes, dont follow any DT syntax and I honestly doubt they are even valid. DK01 and DK04 also have not been converted to DSA even after a long time and I doubt that anybody in the community even has these boards as they are QCA reference boards that are not even obtainable anymore. Since patches for these 2 boards have been just causing us pain when trying to update the kernel to a new major release or even point releases lets remove the support for these boards, and if there are users they can easily be reinstated. Signed-off-by: Robert Marko --- .../etc/hotplug.d/firmware/11-ath10k-caldata | 6 - target/linux/ipq40xx/image/generic.mk | 33 ---- .../900-dts-ipq4019-ap-dk01.1.patch | 164 ------------------ .../902-dts-ipq4019-ap-dk04.1.patch | 164 ------------------ 4 files changed, 367 deletions(-) delete mode 100644 target/linux/ipq40xx/patches-5.15/900-dts-ipq4019-ap-dk01.1.patch delete mode 100644 target/linux/ipq40xx/patches-5.15/902-dts-ipq4019-ap-dk04.1.patch diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index c8cf297e810..e77267bf42d 100644 --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -51,9 +51,6 @@ case "$FIRMWARE" in ;; "ath10k/pre-cal-ahb-a000000.wifi.bin") case "$board" in - qcom,ap-dk01.1-c1) - caldata_extract "ART" 0x1000 0x2f20 - ;; asus,map-ac2200|\ asus,rt-ac42u|\ asus,rt-ac58u) @@ -148,9 +145,6 @@ case "$FIRMWARE" in ;; "ath10k/pre-cal-ahb-a800000.wifi.bin") case "$board" in - qcom,ap-dk01.1-c1) - caldata_extract "ART" 0x5000 0x2f20 - ;; asus,map-ac2200|\ asus,rt-ac58u) caldata_extract_ubi "Factory" 0x5000 0x2f20 diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index 907558302c7..dc5fbd64447 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -987,39 +987,6 @@ define Device/plasmacloud_pa2200 endef TARGET_DEVICES += plasmacloud_pa2200 -define Device/qcom_ap-dk01.1-c1 - DEVICE_VENDOR := Qualcomm Atheros - DEVICE_MODEL := AP-DK01.1 - DEVICE_VARIANT := C1 - BOARD_NAME := ap-dk01.1-c1 - SOC := qcom-ipq4019 - DEVICE_DTS := qcom-ipq4019-ap.dk01.1-c1 - KERNEL_INSTALL := 1 - KERNEL_SIZE := 4096k - IMAGE_SIZE := 26624k - $(call Device/FitImage) - IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-rootfs | pad-rootfs | append-metadata - DEFAULT := n -endef -TARGET_DEVICES += qcom_ap-dk01.1-c1 - -define Device/qcom_ap-dk04.1-c1 - $(call Device/FitImage) - $(call Device/UbiFit) - DEVICE_VENDOR := Qualcomm Atheros - DEVICE_MODEL := AP-DK04.1 - DEVICE_VARIANT := C1 - SOC := qcom-ipq4019 - DEVICE_DTS := qcom-ipq4019-ap.dk04.1-c1 - KERNEL_INSTALL := 1 - KERNEL_SIZE := 4048k - BLOCKSIZE := 128k - PAGESIZE := 2048 - BOARD_NAME := ap-dk04.1-c1 - DEFAULT := n -endef -TARGET_DEVICES += qcom_ap-dk04.1-c1 - define Device/qxwlan_e2600ac-c1 $(call Device/FitImage) DEVICE_VENDOR := Qxwlan diff --git a/target/linux/ipq40xx/patches-5.15/900-dts-ipq4019-ap-dk01.1.patch b/target/linux/ipq40xx/patches-5.15/900-dts-ipq4019-ap-dk01.1.patch deleted file mode 100644 index 145d3f49edb..00000000000 --- a/target/linux/ipq40xx/patches-5.15/900-dts-ipq4019-ap-dk01.1.patch +++ /dev/null @@ -1,164 +0,0 @@ ---- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi -+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi -@@ -15,6 +15,7 @@ - */ - - #include "qcom-ipq4019.dtsi" -+#include - - / { - model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK01.1"; -@@ -29,6 +30,32 @@ - }; - - soc { -+ tcsr@194b000 { -+ /* select hostmode */ -+ compatible = "qcom,tcsr"; -+ reg = <0x194b000 0x100>; -+ qcom,usb-hsphy-mode-select = ; -+ status = "okay"; -+ }; -+ -+ ess_tcsr@1953000 { -+ compatible = "qcom,tcsr"; -+ reg = <0x1953000 0x1000>; -+ qcom,ess-interface-select = ; -+ }; -+ -+ tcsr@1949000 { -+ compatible = "qcom,tcsr"; -+ reg = <0x1949000 0x100>; -+ qcom,wifi_glb_cfg = ; -+ }; -+ -+ tcsr@1957000 { -+ compatible = "qcom,tcsr"; -+ reg = <0x1957000 0x100>; -+ qcom,wifi_noc_memtype_m0_m2 = ; -+ }; -+ - rng@22000 { - status = "okay"; - }; -@@ -74,14 +101,6 @@ - pinctrl-names = "default"; - status = "okay"; - cs-gpios = <&tlmm 54 0>; -- -- mx25l25635e@0 { -- #address-cells = <1>; -- #size-cells = <1>; -- reg = <0>; -- compatible = "mx25l25635e"; -- spi-max-frequency = <24000000>; -- }; - }; - - serial@78af000 { -@@ -109,5 +128,29 @@ - wifi@a800000 { - status = "okay"; - }; -+ -+ mdio@90000 { -+ status = "okay"; -+ }; -+ -+ usb3_ss_phy: ssphy@9a000 { -+ status = "okay"; -+ }; -+ -+ usb3_hs_phy: hsphy@a6000 { -+ status = "okay"; -+ }; -+ -+ usb3: usb3@8af8800 { -+ status = "okay"; -+ }; -+ -+ usb2_hs_phy: hsphy@a8000 { -+ status = "okay"; -+ }; -+ -+ usb2: usb2@60f8800 { -+ status = "okay"; -+ }; - }; - }; ---- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts -+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1-c1.dts -@@ -18,5 +18,73 @@ - - / { - model = "Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C1"; -+ compatible = "qcom,ap-dk01.1-c1", "qcom,ap-dk01.2-c1"; - -+ memory { -+ device_type = "memory"; -+ reg = <0x80000000 0x10000000>; -+ }; -+}; -+ -+&blsp1_spi1 { -+ mx25l25635f@0 { -+ compatible = "mx25l25635f", "jedec,spi-nor"; -+ #address-cells = <1>; -+ #size-cells = <1>; -+ reg = <0>; -+ spi-max-frequency = <24000000>; -+ -+ SBL1@0 { -+ label = "SBL1"; -+ reg = <0x0 0x40000>; -+ read-only; -+ }; -+ MIBIB@40000 { -+ label = "MIBIB"; -+ reg = <0x40000 0x20000>; -+ read-only; -+ }; -+ QSEE@60000 { -+ label = "QSEE"; -+ reg = <0x60000 0x60000>; -+ read-only; -+ }; -+ CDT@c0000 { -+ label = "CDT"; -+ reg = <0xc0000 0x10000>; -+ read-only; -+ }; -+ DDRPARAMS@d0000 { -+ label = "DDRPARAMS"; -+ reg = <0xd0000 0x10000>; -+ read-only; -+ }; -+ APPSBLENV@e0000 { -+ label = "APPSBLENV"; -+ reg = <0xe0000 0x10000>; -+ read-only; -+ }; -+ APPSBL@f0000 { -+ label = "APPSBL"; -+ reg = <0xf0000 0x80000>; -+ read-only; -+ }; -+ ART@170000 { -+ label = "ART"; -+ reg = <0x170000 0x10000>; -+ read-only; -+ }; -+ kernel@180000 { -+ label = "kernel"; -+ reg = <0x180000 0x400000>; -+ }; -+ rootfs@580000 { -+ label = "rootfs"; -+ reg = <0x580000 0x1600000>; -+ }; -+ firmware@180000 { -+ label = "firmware"; -+ reg = <0x180000 0x1a00000>; -+ }; -+ }; - }; diff --git a/target/linux/ipq40xx/patches-5.15/902-dts-ipq4019-ap-dk04.1.patch b/target/linux/ipq40xx/patches-5.15/902-dts-ipq4019-ap-dk04.1.patch deleted file mode 100644 index c7688de7e89..00000000000 --- a/target/linux/ipq40xx/patches-5.15/902-dts-ipq4019-ap-dk04.1.patch +++ /dev/null @@ -1,164 +0,0 @@ ---- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi -+++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk04.1.dtsi -@@ -17,53 +17,79 @@ - stdout-path = "serial0:115200n8"; - }; - -- memory { -- device_type = "memory"; -- reg = <0x80000000 0x10000000>; /* 256MB */ -- }; -- - soc { -+ rng@22000 { -+ status = "okay"; -+ }; -+ - pinctrl@1000000 { - serial_0_pins: serial0-pinmux { -- pins = "gpio16", "gpio17"; -- function = "blsp_uart0"; -- bias-disable; -+ mux { -+ pins = "gpio16", "gpio17"; -+ function = "blsp_uart0"; -+ bias-disable; -+ }; - }; - - serial_1_pins: serial1-pinmux { -- pins = "gpio8", "gpio9", -- "gpio10", "gpio11"; -- function = "blsp_uart1"; -- bias-disable; -+ mux { -+ pins = "gpio8", "gpio9"; -+ function = "blsp_uart1"; -+ bias-disable; -+ }; - }; - - spi_0_pins: spi-0-pinmux { - pinmux { - function = "blsp_spi0"; - pins = "gpio13", "gpio14", "gpio15"; -- bias-disable; - }; - pinmux_cs { - function = "gpio"; - pins = "gpio12"; -+ }; -+ pinconf { -+ pins = "gpio13", "gpio14", "gpio15"; -+ drive-strength = <12>; -+ bias-disable; -+ }; -+ pinconf_cs { -+ pins = "gpio12"; -+ drive-strength = <2>; - bias-disable; - output-high; - }; - }; - - i2c_0_pins: i2c-0-pinmux { -- pins = "gpio20", "gpio21"; -- function = "blsp_i2c0"; -- bias-disable; -+ pinmux { -+ function = "blsp_i2c0"; -+ pins = "gpio10", "gpio11"; -+ }; -+ pinconf { -+ pins = "gpio10", "gpio11"; -+ drive-strength = <16>; -+ bias-disable; -+ }; - }; - - nand_pins: nand-pins { -- pins = "gpio53", "gpio55", "gpio56", -- "gpio57", "gpio58", "gpio59", -- "gpio60", "gpio62", "gpio63", -- "gpio64", "gpio65", "gpio66", -- "gpio67", "gpio68", "gpio69"; -- function = "qpic"; -+ pullups { -+ pins = "gpio52", "gpio53", "gpio58", -+ "gpio59"; -+ function = "qpic"; -+ bias-pull-up; -+ }; -+ -+ pulldowns { -+ pins = "gpio54", "gpio55", "gpio56", -+ "gpio57", "gpio60", "gpio61", -+ "gpio62", "gpio63", "gpio64", -+ "gpio65", "gpio66", "gpio67", -+ "gpio68", "gpio69"; -+ function = "qpic"; -+ bias-pull-down; -+ }; - }; - }; - -@@ -89,11 +115,11 @@ - status = "okay"; - cs-gpios = <&tlmm 12 0>; - -- m25p80@0 { -+ mx25l25635e@0 { - #address-cells = <1>; - #size-cells = <1>; - reg = <0>; -- compatible = "n25q128a11"; -+ compatible = "mx25l25635e"; - spi-max-frequency = <24000000>; - }; - }; -@@ -102,6 +128,45 @@ - status = "okay"; - perst-gpio = <&tlmm 38 0x1>; - }; -+ -+ i2c0: i2c@78b7000 { /* BLSP1 QUP2 */ -+ pinctrl-0 = <&i2c_0_pins>; -+ pinctrl-names = "default"; -+ -+ status = "okay"; -+ }; -+ -+ usb3_ss_phy: ssphy@9a000 { -+ status = "okay"; -+ }; -+ -+ usb3_hs_phy: hsphy@a6000 { -+ status = "okay"; -+ }; -+ -+ usb3: usb3@8af8800 { -+ status = "okay"; -+ }; -+ -+ usb2_hs_phy: hsphy@a8000 { -+ status = "okay"; -+ }; -+ -+ usb2: usb2@60f8800 { -+ status = "okay"; -+ }; -+ -+ cryptobam: dma@8e04000 { -+ status = "okay"; -+ }; -+ -+ crypto@8e3a000 { -+ status = "okay"; -+ }; -+ -+ watchdog@b017000 { -+ status = "okay"; -+ }; - }; - }; -